北京化工大学C语言复习题.doc_第1页
北京化工大学C语言复习题.doc_第2页
北京化工大学C语言复习题.doc_第3页
北京化工大学C语言复习题.doc_第4页
北京化工大学C语言复习题.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言期末总复习 参考试卷一、选择题(共22分)1下列变量名中合法的是_ 。A) B.C.Tom B)3a6b C)_6a7b D) $ABC2.C程序的执行是从_开始执行A)第一条语句 B)主函数 C)命令行 D)第一个出现的函数3已知ch是字符型变量,下面不正确的赋值语句是_。A)cha+b; B)ch0; C)ch7+9; D)ch5+9;4. 与语句 while(x);等价的语句是_。A) while(x=0); B) while(x!=0); C) while(x!=1); D) while(x);5. 已知 int i;float f;下列语句正确的是_。A)(int f)%i B) int(f)%i C) int(f%i) D) (int)f%i6若int a10=1,2,3,4,5,6,7,8,9,10,*p=a;,则数值为6的表达式为_ 。A) *(p+6) B)*p+6 C)*p+=5 D)p+67.以下为一维整型数组a的正确说明是_. A)int a(10); B)int n=10,an; C)int n; D)#define SIZE 10 scanf(%d,&n); int aSIZE; int an;8.温度华氏和摄氏的关系是: C=5/9(F-32)。已知:float C,F;由华氏求摄氏的正确的赋值表达式是_。A)C=5/9(F-32) B)C=5*(F-32)/9 C)C=5/9*(F-32) D)三个表达式都正确9若有以下说明和语句:struct worker int no;char *name;work, *p=&work;则以下引用方法不正确的是_。A) work.no B)(*p).no C)p-no D)work-no10为了判断两个字符串s1和s2是否相等,应当使用_。A)if(s1=s2) B)if(s1=s2) C)if(strcpy(s1,s2) D)if (strcmp(s1,s2)11下述程序的输出是_。main( ) char c=A; if(0= c =9) printf(YES); else printf(NO);A) YES B) NO C) YESNO D) 语句错误二、读程序写结果(共18分)1下面程序段的运行结果是_. int n=0; while(n+=2); printf(%d,n);2下面程序的运行结果是_.#includevoid main() int a=15,b=21,m=0;switch(a%3) case 0:m+;break;case 1:m+;switch(b%2) default:m+;case 0:m+;break;printf(%dn,m);3下面程序的运行结果是_。#include void main() int x=10,y=20,t=0;if(x=y)t=x;x=y;y=t;printf(“%d,%d n”,x,y);4下面程序的运行结果是_。#includevoid main() int i,j,p,s;s=0;for(i=1;i=4;i+) p=1;for(j=1;j=i;j+)p=p*j;s=s+p;printf(“s=%dn”,s);5下面程序的运行结果是_。#include #includevoid main() char *p=“abcdefg0hjik0”;printf(“%dn”,strlen(p);6下面程序的运行结果是_。#includeint Fun(int x) static int y = 0;y += x;return y;void main() int x = 10, y = 0, k;for(k=0; k2; k+) y = Fun(x);printf(y = %dn, y); 三、程序填空(共14分)1下面程序可求出矩阵a的主对角线上的元素之和。#includevoid main() int a33=1,3,5,7,9,11,13,15,17,sum=0,i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(i=j)sum=sum+ A; printf(sum=%dn,sum);2. 下面程序用于求含有50个元素的一维数组中的最小值及负数的个数;其中一维数组中的每个元素是由公式yj=600*sin(j*0.16)得到的。#include void main( ) float y50,min; int j,num=0; void fun(float y50,float *min,int *num);for(j=0;j50;j+) yj=600*sin(j*0.16); A; printf(“min=%f, The number of negative is=%d”,min,num);void fun(float y50,float *min,int *num) int j;*min=y0; for(j=0;jyj)B; if(yj0)C; 3. 下面的程序对用户输入的一串字符进行处理,统计出其中小写字母字符的个数。#include void main() char s100; int letter=0,i=0; printf(please input some charactersn);A; while( B) if(C) letter+; i+; ; printf(letter num=%d”,letter);四、改写程序(3分) 1该程序的功能是根据键盘输入的学生考试分数,判断学生是否通过考试。(60分以上为通过) #includevoid main() int s; scanf(%d,&s); if(s=60) printf(通过考试); else printf(没有通过考试) ;请用条件运算符 ? :判断结构改写程序中的if else 判断结构。答案:一、选择题:CBABD CDBDD A1.C只能有字母、数字、下划线,但是第一个字符不可是数字2.B3.A中只能是一个字符,a+b不可以0是转义字符,可以数字是可以的(实际上就是输入了对应字符的ASCII码,char和int是近亲)4.B(D中是位运算符号,40学时中没讲到)5.D%两侧必须是整数,注意强制转换符,括号的位置6.C数组下标从0开始7.D数组在定义的时候,中括号里必须是常量,不能是变量,否则系统不知道在定义的时候应该给这个数组多少存储空间;但是#define是符号常量,也是常量,可以。8.B乘号不可以省略,主页君编程的时候经常忘记乘号;5/9在C语言中得0;5.0/9就不是0了。9.D结构体引用的三种方式:(假设有一个结构体work 有一个指针p指向work)work.no(*p).nop-no第三种,左边必须是一个指针项,不可以是常项,所以错;10.D字符串不可以直接比大小 要使用strcmp函数11.A0=c=9:先计算0=c,得1;再计算1=9,得1;所以输出YES如果要实现数学上的“区间”概念,应该改写成0=c&c=9注意,一旦出现|和&运算符,要考虑这两个符号的“短路问题”即:如果|的左边非零,|一定成立,右边的就不做了,即使右边有赋值,+符号等也不做了。如果&左边为零,%一定不成立,右边也就不做了,同上。二、读程序写结果1.答案:4注意:(1)while后面执行的是空语句;(2)n+的意义是:先把n拿出来用,参与运算,运算完了之后n再+最后一次循环,也就是n等于3的时候,n+=2是先判断n=a&si=60?printf(“通过考试”):printf(“没有通过考试”);最后,主页君友情提示:(1)写输出结果的时候,一定看看printf中除了你的得数,有没有别的符号,例如s= 或者逗号、回车之类的东西,一块写出来;(2)填语句的时候,看看原来有没有分号,如果没有的话一定要填上,有的话就不要再填上。理论上说,多一个分号,少一个分号,代表的含义完全不一样C语言程序的基本结构C程序由函数组成,函数是程序的基本单位。/*程序从main()函数开始执行;文件包含预处理命令:#include“文件名”或#include,将存有库函数的.h头文件包含到编辑中的程序中,可视为在主函数前自定义一堆子函数(当然是程序员定义的,咱即使能根据函数原型声明使用,但也暂时不懂在主函数后头定义啊);*/函数由函数首部和函数体两部分组成。/*voidmain()就是函数首部,void表示函数无返回值,忽略了形参表;函数定义为:返回类型名函数名(形参表),形参表格式:形参数据类型形参名,多个形参用上述格式的逗号分隔式罗列;*/函数体一般包括数据定义部分和执行部分,它们都是C语句。/*符号常量定义格式为:#define符号常量常量,是个编译预处理命令,用符号代替常量的值;变量定义格式为:数据类型变量名表;,多个变量名用逗号分隔式罗列于变量名表中;*/每条语句用分号“;”作结束符,分号是C语句必不可少的组成部分。在C语言中,一行可以写多条语句,一条语句也可写成几行。可以对C程序中的任何部分做注释。/*如同本文行文风格;“/*”和“*/”为注释的开始和结束;可注释说明程序语句意义或调试程序时括住某些语句达到不同目的等;*/C语言的字符集C语言的字符集由字母、数字、空白符、标点和特殊字符组成。在字符常量、字符串常量和注释中还可以使用汉字或其他可显示的图形符号。/*详见P5;*/C语言的词法符号C语言的词法符号分为以下几类:关键字、标识符、运算符、分隔符、常量和注释符。/*C语言规定,标识符是英文字母或下划线开始的,英文字母、下划线及阿拉伯数字组成的字符串。标识符不许与关键字相同,大小写有别,应尽量见名知意;详见P6*/运行C程序的步骤编辑,编译,连接,执行。/*C源程序经过编译和连接步骤才能生成可执行文件;*/数据类型之基本类型整型数据包括整型常量和整型变量。整型变量定义格式为:整型类型变量名表;,常用的整型类型有int型。/*一般int型就够用了,详见P15;*/实型数据包括实型常量和实型变量。实型变量定义格式为:实型类型变量名表;,常用的实型类型有float型和double型。/*指数形式:aEn,等价于a*10n,详见P16;*/字符型数据包括字符常量和字符变量。字符变量定义格式为:char变量名表;。/*转义字符为字符常量,常用转义字符n为换行命令,详见P17;*/变量赋初值格式:类型说明符变量1=值1,变量2=值2,;。/*根据实际需要使用,对在程序开始就要赋值的情况下省事好多;*/运算符与表达式算术运算符与算术表达式;赋值运算符与赋值表达式:变量=表达式;逗号运算符和逗号表达式:表达式1,表达式2,表达式n。/*基本算术运算与数学表达式相同但乘号“*”不可省略,“/”整除为向下取整而非四舍五入,“%”为求余运算符,自增自减运算符置于变量左边先自增自减再参与其他运算,置右反之;逗号表达式自左至右执行,最末一条表达式的值为逗号表达式的值;详见P18-P20*/各类数值型数据间的混合运算自动类型转换包括非符值运算的类型转换和赋值运算的类型转换;强制类型转换格式:(数据类型名)表达式。/*一般在赋值运算的类型转换会有误差,编译有警告,你若容不下一个警告,可以用强制类型转换解决之;详见P21*/数据的输入输出标准字符输出函数格式:putchar(c)。标准字符输入函数格式:getchar()。格式输出函数格式:printf(”格式控制字符串”,输出列表),其中格式字符串格式为:%附加格式说明符格式字符。格式输入函数格式:scanf(”格式控制字符串”,地址列表),其中格式字符串格式为:%附加格式说明符格式字符。/*其中%d常用于int型数据输出输入,%f常用于float型数据输出输入,%lf常用于double型数据输出输入,附加格式说明符m.n表示以m位总长n位小数的数据格式输出不可用此格式输入,附加格式说明符可缺省;普通变量地址列表格式:&a,其中&为取址符;这些函数需要使用预处理命令#include命令将头文件stdio.h包含到用户源程序中;*/顺序结构程序设计C语言的语句可分为以下5类:表达式语句、函数调用语句、控制语句、空语句和复合语句。/*符号常量、变量、函数等遵循先定义后使用原则;详见P25*/分支结构程序设计关系运算和逻辑运算。/*一般用于条件判断;“=”才是等于号,但只是用来判断真假,“=”号是赋值号,右边算出来是多少就用它替代左边变量的值;运算式从左到右算,最后得到非0值为真,0值为假;逻辑运算符:“&”与,“|”或,“!”非,遵循数学运算规则;详见P30-P31*/If语句:if-else分支结构一般形式:if(表达式)语句1;else语句2;if分支结构一般形式:if(表达式)语句1;if语句的嵌套:if(表达式1)if(表达式2)语句1;else语句2;elseif(表达式3)语句3;else语句4;if-elseif分支结构一般形式:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式n-1)语句n-1;else语句n;条件运算符及条件表达式:表达式1?表达式2;表达式3;/*上述所说语句皆表示一条语句,若分支有多条语句当用大括号组成复合语句,系统视之为一条语句;一个else总是与其上面距它最近的,并且没有其他else与其配对的if相配对,而不能单独使用;条件表达式先判断表达式1,为真执行表达式2,为假执行表达式3;关于嵌套,个人经验学课本例题那样多打回车,系统常常帮读者分层次,当然读者也得留心*/Switch语句:switch分支语句的一般形式为:switch(表达式e)case常量表达式c1:语句1;break;case常量表达式c2:语句2;break;case常量表达式cn:语句n;break;default:语句n+1;break;/*此语句中,遇到break或者执行到底才跳出该switch语句,为免错误执行,还是要在适当的地方添加break语句;根据个人经验,此switch语句中执行到break语句后只跳出switch语句,当switch语句嵌套在循环内时,循环仍旧依循环条件执行而不退出;*/循环结构程序设计while语句的一般形式:while(表达式)循环体语句;do-while语句一般形式:do循环体语句;while(表达式);for语句一般形式:for(表达式1;表达式2;表达式3)循环体语句;break语句一般形式:break;continue语句一般形式:continue;goto语句一般格式:语句标号:可执行语句;goto语句标号;/*while语句与do-while语句括号内表达式为循环条件表达式,非0时执行循环体语句,否则退出循环,执行下面的语句;for语句中表达式1用于循环变量赋初值,表达式2用于循环条件判断,表达式3用于改变循环变量的值;break语句用于跳出循环体,执行循环后面的语句;continue语句用于结束本次循环,直接执行下一次的循环条件判断;goto语句用于自动跳转到指定语句,有时会破坏程序结构,不倡导使用,但在特定情况下能带来方便;注意防止死循环,嵌套注意层次,循环不能交叉*/数组一维数组:一维数组的定义:类型名数组名常量表达式;,一维数组的引用:数组名下标,一维数组的初始化:类型说明符数组名整型常量表达式=初始化列表;二维数组:二维数组的定义:类型名数组名常量表达式1常量表达式2;,二维数组的引用:数组名行下标列下标,二维数组的初始化:分行初始化:类型名数组名常量表达式1常量表达式2=第0行元素初值表,第1元素初值表;,按序初始化:类型名数组名常量表达式1常量表达式2=初值表;字符数组:一维字符数组的定义:char数组名常量表达式;,字符数组的初始化:char数组名数组长度=字符初值表;,一维字符数组的引用:数组名下标。用字符串初始化字符数组:char数组名数组长度=字符串常量;字符串处理函数:字符串输入函数:gets(字符数组名);,字符串输出函数:puts(字符数组名);,字符串连接函数:strcat(字符数组1,字符数组2);,字符串复制函数:strcpy(字符数组1,字符串2);,字符串比较函数:strcmp(字符串1,字符串2);,检测字符串长度函数:strlen(字符串);,字符串小写函数:strlwr(字符串);,字符串大写函数:strupr(字符串);。/*数组可视为类型相同的一串变量,方便循环求算,循环赋值;字符串数组结束标志是0;特别的,使用scanf函数以%s格式输入字符串给字符数组时,字符数组名前无取地址符号&;字符串处理函数作用详见P84-P87*/函数函数的定义:返回类型名函数名(行参表)语句,函数声明:返回类型名函数名(行参表);,函数的调用:函数名(实参表);,return语句:return表达式;或return(表达式);。函数如果直接或间接地调用自身则构成了递归函数,构成递归程序重点要做好确定问题的形式、找到递归规则以及确定问题结束条件三个要素。值传递:函数行参的数据类型为简单数据类型,在调用函数时,会将实参的具体数值传递给被调函数,被调函数利用行参接收这些数据的副本,进行使用。值传递的特点是,被调函数中对行参的任何操作都是对主调函数中的对应实参数据副本的操作,对原数据不造成任何影响。地址传递:函数行参的数据类型为地址类型,如数组类型,在调用此类函数时,行参变量接收到的是主调函数中某变量的地址,从而使得行参变量拥有了对主调函数中该变量的访问权,既包含读也包含写的权利,从而可以在自定义函数中通过行参变量对主调函数相应的变量进行访问和修改。变量同名使用规则:如果一个作用域与其所包含的子作用域内都定义了相同的变量,则在子作用域中定义的变量将屏蔽子作用域外部的同名变量;相互独立的两个作用域中的同名变量互不干扰。变量含存储类型的定义:存储类型数据类型标识符;。变量的存储类型包括:(默认)自动型(auto),寄存器型(register),外部型(extern),静态型(static)。函数的存储类型包括:外部型(extern),静态型(static)。/*函数的定义不能嵌套;调用函数时,主调函数的实参将值传递给被调函数的形参,运算完毕由return语句为有返回值函数返回一个值给主调函数;函数的调用可以嵌套;自定义函数定义在主函数后时,需要在使用该自定义函数前声明;以数组作为函数参数时为地址传递,调用函数时行参表只填写数组名而无需中括号及下标,以数组元素为函数参数时为值传递,需将数组元素名完整填入行参表中;程序的多文件组织中,调用自定义文件函数时,编译预处理命令为#include“文件名”,祥见P109;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论