assert用法(C语言),assert用法c语言
本作品内容为assert用法(C语言),格式为 docx ,大小 20105 KB ,页数为 9页
('assert宏的原型定义在中,其作用是如果它的.条件返回错误,则终止程序执行,原型定义:#includevoidassert(intexpression);assert的作用是现计算表达式expression,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用abort来终止程序运行。请看下面的程序清单badptr.c:复制代码代码如下:#includeintmain(void){FILEfp;fp=fopen("test.txt","w");//以可写的方式打开一个文件,如果不存在就创建一个同名文件assert(fp);//所以这里不会出错fclose(fp);fp=fopen("noexitfile.txt","r");//以只读的方式打开一个文件,如果不存在就打开文件失败assert(fp);//所以这里出错fclose(fp);//程序永远都执行不到这里来return0;}宏名:assert功能:测试一个条件并可能使程序终止用法:voidassert(inttest);程序例:复制代码代码如下:#includestructITEM{intkey;intvalue;};/additemtolist,makesurelistisnotnullvoidadditem(structITEMitemptr){assert(itemptr!=NULL);/additemtolist}intmain(void){additem(NULL);return0;}assert()宏用法注意:assert是宏,而不是函数。在C的assert.h头文件中。assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:复制代码代码如下:#includevoidassert(intexpression);assert的作用是先计算表达式expression,如果其值为假(即为0),那么它先向标准错误流stderr打印一条出错信息,然后通过调用abort来终止程序运行;否则,assert()无任何作用。宏assert()一般用于确认程序的正常操作,其中表达式构造无错时才为真值。完成调试后,不必从源代码中删除assert()语句,因为宏NDEBUG有定义时,宏assert()的定义为空。用C语言区分旅客的国籍在一个旅馆中住着六个不同国籍的人,他们分别来自美国、德国、英国、法国、俄罗斯和意大利。他们的名字叫A、B、C、D、E和F。名字的顺序与上面的国籍不一定是相互对应的。现在已知:1)A美国人是医生。2)E和俄罗斯人是技师。3)C和德国人是技师。4)B和F曾经当过兵,而德国人从未参过军。5)法国人比A年龄大;意大利人比C年龄大。6)B同美国人下周要去西安旅行,而C同法国人下周要去杭州度假。试问由上述已知条件,A、B、C、D、E和F各是哪国人?问题分析与算法设计首先进行题目分析,尽可能利用已知条件,确定谁不是哪国人。由:1)2)3)可知:A不是美国人,E不是俄罗斯人,C不是德国人。另外因为A与德国人的\'职业不同,E与美、德人的职业不同,C与美、俄人的职业不同,故A不是俄罗斯人或德国人,E不是美国人或德国人,C不是美国人或俄罗斯人。由4)和5)可知B和F不是德国人,A不是法国人,C不是意大利人。由6)可知B不是美国人,也不是法国人(因B与法国人下周的旅行地点不同);C不是法国人。将以上结果汇总可以得到下列条件矩阵:.美(医生)英法德(技师)意大利俄(教师)A(医生)X.XX.XBX.XX..C(技师)X.XXXXD......E(教师)X..X.XF...X..根据此表使用消元法进行求解,可以方便地得到问题的答案。将条件矩阵输入计算机,用程序实现消去算法是很容易的。程序说明与注释#includecharm[7]={"","U.S","U.K","FRANCE","GER","ITALI","EUSSIAN"};/国名/intmain(){inta[7][7],i,j,t,e,x,y;for(i=0;i<7;i++)/初始化条件矩阵/for(j=0;j<7;j++)/行为人,列为国家,元素的值表示某人是该国人/a[i][j]=j;for(i=1;i<7;i++)/条件矩阵每一列的第0号元素作为该列数据处理的标记/a[0][i]=1;/标记该列尚未处理/a[1][1]=a[2][1]=a[3][1]=a[5][1]=0;/输入条件矩阵中的各种条件/a[1][3]=a[2][3]=a[3][3]=0;/0表示不是该国的人/a[1][4]=a[2][4]=a[3][4]=a[5][4]=a[6][4]=0;a[3][5]=0;a[1][6]=a[3][6]=a[5][6]=0;while(a[0][1]+a[0][2]+a[0][3]+a[0][4]+a[0][5]+a[0][6]>0){/当所有六列均处理完毕后退出循环/for(i=1;i<7;i++)/i:列坐标/if(a[0][i])/若该列尚未处理,则进行处理/{for(e=0,j=1;j<7;j++)/j:行坐标e:该列中非0元素计数器/if(a[j][i]){x=j;y=i;e++;}if(e==1)/若该列只有一个元素为非零,则进行消去操作/{for(t=1;t<7;t++)if(t!=i)a[x][t]=0;/将非零元素所在的行的其它元素置0/a[0][y]=0;/设置该列已处理完毕的标记/}}}for(i=1;i<7;i++)/输出推理结果/{printf("%ciscomingfrom",A-1+i);for(j=1;j<7;j++)if(a[i][j]!=0){printf("%s.",m[a[i][j>);break;}}}运行结果AiscomingfromITALY.(意大利人)BiscomingfromEUSSIAN.(俄罗斯人)CiscomingfromU.K..(英国人)DiscomingfromGER.(德国人)EiscomingfromFRANCE.(法国人)FiscomingfromU.S..(美国人)问题的进一步讨论生成条件矩阵然后使用消去法进行推理判断是一种常用的方法。对于解决较为复杂的逻辑问题是十分有效的。思考题地理课上老师给出一张没有说明省份的中国地图,从中选出五个省从1到5编号,要大家写出省份的名称。交卷后五位同学每人只答了二个省份的名称如下,且每人只答对了一个省,问正确答案是什么?A答:2号陕西,5号甘肃B答:2号湖北,4号山东C答:1号山东,5号吉林D答:3号湖北,4号吉林E答:2号甘肃,3号陕西C语言编译器gcc命令如何操作步骤C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。Linux系统中最重要的软件开发工具是gcc,在Linux系统中,c89、cc和gcc这些命令基本上都指向系统的C语言编译器,通常是GNUC编译器,或都简称gcc。在UNIX系统中,C语言编译器称为cc。实际上,gcc能够编译三种语言:C、C++和ObjectC(C语言的一种面向对象扩展)。利用gcc命令可同时编译并连接C和C++源程序,一般来说,C编译器通过源文件的后缀名来判断是C程序还是C++程序。在Linux中,C源文件的后缀名为.c,而C++源文件的后缀名为.C或.cpp。对于C++程序,gcc命令只能编译C++源文件,而不能自动和C++程序使用的库连接。因此,通常可以使用g++命令来完成C++程序的编译和连接,该程序会自动调用gcc实现编译。本人一直都是在Linux系统编译C程序的,就gcc命令行的作用记录下来。首先通过编写、编译和运行一个HelloWorld程序实例开始一、源代码/hello.c#include#includeintmain(void){printf("HelloWorld!");return0;}二、编译、链接和运行程序#gcc-ohellohello.c#./helloHelloWorld!#命令选项的\'作用:1.-oPlacetheoutputinto如:#gcc-ofilefile.c-o告诉编译器将可执行程序放在何处,如果没有指定文件名称,编译器则会把程序放在一个名为a.out的文件里(a.out的含义是assembleroutput,即汇编输出)。2.-cCompileandassemble,butdonotlink如:#gcc-cfile.c-c告诉编译器仅把源代码编译为目标模块(file.o)而跳过汇编和连接的步骤。在使用-c生成目标模块后,就可以通过-o选项来生成可执行文件。如:#gcc-ofilefile1.ofile2.o可以是多个目标模块。3.-l和-L指示编译器程序要链接的库。其中-L要增加库的搜索路径。如:hello.so动态库放在/usr/cprimer目录下,那就是-L/user/cprimer4.-O如:#gccfile.c-O2,用来优化程序用的。优化程序,执行速度可能也有所提高,从未真正测试过。5.-include-include告诉编译器需要包含头文件,但一般情况下包含头文件都在源码里用#includexxxxxx实现,一般很少用这个选项。',)
提供assert用法(C语言),assert用法c语言会员下载,编号:1700759234,格式为 docx,文件大小为9页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。