问一个问题
#include <stdio.h>main()
{
struct student
{ char num[10];
char name[10];
char sex;
float english;
float computer;
float math;
float total;
float average;
};
struct student per[10];
int i;
for(i=0;i<=9;i++)
{
printf("第%d个同学\n",i+1);
printf("please input the num:");
scanf("%s",per[i].num);
printf("please input the name:");
scanf("%s",per[i].name);
printf("please input the sex M or F:");
scanf(" %c",&per[i].sex); /*为什么%c前的空格不可少*/
printf("please input the english score:");
scanf("%f",&per[i].english);
printf("please input the computer score:");
scanf("%f",&per[i].computer);
printf("please input the math score:");
scanf("%f",&(per[i].math));
per[i].total=per[i].english+per[i].computer+per[i].math;
per[i].average=per[i].total/3;
}
for(i=0;i<=9;i++)
{
printf("%s,%s,%c,%f,%f,%f,%f,%f\n",per[i].num,per[i].name,per[i].sex,per[i].english,per[i].computer,per[i].math,per[i].total,per[i].average);
}
}
----------------解决方案--------------------------------------------------------
这问题你记住就可以了
----------------解决方案--------------------------------------------------------
repeat:/*为什么%c前的空格不可少*/
这是不可能的,%c前面没有空格是没有问题的,不信你试一下:
# include <stdio.h>
void main ()
{
char sex;
scanf ("%c",&sex);
printf ("%c\n",sex);
}
----------------解决方案--------------------------------------------------------
但在我上面的程序中如果少了空格就有问题了,如果你试试就会知道有空格和没空格的分别!!!!!
----------------解决方案--------------------------------------------------------
读取单个字符时是不需要空格,但如果在链表中就需要空格或'\n'了
----------------解决方案--------------------------------------------------------
明了,感激....
----------------解决方案--------------------------------------------------------
我运行过了,是需要空格的。我分析了原因:当执行到“scanf("%s",per[i].name);”这个语句时,输入一个字符串,让后回车,编译器把回车当作了“scanf("%c",&per[i].sex); ”这个语句的输入,而如果加一个空格,刚好跳过回车符。不信你在“scanf("%c",&per[i].sex); ”这个语句后面加上“printf("%c",per[i].sex); ”试试,肯定会换行的。我都试过了。
----------------解决方案--------------------------------------------------------
我有个疑问想问楼主 ,你用的是什么编译器啊?是Turbo c2.0吗?我运行了你的程序,提示错误:scanf : floating point formats not linked Abnormal program termination。后来我在Baidu里搜了一下,发现TC中有bug:在用scanf函数进行数据输入的时候,如果运用了指向结构体变量的指针就会有问题,scanf函数对这种方式的使用支持的并不好。不过我先让数据输入给一个变量,不用指针,然后再将这个变量的值赋给那个指针就行了。
----------------解决方案--------------------------------------------------------
我用的是VC++6.0,程序没问题的
----------------解决方案--------------------------------------------------------