编写程序,包含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. 注意代码风格和格式