MrForsen 2020-10-03 15:24 采纳率: 100%
浏览 1670
已采纳

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 16:01
    关注
    #include <cstring>
    看看
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)