C语言 为什么我写的函数输入一组数据就直接输出了,我想连续输入5组数据的

题目:写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score【3】,用主函数输入这些记录,用print函数输出这些记录。
(我用指针来做)
请看下列程序
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[10];
float score[3];
};stu[5];
int main()
{
void print(struct student *);
int j;
struct student *k;
printf("Please input the data of students:\n");
for(k=stu;k<stu+5;k++)
{
printf("Please input the num,name,scores:\n");
scanf("%d %s",&k->num,&k->name);
for(j=0;j<3;j++)
scanf("%f",&k->score[j]);
}
print(k);
system("pause");
return 0;
}
void print(struct student *p)
{

printf("num name score\n");
for(p=stu;p<stu+5;p++)
printf("%-5d%-5s%-5.1f%-5.1f%-5.1f\n",p->num,p->name,p->score[0],p->score[1],p->score[2]);
}
请大神教教我,我还只是菜鸟一只

你的程序可以输入五组数据啊


就是stu[5] 前面多了个分号啊


#include<stdio.h>

#include<stdlib.h>

struct student

{

int num;

char name[10];

float score[3];

}stu[5];

int main()

{

   void print(struct student *);

   int j;

   struct student *k;

   printf("Please input the data of students:\n");

   for(k=stu;k<stu+5;k++)

   {

 printf("Please input the num,name:\n");

 scanf("%d %s",&k->num,&k->name);

 for(j=0;j<3;j++)

 scanf("%f",&k->score[j]);

   }

   print(k);

   system("pause");

   return 0;

}

   void print(struct student *p)

   {


 printf("num  name score\n");

      for(p=stu;p<stu+5;p++)

printf("%-5d%-5s%-5.1f%-5.1f%-5.1f\n",p->num,p->name,p->score[0],p->score[1],p->score[2]);

   }

追问

我刚刚搞错了,请问那个地方不是都要有一个分号吗?有时候我少了就显示错误,这次却可以,为什么呢?

追答

那个地方不需要分好吧。分号代表定义结束。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-07
应该是你输入数据时的格式有问题。
同一个学生的所有数据都用空格分隔,不同学生的输入用回车分隔。追问

我就是像你说的那样啊

追答

忘记了一个错误:
struct student
{
int num;
char name[10];
float score[3];
};stu[5];
修改为
struct student
{
int num;
char name[10];
float score[3];
} stu[5]; //注意这里

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网