当前位置:网站首页>学生成绩查找系统

学生成绩查找系统

2022-08-09 11:08:00 追梦杰尼龟

学生成绩查找系统

题目:`学生成绩查找系统是一个根据姓名查找学生成绩的系统。系统可以录入是学生的姓名和成绩,录完之后可以输入查找条件,即学生的姓名,查找该生的成绩,如果存在该生的信息,则输出该生成绩,否则给出查无此人的提示信息。

输入:题目输入包括录入学生信息和输入查找条件以及输入结束标志。insert语句表示录入学生信息,格式为字符insert+空格+字符串+空格+数字+换行符 ,例如 insert xiaohua 99 ,表示录入姓名为xiaohua的学生,其成绩为99 。 find语句表示查找某学生的信息,格式为字符find+空格+字符串+换行符。例如 find xiaohua。end语句表示输入结束,格式为字符end

输出:对应每一条find语句都应该有一条输出语句。对于find xiaohua这条输入语句,因为已经插入过xiaohua的成绩 需要输出 99+换行符,否则查找不到输出-1+换行符。

输入格式:

insert zhangsan 90
insert lisi 78
insert xiaoming 86
find xiaoming
find Jack
end

输出格式:
86
-1


思路
1.因为需要不断地输入,所以在输入的时候需要用到while(scanf())。
2.需要存储学生的姓名和成绩,那就需要定义结构体数组。
3.查找–可以用字符串函数strcmp进行比对
4.输出的时候可以运用循环,遍历结构体数组,当查找到的和自己所需要的一样的,就循环输出。


代码实现

#include<stdio.h>
#include<string.h>
struct student 
{
    
	char name[20];
	int score;
}stu[100];

int main()
{
    
	char a[20];	 //定义一维数组,用来存放insert , find, end 
	int cnt = 0;  //计数器 
	while(scanf("%s",a))    
	{
    
		if(strcmp(a,"end") == 0)  //如果输入的字符串是end的话 就跳出 
		{
    
			break;
		}
		if(strcmp(a,"insert") == 0) //如果输入的字符串是insert的话
									//就将学生的姓名和成绩存入结构体数组之中 
		{
    
			scanf("%s %d",&stu[cnt].name ,&stu[cnt].score );  
			cnt++; //每当输入过一个学生的姓名和成绩之后计数器加一 
		}
		if(strcmp(a,"find") == 0)  //如果输入的字符串是find的话
		                          // 再定义一个数组存储需要查找的姓名 
		{
    
			char b[20];
			int flag = 0;    //标记 
			scanf("%s",b);
			int i;   //定义循环变量i,用来遍历结构体数组 
			for(i=0; i<cnt; i++)   //条件是i<cnt;遍历结构体数组 
			{
    
				if(strcmp(b,stu[i].name ) == 0)  //如果遍历的结构体数组之中有需要查询的姓名的话,
												//输出并且将flag = 1; 
				{
    
					printf("%d\n",stu[i].score );
					flag = 1;
					break;
				}
			}
			if(flag == 0)  //flag=0的都是没有存入结构体数组之中的,输出-1即可 
			{
    
				printf("-1\n");
			}
		}
	
	}
	return 0;
}

注释之中详细的解释了代码


这道题就完成了!!!

原网站

版权声明
本文为[追梦杰尼龟]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Czc1357618897/article/details/121512756