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;
}

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

0

1个回答

 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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c语言中的bool类型
以前一直在写c++,所以想当然的认为c语言中也有bool类型,然而并没有,只是在C99标准引入的新的关键字_Bool 和c++中的bool类似,如果在c中也想直接使用bool,可以添加stdbool.h头文件参考:http://blog.chinaunix.net/uid-8440532-id-34776.html
浅谈C语言中的布尔(bool)类型
浅谈C语言中的布尔(bool)类型
C语言中实现bool(布尔型变量)
C语言中,本身没有bool(布尔型变量)。但是我们可以用其他方式来模拟。一、如果简单的使用char、int、long变量来表示0/1,则太浪费空间了。二、这里介绍一种巧妙的方式实现bool,高空间利用率。#define true 1 #define false 0 //--------------------------------------------联合体(共用体) 定义 typedef ...
c语言中如何使用true和false
在C99之前,我想很多人都是自己定义bool类型,以及true和false的值, 比如typedef int bool或者#define bool int #define true 1 #define false 0 在C99出来后,没必要这样做了, C99定义了一个_Bool的类型, 你可能会问了,为啥不是bool,如果想用bool的话,也可以,C99提供了头文件stdbool.h,...
C语言中有bool变量吗?
1.C/C++中定义的数据类型:        C语言中定义了6种基本数据类型:short,int,long,float,double,char                                   4种构造类型:数组,结构体(struct),共用类型(union),枚举类型(enum)                                              ...
C语言中多个 \n 作用
在C语言中,\n 作为一个转义字符,作用是当程序执行到该处的时候,实现自动换行的功能。一个\n示执行一次换行功能,两个表示执行两次换行功能。下边是一段简单例子。 表                                                                                                                   图
C语言基本概念之表达式
什么是表达式(表达式的定义)? 表达式是C语言的重要语法成分,不过对于表达式的定义,好像从来没有人关注过。今天就孔乙己一把吧,哈哈。先贴标准对expression的定义(ISO/IEC 9899:2011 6.5): An expression is a sequence of operators and operands that specifies computation of a val...
c语言中主函数main()的参数作用
1.例如源文件:main.c#include &amp;lt;stdio.h&amp;gt; int main(int argc,char *argv[]){ int i; printf(&quot;argc = %d\n&quot;, argc); for(i = 0;i &amp;lt; argc;i++){ printf(&quot;argv[%d]= %s\n&quot;,i, argv[i] ); } return 0; } 2.在li...
C语言中,sizeof运算符的作用
通常用来计算一个变量或者类型的大小的,单位是字节 譬如sizeof(char)==1, sizeof(int *)==4 这些是计算的类型的大小,char是一个字节,int*是4个字节(其实32位系统下指针都是4个字节,譬如char*,void*等等) 另外譬如char a;那么sizeof(a)==1 int b;那么sizeof(b)==4(这个跟编译器有关,有些是2) 另外在计算结构和类的
C语言中各种类型的全局变量默认值
我们可以简单验证一下 #include&amp;lt;iostream&amp;gt; #include&amp;lt;string&amp;gt; using namespace std; int a; char b; float c; double d; bool boo; string str; int *e; char *f; float *g; double *h; string *s; int main(){ ...
C语言中atoi()函数的作用
atoi()函数是把字符串转化为数字。实例:#include&amp;lt;stdlib.h&amp;gt;#include&amp;lt;stdio.h&amp;gt;int main(){ char str[]=&quot;123&quot;; int a; a=atoi(str); /*将字符串转化为int型的数字*/ printf(&quot;%d\n&quot;,a);}输出为123...
next_permutation()的用法,与作用
在枚举排列中,用stl中的nextpermutation()函数无论输入的序列中是否都是重复元素#include #include #include using namespace std; int p[100]; int main() { int n;cin>>n; for(int i=0;i>p[i]; sort(p,p+n); do {
C语言的问题,关于temp参数的一些知识
redefinition of formal parameter 'temp' #include #include #define LENGTH 512 void Covlution(double data[], double core[], double cov[], int n, int m) { int i = 0; int j = 0; int k = 0;
C语言中的变量
开场白要吸引人.......但是我不会   ,有人说我可以靠脸吃饭。可我偏偏选择了手,哈哈哈  说笑 娱乐娱乐, 下面我就来提提C语言中关于变量的意思 什么是变量?  没错 你看字面意思就可以理解,就是可以变得量,用专业一点的话就是程序中其值可以变化的量。
c/c++语言中,关键字static作用有哪些?
1、在函数体内,一个被申明为静态的变量在这一函数被调用的过程中维持其值不变; 2、在模块内(函数体外),一个被申明为静态的变量可以被模块内所有函数访问,但不能被模块外的其他函数访问。它为一个本地全局变量; 3、在模块内,一个被申明为静态的函数只可被这一模块内的其他函数调用。那就是这个函数被限制在申明它的模块的本地范围使用。...
C语言之加入头文件<stdbool.h>可以使用true和false
1、头文件介绍 (1)使用了后,可使用true和false来表示真假。 (2)在循环语句中进行变量声明是C99中才有的,因此编译时显式指明 gcc -std=c99 prime.c 2、最简单的例子 3、结果展示
C语言中制表符
\t  它的作用是“跳格”,即到下一个“制表位置”,在系统中一个“制表区”占8列。 如若程序是这样的: #include"stdio.h" main() {   printf("123\t456789123456789\n");   printf("123456789123456789\n"); } 运行结果123            4567891234
C语言中使用布尔变量注意事项
如果在C语言中直接定义bool变量时,编译结果会提示错误:所以如果仍想使用bool作为类型名称,只需在使用它的源文件中给&amp;lt;stdbool.h&amp;gt;标准头文件添加#include指令即可。接下来就一切照常编写代码啦!例如:#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;stdbool.h&amp;gt; int main...
C语言中sort函数的用处
C语言中有一种快速给数组排序的函数是sort函数,必须加上头文件#include&amp;lt;algorithm&amp;gt;并且是升序的。 sort函数使用方法:sort(数组名,数组名+数组长度)。我们以10为数组长度来编写代码。 #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; int main() { ...
c语言中的return 0有什么用?
return 0是正常退出,return 非零是异常退出,这是返回给控制台的,不在编的程序的控制范围内,是给操作系统识别的,对你的程序无影响。如果是C中,定义void main()可以不用返回值。 记得return 接的是一个表达式,可以是一个立即数,一个变量,一个计算式,前面我们就看到 return a+b;的例子。 return 甚至也可以接一个函数。
C语言中goto的使用方法
/* goto无条件跳转语句,一般的时候,需要用if配合使用, 有时候if还需要配合cnt一起使用,如果没有if语句配合使用,就会形成死循环。 使用goto的时候,必须配合标号一起使用 标号: goto 标号; //跳转到标号的位置执行 */ void test1() { int val = 0; int sum = 0; LOOP
C语言中的指针
指针是C语言中非常重要的东西,书本上写了好多来解释里面的原理,当年老师也跟我们讲了好多这方面的东西,一直就是感觉没有听明白。直到我看到了指向指针的指针,我建立了自己的理解,不知道是否正确,但是基本能解决遇到的问题。int *p , p=&amp;amp;i , *p。type *p,声明指针变量,type(例如int)告诉计算机p这个指针指向的这个东西占用多少个字节(byte)。例如int *p,i ; ...
c语言中 *p++ 和 (*p)++ 有什么区别?以及C语言运算符的优先级。整理。
*p++是指下一个地址。 (*p)++是指将*p所指的数据的值加一。 C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样;在(*p)++中,由于()的优先级比*和++都高,所以++作用在()内的表达式*p上。比如有: int x,y,a[]={1,2,3,4,5},*p=a,*q=a; x=*p++;//执行这一句后x=a[...
在C语言中简单函数
1. 函数是什么 在C语言中的函数是怎样的? 维基百科中对函数的定义:子程序 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。 函数在面向过程的语言中已经出现。是结构(Struct)和类(Class)的前身。本身就是对具有相关性语句的归类和对某过程的抽象。 基本释义: 【释义】:能被其他程序调用,在实现某种功...
C语言中联合(union)的一个有意思的用途
    联合(union)在许多其他语言中称作变体记录(variant record),在联合中 ,所有的成员都从偏移地址零开始存储,这样,每个成员的位置都会重叠在一起。    按照这种特性,联合可以把同一个数据解释成两种不同的东西,而不是把两个不同的数据解释为同一个东西,该用法的例子如下:    union bits32_tag { int whole; //一个32位的值 s...
C语言之set用法
下面简单总结下set容器的操作: 1、set对象的定义和初始化 set对象的定义和初始化方法包括: set&amp;lt;T&amp;gt; s; set&amp;lt;T&amp;gt; s(s1); set&amp;lt;T&amp;gt; s(b, e); 其中,b和e分别为迭代器的开始和结束的标记。 例如: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;vector&amp;gt; #include &amp;l...
在C语言中static关键字的作用
static关键字的作用 在C语言中 static修饰函数的时候 静态函数:作用范围仅限于它的源文件,即只有本文件内才可以调用,函数名在其他文件内不可 见。 static修饰局部变量的时候 局部静态变量:局限于特定函数,但出作用域并不释放,在函数体内静态变量的值也能维持。 static修饰全局变量的时候 全局静态变量:作用范围局限于它的源文件,即只有本文
C语言中反斜杠的作用
反斜杠起到换行作用,用于宏定义和字符串换行。其中宏定义中使用居多。如果一行代码有很多元素,导致太长影响阅读,可以通过在结尾加\的方式,实现换行,编译时会忽略\及其后的换行符,当做一行处理。1、在宏定义中,要换行必须使用 \ 结尾。#define CHECK_ACTION_RETURN(expr) \ if (!expr) { \ printf(":failed(%d)\n",
【C】isdigit()函数使用说明
文章目录【C】isdigit()函数使用说明一、前言二、isdigit()函数1:函数原型2:博主问题三、分析四、解决五、总结说明 【C】isdigit()函数使用说明 一、前言 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;博主为了验证CMD下输入的参数是否是int型数值,这才get到isdigit()函数,但是天公不作美,没有自己想象的那么简单,那么就来看...
C语言 宏定义的方式实现“bool”数据类型的功能
C语言中默认不支持“bool”数据类型。 若想要使用,需要引用“stdbool.h”头文件。 这个头文件需要从网上下载或者自己手动建立(自行百度)。这里介绍一种使用宏定义的方式来实现“bool”数据类型的功能作用,示例代码如下: #include &amp;lt;stdio.h&amp;gt;#define bool int #define true 1 #define false 0int main() { bool
C语言编译器和链接器的作用
源代码(.c)→编译器→目标代码(.obj)→链接器(+库代码&amp;amp;启动代码)→可执行代码(.exe)
C语言中的Input,Output
C|Input,Output写在前面:这是一篇习题练习总结,会有后续,其中的全部习题均来自GeeksforGeeks。1.Scanf问题.1:下段代码的输出是什么 #include "stdio.h" int main() { char arr[100]; printf("%d", scanf("%s", arr)); /* Suppose that i
C语言中指针的使用方法
1.使用场景 使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示: #include&amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; int main(int argc, char const *argv[]) { int a[5]={0,1,2,3,4}; int *b,*d; int c=2; in...
C语言中转义字符的理解!!!
我们都知道在C中,存在转义字符“\”,但在转义字符中有两种表达方式,那就是\ddd,\xhh。前者使用八进制表示的,后者是利用十六进制表示的。我们这次最主要的就是讲八进制表达方法。 都知道八进制的表示都是用0,1,2,3,4,5,6,7来表示的,所以表达出来之后最大的数据是\777,然而有些人用VS测试的时候输入“\400”却会出现超出范围。在其他的编译器却可以编译。 在我们的认知当中,一般都是认...
%-3d在C语言中的含义是什么?
定于输出格式。d表示输出整数,3表示输出的数字占3个字符的位置。-号表示对齐方式。是左对齐。如果是+号或者不写,表示右对齐。 后续会继续补充。
C语言中指针与java
因为最近想重新学习一遍数据结构,之前上大学的时候都是用c语言实现的,但是其实在java源代码中例如ArrayList,LinkedLisk等这些类其实都是用数据结构的内容来实现的,所以我也准备用JAVA实现一遍这些数据结构的内容,但是在这之前把指针复习一下也是很有必要的,这之后写的代码我会上传到GITHUB上,供大家参考指点,第一次写博客,因为最近发现能把学习下来的东西积累一下也是很不错的,闲话不多
C语言中野指针总结
C语言野指针总结阅读目录: 1、野指针是什么? 2、野指针是如何产生的?有什么危害? 3、如何避免野指针? 4、NULL是什么
C 语言中fread()和fwrite()用法
C 语言中的fread 和fwrite 一般是成对出现的,它们一般用来读写一个字符,也可以用来读写一个字符串,还可以用来读取一组数据.用法: fread(指向数据的指针,数据块的大小,要读取的数据块数目,文件指针) e.g:fread(rp,size,n,fp) 如果读取成功,返回值应该为n rp指的是要读取的数据的首地址, size 是要读取的数据块的(字节数)大小, n表示要读取的数据块数目
C语言中字符串的三种表示方法
1.在C语言中,是将字符串作为字符数组来处理的,字符串是逐个存放到数组元素中的,例如用一个一维的字符数组存放字符串&quot;I am a boy.&quot;,如下代码:char c[11] = {'I','a','m','a','b','o','y','.'};这个字符串的实际长度与数组长度相等,实际工作中,人们关心的往往是字符串的有效长度而不是字符串的数组长度,常见的下面三种方式来测定字符串的实际长度:(1)在...
判断素数 is_prime()
1.donnot use this if x is very large or small int is_prime(int x) { int i; for(i = 2;i * i { if(x%i == 0) return 0; } return 1; } 2.better way int is_prime(int x) { int i,m; assert(x >=