从写完上一篇博客,马不停蹄的我开始写这篇博客,就是不想辜负大家的期待,希望有更多的文章呈现给大家,话不多说让我们开始吧!
首先呈上题目:
在写这个算法题之前要求我们对结构体的知识有所了解,但不必过于深入。
我们要将字符串和数字(相当于姓名和成绩)放进一个结构体中,方便后续进行调用
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
strcmp函数中当两个字符串相等时就返回0,上述代码就用来判断两个字符串是否相等,相等才能执行。
接着进行查找学生是否存在
先输入学生的姓名
}else if(strcmp(f,"find")==0){ //输入find时执行此语句,进行查找 scanf("%s",t); //输入学生姓名 getchar();
接下来到了重头戏,也就是程序中最难的地方
我们进行检索是否存在此学生
p=0; for(j=0;j此处我定义了变量p进行判断,如果学生存在,则p的值为1
写程序时不要忘记换行!!!
for循环进行遍历,从学生系统中的第一个学生开始,一直到最后一个,看是否有这个学生存在
1.若学生存在才输出成绩,则p=1,不用执行下面的if语句
2.若学生不存在则不进去第一个if语句,p等于初始值0,执行第二个if语句,输出-1
附上完整代码
#include#include 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 到这里程序就写完了,经过本博主的分析是不是发现也没有想象中的那么难啊!只要我们进行分步实现就没有那么难,希望我的分享可以对大家有所启发和帮助。
请大家期待我的更多作品吧!
如果有好的算法题我将继续和大家分享交流,也希望大家可以指出我的不足和缺点,让博主可以提升自己,也希望大家可以留下宝贵意见。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)