C语言结构体问题
#include<stdio.h>
main()
{
int i,j;
struct student
{
int NO;
char *NAM;
float MATH;
float ENG;
float C;
float SUM;
}a[4];
for(i=0;i<4;i++)
{
printf("第%d个人的信息:\n",i+1);
for(j=0;j<4;j++)
{
printf("NO.:");
scanf("%d",&a[i].NO);
printf("\n");
printf("姓名:");
gets(a[i].NAM);
printf("\n");
printf("数学成绩:");
scanf("%f",&a[i].MATH);
printf("\n");
printf("英语成绩:");
scanf("%f",&a[i].ENG);
printf("\n");
printf("C语言成绩:");
scanf("%f",&a[i].C);
printf("\n");
a[i].SUM=a[i].MATH+a[i].ENG+a[i].C;
}
}
for(i=0;i<4;i++)
{
printf("第%d个人的信息:\n",i);
for(j=0;j<4;j++)
{
printf("NO.:%d\n",a[i].NO);
printf("\n");
printf("姓名:%S\n",a[i].NAM);
printf("\n");
printf("数学成绩%f\n:",a[i].MATH);
printf("\n");
printf("英语成绩:\n",a[i].ENG);
printf("\n");
printf("C语言成绩:\n",a[i].C);
printf("\n");
}
printf("\n");
}
}
编译和链接没问题输入数据时会出错不知道怎么回事
[解决办法]
char *NAM;
===>
char NAM[20 + 1];
[解决办法]
- C/C++ code
printf("英语成绩:%f\n",a[i].ENG);//只能显示数学成绩是因为你这儿没有%fprintf("C语言成绩:%f\n",a[i].C);
[解决办法]
- C/C++ code
#include<stdio.h>#include <iostream>void main(){ int i; struct student { int NO; char NAM[30]; float MATH; float ENG; float C; float SUM; }a[4]; for(i=0;i<4;i++) { printf("第%d个人的信息:\n",i+1); printf("NO.:"); scanf("%d",&(a[i].NO)); printf("\n"); fflush(stdin);//刷一次输入缓冲区,gets可用 std::cin.sync(); printf("姓名:"); gets(a[i].NAM); printf("\n"); printf("数学成绩:"); scanf("%f",&(a[i].MATH)); printf("\n"); printf("英语成绩:"); scanf("%f",&(a[i].ENG)); printf("\n"); printf("C语言成绩:"); scanf("%f",&(a[i].C)); printf("\n"); a[i].SUM=a[i].MATH+a[i].ENG+a[i].C; } printf("***************************************************\n"); for(i=0;i<4;i++) { printf("第%d个人的信息:\n",i+1); printf("NO.:%d\n",a[i].NO); printf("姓名:%s\n",a[i].NAM); printf("数学成绩%f:\n",a[i].MATH); printf("英语成绩%f:\n",a[i].ENG); printf("C语言成绩%f:\n",a[i].C); printf("总分是:%d\n\n",a[i].SUM); } system("pause");}