c语言-学生成绩查找系统

c语言-学生成绩查找系统从写完上一篇博客,马不停蹄的我开始写这篇博客,就是不想辜负大家的期待,希望有更多的文章呈现给大家,话不多说让我们开始吧!首先呈上题目:在写这个算法题之前要求我们对结构体的知识有所了解,但不必过于深入。我们要将字符串和数字(相当于姓名和成绩)放进一个结构体中,方便后续进行调用structstu{ intm; charn[20];}a[1010];接下来我们需要输入学生信息输入之前先要定义变量charf[20],t[20]; inti=0,j,m,p;.

从写完上一篇博客,马不停蹄的我开始写这篇博客,就是不想辜负大家的期待,希望有更多的文章呈现给大家,话不多说让我们开始吧!

c语言-学生成绩查找系统

首先呈上题目:

c语言-学生成绩查找系统

在写这个算法题之前要求我们对结构体的知识有所了解,但不必过于深入。

我们要将字符串和数字(相当于姓名和成绩)放进一个结构体中,方便后续进行调用

struct stu{
	int m;
	char n[20];
}a[1010];

 接下来我们需要输入学生信息

输入之前先要定义变量

char f[20],t[20];
	int i=0,j,m,p;

大家可以根据喜好自己定义变量用什么表示(用数组表示简化程序)

输入学生信息部分的代码

while(scanf("%s",f)){
		if(strcmp(f,"end")==0)   //strcmp用于比较两个字符串并根据比较结果返回整数 
			break;               //当输入字符为end时,就结束循环 
		else if(strcmp(f,"insert")==0){  //当输入字符为insert时执行此条程序 
			scanf("%s %d",a[i].n,&a[i].m);    //输入学生的姓名和成绩 
			getchar();    //getchar读入函数的一种,接收一个字符 
			i++;          //记录总共输入了几个学生 

这里我们用到了strcmp()库函数,需要头文件#include <string.h>

strcmp函数中当两个字符串相等时就返回0,上述代码就用来判断两个字符串是否相等,相等才能执行。

接着进行查找学生是否存在

先输入学生的姓名

}else if(strcmp(f,"find")==0){   //输入find时执行此语句,进行查找 
			scanf("%s",t);              //输入学生姓名 
			getchar();

接下来到了重头戏,也就是程序中最难的地方

我们进行检索是否存在此学生

p=0;                   
			for(j=0;j<i;j++){           //j的上限为输入的学生总量 
				if(strcmp(a[j].n,t)==0){  //如果查找的学生姓名与第一次输入的学生姓名相符 
					printf("%d\n",a[j].m);   //输出学生的成绩 
					p=1;                  //p=1表示该学生存在学生系统中 
					break;                //此循环结束 
				}
			}
			if(p==0)                  //该学生不存在学生系统中 
			printf("-1\n");          //用-1来表示不存在 

此处我定义了变量p进行判断,如果学生存在,则p的值为1

写程序时不要忘记换行!!!

for循环进行遍历,从学生系统中的第一个学生开始,一直到最后一个,看是否有这个学生存在

1.若学生存在才输出成绩,则p=1,不用执行下面的if语句

2.若学生不存在则不进去第一个if语句,p等于初始值0,执行第二个if语句,输出-1

附上完整代码

#include <stdio.h>
#include <string.h>
struct stu{
	int m;
	char n[20];
}a[1010];
int main(){
	char f[20],t[20];
	int i=0,j,m,p;
	while(scanf("%s",f)){
		if(strcmp(f,"end")==0)   //strcmp用于比较两个字符串并根据比较结果返回整数 
			break;               //当输入字符为end时,就结束循环 
		else if(strcmp(f,"insert")==0){  //当输入字符为insert时执行此条程序 
			scanf("%s %d",a[i].n,&a[i].m);    //输入学生的姓名和成绩 
			getchar();    //getchar读入函数的一种,接收一个字符 
			i++;          //记录总共输入了几个学生 
		}else if(strcmp(f,"find")==0){   //输入find时执行此语句,进行查找 
			scanf("%s",t);              //输入学生姓名 
			getchar();
			p=0;                   
			for(j=0;j<i;j++){           //j的上限为输入的学生总量 
				if(strcmp(a[j].n,t)==0){  //如果查找的学生姓名与第一次输入的学生姓名相符 
					printf("%d\n",a[j].m);   //输出学生的成绩 
					p=1;                  //p=1表示该学生存在学生系统中 
					break;                //此循环结束 
				}
			}
			if(p==0)                  //该学生不存在学生系统中 
			printf("-1\n");          //用-1来表示不存在 
		}
	}
	return 0;
}

到这里程序就写完了,经过本博主的分析是不是发现也没有想象中的那么难啊!只要我们进行分步实现就没有那么难,希望我的分享可以对大家有所启发和帮助。

请大家期待我的更多作品吧!

如果有好的算法题我将继续和大家分享交流,也希望大家可以指出我的不足和缺点,让博主可以提升自己,也希望大家可以留下宝贵意见。

c语言-学生成绩查找系统

今天的文章c语言-学生成绩查找系统分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24415.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注