利用结构体数组,存储若干学生的姓名,学号,从键盘输入一个姓名(或学号),判断该人是否为该班学生
- 提问者网友:我没有何以琛的痴心不悔
- 2021-07-17 10:34
- 五星知识达人网友:由着我着迷
- 2021-07-17 11:14
#define N 50 //根据班上人数可自由定
struct student
{
int num;
char name[10];
int grade[4];
}stu[N];
void print(struct student *p)
{
int b;
for(;p<stu+N;p++)
{
int average=0,score=0;
for(b=0;b<4;b++)
average+=p->grade[b];
score=average;
average=average/4;
printf("学号为%d的学生的平均分是%d,总分是%d\n",p->num,average,score);
}
}
void main()
{
int i,j;
printf("该班共有%d个学生\n",N);
for(i=0;i<N;i++)
{
printf("请输入第%d个学生的学号,姓名和四门课程的成绩:\n",i);
scanf("%d%s",&stu[i].num,stu[i].name);
for(j=0;j<4;j++)
scanf("%d",&stu[i].grade[j]);
putchar('\n');
}
print(stu);
printf("请输入所要选择的课程(在1,2,3,4中选数):\n");
int a,b;
scanf("%d",&a);
for(b=0;b<N;b++)
{
if(stu[b].grade[a]>=90)
{
printf("学号为%d的学生的各门课程的成绩为:\n",stu[b].num);
for(i=0;i<4;i++)
printf("%d\n",stu[b].grade[i]);
}
else printf("没有\n");
}
}
- 1楼网友:动情书生
- 2021-07-17 12:52
// 学生信息结构体 struct stuStudentInfo { // 姓名 char cName[128]; // 学号 char cIDNo[128]; };
// 学生的个数 #define STUDENT_NUM_MAX 6
int _tmain(int argc, _TCHAR* argv[]) { stuStudentInfo stuInfo[STUDENT_NUM_MAX];
memset(stuInfo, 0, sizeof(stuInfo));
int i = 0; char cKeyInfo[128] = {0}; int iFindMark = 0; // 初始化原始数据数组 for (i = 0; i < STUDENT_NUM_MAX; i++) { printf("\n\n请输入第%d位学生的信息:\n", i+1);
printf("姓名:"); scanf("%s", stuInfo[i].cName); printf("学号:"); scanf("%s", stuInfo[i].cIDNo); }
while (1) { printf("\n\n请输入您要查找的信息:"); scanf("%s", cKeyInfo);
// 输入exit,退出程序 if (strcmp(cKeyInfo, "exit") == 0) break;
// 复位是否找到标志 iFindMark = 0;
// 查找 for (i = 0; i < STUDENT_NUM_MAX; i++) { // 在姓名中查找 if (strstr(stuInfo[i].cName, cKeyInfo) != NULL) { iFindMark = 1; break; } // 在学号中查找 if (strstr(stuInfo[i].cIDNo, cKeyInfo) != NULL) { iFindMark = 2; break; } }
// 显示查找结果 switch (iFindMark) { case 1: { printf("在第%d位学生的姓名符合查询条件,是该班学生", i+1); break; } case 2: { printf("在第%d位学生的学号符合查询条件,是该班学生", i+1); break; } case 0: default: { printf("不是该班学生的信息", i+1); break; } }
}
return 0; }