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

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条回答 默认 最新

  • caozhy
    已采纳
     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
    
    
    点赞 评论
  • include_iostream_
    include_iostream_ 2021-01-16 20:05

    非常明显,这根本不是C语言,这是C++。。。上面的回答者好像根本没看你给的代码。

    点赞 评论

相关推荐