首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

刚学C,函数返回数组和调用有点乱,帮小弟我看看

2012-03-02 
刚学C,函数返回数组和调用有点乱,帮我看看谢谢各位大侠代码如下#include stdio.h#include malloc.hvoi

刚学C,函数返回数组和调用有点乱,帮我看看
谢谢各位大侠
代码如下
#include <stdio.h>
#include <malloc.h>
void   hello();
char   rk(int   paa,int   pkk);
////////////main/////////////
void   main()
{
    int   a,k,pa,pk;
    char   b,**km1;
    while   (b!= 'y ')
    {
printf( "请输入本科学生人数\n ");
scanf( "%d ",&a);
printf( "现在本小组有   %d   人,是否正确?(Y/N)\n ",a);
        scanf( "%s ",&b);
    }
    b= 'n ';
    while   (b!= 'y ')
    {
        printf( "请输入本次考核科目总数\n ");
scanf( "%d ",&k);
printf( "现在本次考核共有   %d   科,是否正确?(Y/N)\n ",k);
        scanf( "%s ",&b);
    }
    pa=a;
    pk=k;
    km1=rk(pa,pk);///这里的调用出不来
    printf( "%s   %s   %s\n ",&km1[0],&km1[1],&km1[2]);
}}
///////////科目///////////
char   rk(int   paa,int   pbb)//这个名字好像不对
{
    int   a=paa   ,b=pkk;
printf( "本小组共   %d   人,每人有   %d   科成绩。\n ",paa,pkk);
   
    char   **km;
    km=(char**)malloc(b*20*sizeof(char));//ppk   hang,10   lie
    for(int   i=0;i <b;i++)
    {
        printf( "现在请分别输入   %d   门科目的第   %d   门名称\n ",b,i+1);
scanf( "%s ",&km[i]);
    }
    printf( "%s\n%s\n%s\n ",&km[0],km+1,km+2);
    return   km;//还有这里。。。
}
科目部分已经可以存入,在本函数可以正常显示,返回主函数就乱码了。。。。
帮我看看了,谢谢

[解决办法]
#include <stdio.h>
#include <malloc.h>
char** rk(int paa,int pkk);

////////////main/////////////
void main()
{
int a,k,pa,pk;
char b= 'n ',**km1;
while (b!= 'y ')
{
printf( "请输入本科学生人数\n ");
scanf( "%d ",&a);
printf( "现在本小组有 %d 人,是否正确?(Y/N)\n ",a);
scanf( "%s ",&b);
}
b= 'n ';
while (b!= 'y ')
{
printf( "请输入本次考核科目总数\n ");
scanf( "%d ",&k);
printf( "现在本次考核共有 %d 科,是否正确?(Y/N)\n ",k);
scanf( "%s ",&b);
}
pa=a;
pk=k;
km1=rk(pa,pk);
printf( "%s %s %s\n ",km1[0], km1[1], km1[2]);
}


///////////科目///////////
char** rk(int paa,int pbb)
{
int a=paa ,b=pbb;
printf( "本小组共 %d 人,每人有 %d 科成绩。\n ", paa,pbb);

char **km;
km=(char**)malloc(b*sizeof(char*));//ppk hang,10 lie
for(int i=0;i <b;i++)
{
km[i] = (char *)malloc(20 * sizeof(char));
printf( "现在请分别输入 %d 门科目的第 %d 门名称\n ",b,i+1);
scanf( "%s ",km[i]);
}
printf( "%s\n%s\n%s\n ",km[0], km[1],km[2]);
return km;
}

热点排行