#include <stdio.h>
void main()
{
struct student
{
char name[10];
char sex;
int age;
float score;
}stu[5];
printf("please enter name,sex,age,score for student\n");
for (int i = 0; i < 5; i++)
{
scanf("%s,%c,%d,%f", stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score);
}
printf("输出信息\n");
for (int i = 0; i < 5; i++)
{
if (stu[i].sex == 'f')
printf("%s\t%d\t%4.1f\n", stu[i].name, stu[i].age, stu[i].score);
}
}
#include <stdio.h>
void main()
{
struct student
{
char *name[10];
char xx[1];//////打印时用作间隔、、、、、
char sex;
int age;
float score;
}stu[2];
printf("please enter name,sex,age,score for student\n");
for (int i = 0; i < 2; i++)
{
scanf("%s %c %d %f", stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score);
}
printf("输出信息\n");
for (int i = 0; i < 2; i++)
{
if (stu[i].sex == 'f')
printf("%s\t%d\t%4.1f\n", stu[i].name, stu[i].age, stu[i].score);
}
}
在纠结后面的循环不走之前,你先在前面的循环里打印,看看输入的到底是什么
目测应该所有参数都给了name,后面的没有赋值
第15行,输入语句修改为:scanf("%s %c %d %f", stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].score); 以空格为间隔。
char name[10];是字符数组,要么在定义的时候直接初始化赋值,要么只能逐个赋值,建议使用用字符串指针
char *name;
你在输入的时候,逗号和后面的性别那个符号等都被认定为name了,所以就没有后面for循环进去了,但是if条件不满足,所以没有输出,可以按照下面的程序,打印一些符号什么的,帮助你分析程序死在什么地方。
#include <stdio.h>
struct student
{
char name[10];
char sex;
int age;
float score;
}stu[5];
int main()
{
int i=0;
printf("please enter name,sex,age,score for student\n");
for(i=0;i<1;i++)
{
scanf("%s",stu[i].name);
getchar();
scanf("%c",&stu[i].sex);
getchar();
scanf("%d,%f",&stu[i].age, &stu[i].score);
}
printf("输出信息\n");
printf("123");
for (i = 0; i < 1; i++)
{
printf("********");
if (stu[i].sex=='f')
{
printf("123456");
printf("%s %d %.1f\n", stu[i].name, stu[i].age, stu[i].score);
}
}
return 0;
}
运行结果如下: