枫凌er 2018-10-21 02:35 采纳率: 100%
浏览 5503
已采纳

C语言中“bool”是什么,有什么功能,怎么用?

在做杭电1236题的过程中,与ac代码对比,

 #include "iostream"
#include "stdio.h"
#include "algorithm"
#include <string.h>
using namespace std;
const int MAXN = 11;
const int MAX = 22;
int point[MAXN];
struct Student
{
       char num[MAX];
       int pro_num[MAXN];
       int pnt ;
};
bool cmp(const Student &a,const Student &b)
{
     if (a.pnt == b.pnt)
     return strcmp(a.num,b.num) < 0 ? 1 : 0;
     else return a.pnt > b.pnt;
}
int main()
{
    int N, sum;
    while (scanf("%d",&N) != EOF)
    {
          sum = 0;
          if (N == 0) break;
          int M, G;
          scanf("%d%d",&M,&G);
          int i;
          int max;
          for(i = 0; i < M; i++)
          {
                scanf("%d",&point[i]);
          }
          Student stu[1001];
          for(i = 0; i < N; i ++)
          {
                scanf("%s",&stu[i].num);
                stu[i].pnt = 0;
                int slv, j;
                scanf("%d",&slv);
                for (j = 0; j < slv; j++)
                {
                    scanf("%d",&stu[i].pro_num[j]);
                    stu[i].pnt = stu[i].pnt + point[stu[i].pro_num[j] - 1];
                }
          }
          for (i = 0; i < N; i++)
          {
              if (stu[i].pnt >= G) sum++;
          }
          printf("%d\n",sum);
          sort (stu,stu + N,cmp);
          for (i = 0; i < sum; i++)
          {
              printf("%s %d\n", stu[i].num,stu[i].pnt);
          }

    }
    system ("pause");
    return 0;
}
            发现ac代码多了一行
 bool cmp(const Student &a,const Student &b)
{
     if (a.pnt == b.pnt)
     return strcmp(a.num,b.num) < 0 ? 1 : 0;
     else return a.pnt > b.pnt;
}

想知道这几行代码在程序中起什么作用

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-10-21 02:45
    关注
     C语言如果有bool的话,也应该是新标准才有的。
    不过我们一般不用。
    很多C语言有
    #define BOOL int
    #define TRUE 1
    #define FALSE 0
    就你这个问题,cmp按理说应该返回int类型其中,a>b返回一个正整数,a<b返回负整数,a==b返回0,而不是bool,布尔怎么表示3个状态呢。
    这里,sort是一个排序函数,排序算法库函数给你做好了,但是依据什么排序,是调用者来定义的,定义的方式是,自己写一个cmp函数
    作为函数指针传给sort
    sort反过来会调用你的cmp,给你两个元素,你来告诉排序算法,哪个算“大”,哪个算“小”,排序算法就能根据你的规则排序了。
    你这里是按照pnt排序,如果pnt相等,再按照num排序。
    return strcmp(a.num,b.num) < 0 ? 1 : 0;
    按照我的理解,应该修改为
    return 0-strcmp(a.num,b.num);
    bool修改为int
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能