编写程序,包含2个功能:
1.输入10个学生的3门课程的信息,包括学号、姓名、课程名和成绩;
2.成绩查询:以姓名、学号和课程名称为条件,查询课程成绩。
代码:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct student{
char id[20];
char name[20];
int cname[3];
int score[3];
} stud[SIZE];
void input() /* 输入学生的信息 */
{
int i;
for(i=0;i<SIZE;i++)
{
printf(“第%d个学生的信息:\n”,i+1);
scanf(“%s%s%s%s%s%d%d%d”,stud[i].id,stud[i].name,&stud[i].cname[0],&stud[i].cname[1],&stud[i].cname[2],&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
}
}
void output() /* 输出学生的信息 */
{
int i;
printf(“\n”);
for(i=0;i<SIZE;i++)
{
printf(“%s %s %s %s %s %d %d %d\n”,stud[i].id,stud[i].name,&stud[i].cname[0],&stud[i].cname[1],&stud[i].cname[2],stud[i].score[0],stud[i].score[1],stud[i].score[2]);
}
}
/* 成绩查询输出信息 */
void sortput()
{
int z,n; //选择项
int i; //行
char zhi[20];
for(;n=1;)
{
printf(“Search function :\n”);
printf(“1. Search use id :\n”);
printf(“2. Search use name :\n”);
printf(“3. Search use cname :\n”);
printf(“4. Search all :\n”);
printf(“Choose :”);
scanf(“%d”,&z);
printf(“Zhi :”);
scanf(“%s”,zhi);
printf(“Search results : \n”);
for(i=0;i<SIZE;i++)//行
{
if(z==1)
{
if(zhi==stud[i].id)
{
printf(“%s%s%s%d%d%d”,&stud[i].cname[0],&stud[i].cname[1],&stud[i].cname[2],&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
}
}
if(z==2)
{
if(zhi==stud[i].name)
{
printf(“%s%s%s%d%d%d”,&stud[i].cname[0],&stud[i].cname[1],&stud[i].cname[2],&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
}
}
if(z==3)
{
if(atoi(zhi)==”&stud[i].cname[0]”)
{
printf(“%d”,&stud[i].score[0]);
}
else if(atoi(zhi)==”&stud[i].cname[1]”)
{
printf(“%d”,&stud[i].score[1]);
}
else
{
printf(“%d”,&stud[i].score[2]);
}
}
}
if(z==4)
{
output();
}
printf(“Choose 1继续:”);
scanf(“%d”,&n);
}
}
int main()
{
input();
sortput();
}
20
#include <stdio.h> #include <stdlib.h> #define SIZE 10 struct student{ char id[20]; char name[20]; int cname[3]; int score[3]; } stud[SIZE]; void input() /* 输入学生的信息 */ { int i; for (i =0; i < SIZE; i++) { printf("第%d个学生的信息:\n",i+1); scanf("%s%s%d%d%d%d%d%d", stud[i].id, stud[i].name,&stud[i].cname[0],&stud[i].cname[1],&stud[i].cname[2],&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]); } } void output() /* 输出学生的信息 */ { int i; printf("\n"); for(i=0;i<SIZE;i++) { printf("%s %s %d %d %d %d %d %d\n",stud[i].id,stud[i].name, stud[i].cname[0], stud[i].cname[1], stud[i].cname[2],stud[i].score[0],stud[i].score[1],stud[i].score[2]); } } /* 成绩查询输出信息 */ void sortput() { int z,n; //选择项 int i; //行 char zhi[20]; for(;n=1;) { printf("Search function :\n"); printf("1. Search use id :\n"); printf("2. Search use name :\n"); printf("3. Search use cname :\n"); printf("4. Search all :\n"); printf("Choose :"); scanf("%d", &z); printf("Zhi :"); scanf("%s",zhi); printf("Search results : \n"); for(i=0;i<SIZE;i++) {//行 if(z==1) { if(strcmp(zhi, stud[i].id) == 0) { printf("%d%d%d%d%d%d", stud[i].cname[0], stud[i].cname[1], stud[i].cname[2], stud[i].score[0], stud[i].score[1], stud[i].score[2]); } } if(z==2) { if(strcmp(zhi, stud[i].name) == 0) { printf("%d%d%d%d%d%d", stud[i].cname[0], stud[i].cname[1], stud[i].cname[2], stud[i].score[0], stud[i].score[1], stud[i].score[2]); } } if(z==3) { if(atoi(zhi)== stud[i].cname[0]) { printf("%d", stud[i].score[0]); } else if(atoi(zhi) == stud[i].cname[1]) { printf("%d", stud[i].score[1]); } else { printf("%d", stud[i].score[2]); } } } if(z==4) { output(); } printf("Choose 1继续:"); scanf("%d", &n); } } int main() { input(); sortput(); }
问题比较多,改了改;试试这个。
问题:
1. int类型的数据不能使用%s输入,当然也不能用%s输出;
2. printf输出时,就不要加&
3. 字符串比较不能直接比较,需要借助字符库函数,例如strcmp或strncmp
4. 注意代码风格和格式