C语言问题

题目描述现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。编写一个函数input,用来输入一个学生的数据记录。编写一个函数print,打印一个学生的数据记录。在... 题目描述
现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。编写一个函数input,用来输入一个学生的数据记录。编写一个函数print,打印一个学生的数据记录。在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100
输入
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出
每个学生的学号、姓名、三科成绩占一行,逗号分开。
样例输入
2
a100 zhblue 70 80 90
b200 newsclan 90 85 75

样例输出
a100,zhblue,70,80,90
b200,newsclan,90,85,75

#include<stdio.h>
int main()
{
int i,n;
int a[100],b[100],c[100];
char e[100],f[100];
scanf("%d",&n);
for(i=1;i<=n;i++)
{ scanf("%d%d%d",&a[i],&b[i],&c[i]);
gets(e);
gets(f);
}
for(i=1;i<=n;i++)
printf("%s,%s,%d,%d,%d",e[i],f[i],a[i],b[i],c[i]);
return 0;
}

= =我该怎么改,谢谢
展开
 我来答
匿名用户
2011-11-07
展开全部
2个问题

1, 你定义的 char e[100],f[100]; 这个是字符数组 是指 e f 两个 分别能存100个字符的;你要改成 指针字符数组,每个元素都能存多少字符的

2, 输入顺序
scanf("%d%d%d",&a[i],&b[i],&c[i]);
gets(e);
gets(f);
忘至白葬不情必0T
推荐于2017-11-24 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
char e[100],f[100];
改成
char e[100][81],f[100][81];
不然你一个字符数组怎么放多个人的名字和学号?

scanf("%d%d%d",&a[i],&b[i],&c[i]);
gets(e);
gets(f);
改成
scanf("%s%s%d%d%d",e[i],f[i],&a[i],&b[i],&c[i]);
直接用scanf来接收有空格做分隔的字符串是可行的。

printf("%s,%s,%d,%d,%d",e[i],f[i],a[i],b[i],c[i]);
改成
printf("%s,%s,%d,%d,%d\n",e[i],f[i],a[i],b[i],c[i]);
有换行好看点。
追问
我能再问一下吗,
“char e[100][81],f[100][81];不然你一个字符数组怎么放多个人的名字和学号?”这句话是什么意思,那我要是要输入一千个人的信息,e和f的后面就要1000个[ ]吗?
追答
char e[1000][81];
第一个[]里面的数是人数,第二个81。因为DOS窗口一行能显示80个字符,我这里设成81,意思是你输入的名字或学号不会超过80个字符。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinling4388
2011-11-07 · TA获得超过7175个赞
知道大有可为答主
回答量:2642
采纳率:93%
帮助的人:1038万
展开全部
第一个for循环里的提出来变成input函数,即:
void input(int* a, int* b, int* c, char* e, char* f)
{
scanf("%d%d%d",a,b,c);
gets(e);
gets(f);
}

第二个for循环里的提出来变成print函数,即
void print(int* a, int* b, int* c, char* e, char* f)
{
printf("%s,%s,%d,%d,%d",e,f,a,b,c);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chaotang0281
2011-11-07
知道答主
回答量:5
采纳率:0%
帮助的人:6.4万
展开全部
学过结构体吗,可以考虑用结构体存储

#include<stdio.h>

typedef struct Stu
{
char no[100];
char name[100];
int a;
int b;
int c;
}Stu;

int main()
{
int i,n;
Stu arr[100];
char e[100],f[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d%d%d",arr[i].no, arr[i].name,&arr[i].a, &arr[i].b, &arr[i].c);
}
for(i=0;i<n;i++)
printf("%s,%s,%d,%d,%d\n",arr[i].no, arr[i].name, arr[i].a, arr[i].b, arr[i].c);
system("PAUSE");
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式