MrForsen 2020-10-03 07:24 采纳率: 100%
浏览 1727
已采纳

C语言[Error] 'strcmp' was not declared in this scope是怎么回事?

我在网上查了说是缺少头文件或者没被括号包住的原因,可我这个貌似都没出现上述问题啊,求大佬帮帮我这个刚学计算机的学生


```#include<stdio.h>                                                         //头文件名 
#include<conio.h>                                                         //没有此头文件名无法调用getch和getchar函数
#include<stdlib.h>                                                        // system函数所需的头文件名,没有则无法调用 
#include<string.h>                                                        // strcmp函数所需的头文件名,没有则无法调用 
#define N 9999                                                            //宏定义,便于更改录入学生的人数 
struct Student                                                            //利用结构体编程更方便 
{
    char num[20];                                                         //给学生添加个学号方便查询 
    char name[20];                                                        //姓名 
    float score;                                                          //分数 
}stu[N];
    int main()
{
    int c,k;
    int i,j,p=0;
    for(i=0;i<N;i++)
    {   
        printf("请输入第%2d个学生的学号、姓名、成绩:\n",i+1);
        scanf("%s%s%f",&stu[i].num,stu[i].name,&stu[i].score);            //用结构体录入数据 
        if(p<=i)                                                          //记录循环次数 
        p++;
        printf("再按回车即可继续输入,按Esc停止输入\n");
        if ((c=getch())==27)                                              //利用了 ASCLL码,当检测到键盘按下“Esc”键时终止循环 
        break;
    } 
      printf("\n\n学号\t姓名\t成绩\n");
      for(i=0;i<p;i++)
        printf("%s\t%s\t%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);        //输出成绩


        printf("点击空格键即可查看按成绩高低的排序"); 
    if ((c=getch())==32)                                                  //同道理 
    { 
     for(j=0;j<p;j++)                                                    //双循环语句的用途是:将结构体内的第N个成绩 
    {
        for(k=j+1;k<p;k++)
        { 
            if(stu[j].score<stu[k].score)                                //比较大小,原理是将学生分数依次进行比较,然后将小的排在数组的末尾,依次类推,最后得到从大到小的数组排序 
            {                                                             
                stu[p]=stu[j];                                           //若要查看从小到大的排序,仅需将小于号改为大于号即可 
                stu[j]=stu[k];
                stu[k]=stu[p];
            }
        } 
    }
     printf("\n按成绩优异排序后的结果:");
     printf("\n\n学号\t姓名\t成绩\n");

    for(i=0;i<p;i++)
        printf("%s\t%s\t%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);        //输出成绩
    } 
        printf("\n若要查询学生成绩请按Esc键,亲~");
    if((c=getch())==27)                                                        //利用了 ASCLL码,当检测到键盘按下“Esc”键时进入查询页面 
    {
        char a[20];                                                            //定义一个数组,用于存储你要查询的学号 
        i=0;
        system("cls");                                                         //利用该函数调用DOS命令清屏 
        printf("请输入您想查询成绩的那位学生的学号:");              
        scanf("%s",a);                                                         //将你要查询的学号放入数组a【20】中 
        while(i<p)                                                             //利用循环找到与a【20】相同的结构体数组 
        {
            if(strcmp(stu[i].num,a)==0)                                        //利用strcmp函数进行数组之间的比较 
            {
                printf("\n学号:%s\t姓名:%s\t成绩:%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);
                break;                                                          
            }
        }
    }
} 

展开全部

  • 写回答

3条回答 默认 最新

  • threenewbee 2020-10-03 08:01
    关注
    #include <cstring>
    看看
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 springboot3整合mybatis-plus出错
  • ¥50 如何快速查看手机目标app的主要服务器ip
  • ¥15 (标签-stm32|关键词-m3)
  • ¥15 matlab中频率调制法代码的解读
  • ¥15 ceph的对象、块、文件相关问题求解答
  • ¥50 如果使用python进行ERA5 10米风场预报检验
  • ¥15 navicat解析mysql密码
  • ¥15 SDAPI(关键词-table)
  • ¥15 unity安卓打包出现问题
  • ¥20 安装catkin时遇到了如下问题请问该如何解决呢
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部