C语言for,while,ifelse,return语句的综合使用
- 格式:docx
- 大小:41.54 KB
- 文档页数:3
国家开放大学《C语言程序设计》章节测试参考答案第一章C语言概述自测练习一:C语言字符集自测练习1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。
(√)2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。
(√)3.在C语言程序中,ABC和abc被作为同一标识符使用。
(×)自测练习二:C语言字符集自测练习1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。
(√)2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。
(√)3.C语言中使用的字符常量,其起止标记符是()。
a. 双引号b. 尖括号c. 单引号d. 中括号4.C语言中使用的字符串常量,其起止标记符是()。
a. 双引号b. 中括号c. 尖括号d. 单引号自测练习三:C语句分类自测练习1.在C语言中,一条简单语句的结束符是()。
a. 分号b. 空格c. 冒号d. 逗号2.在C语言中,每条复合语句的开始标记字符为()。
a. <b. [c. (d. {3.不符合C语言规定的复合语句是()。
a. {x=0;}b. {}c. {;}d. {y=10}4.C语言中的选择类语句有两条,它们是()。
a. else和caseb. if和switchc. if和elsed. switch和case自测练习四:函数分类与使用自测练习1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。
a. nameb. mainc. MAINd. function2.C语言程序中的基本功能模块为()。
a. 标识符b. 函数c. 表达式d. 语句3.一个函数定义所包含的两个部分是()。
a. 函数头和函数体b. 函数原型和函数体c. 函数名和参数表d. 函数头和函数尾4.一个程序文件开始使用的每条预处理命令,其首字符必须是()。
a. #b. @c. %d. $5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。
所谓关键字也叫保留字,它是标识符的一种,标准规定它是编译器默认的某些类型,因此用户不可用它的一样的标识符去表示其他的东西。
标准C有32个关键字:一数据类型关键字 12 个:1 . char2 . short3 . int4 . long 5. enum 6. float 7. double 8.signed 9. unsigned 10. Struct 11. Union 12.void二控制类型关键字 12 个循环语句 1.for 2.do 3.while 4.break 5.continue条件语句 6.if 7.else 8.goto开关语句9.switch 10.case 11.default返回语句12.return三存储类型 4个1. auto //声明自动变量,一般不不用,局部变量默认都是auto型2.static //声明静态变量3.extern //声明一个外部变量4.register //声明寄存器变量四其他关键字 4个1.const //声明只读变量2.sizeof //运算符,计算数据占用内存3.typedef //自定义类型4.volatile //修改的变量可能改变注意,不要把 define ,include当做关键字,它们只是预编译伪指令。
C99标准又增加了5个关键字,分别是restrict 它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式inline 内敛函数,在C++中用的多,它是宏定义的一种优化实现方式_Bool unsigned int 型,在C99中被定义为布尔型,只可容纳0,1两个值_Complex复数类类型_Imaginary纯虚数类型C11 标准在C99的基础上又增加了一个关键字_Generic 泛型auto :声明自动变量break:跳出当前循环case:开关语句分支char :声明字符型变量或函数返回值类型const :声明只读变量continue:结束当前循环,开始下一轮循环default:开关语句中的“其它”分支do :循环语句的循环体double :声明双精度浮点型变量或函数返回值类型else :条件语句否定分支(与 if 连用)enum :声明枚举类型extern:声明变量或函数是在其它文件或本文件的其他位置定义float:声明浮点型变量或函数返回值类型for:一种循环语句goto:无条件跳转语句if:条件语句int:声明整型变量或函数long :声明长整型变量或函数返回值类型register:声明寄存器变量return :子程序返回语句(可以带参数,也可不带参数)short :声明短整型变量或函数signed:声明有符号类型变量或函数sizeof:计算数据类型或变量长度(即所占字节数)static :声明静态变量struct:声明结构体类型switch :用于开关语句typedef:用以给数据类型取别名unsigned:声明无符号类型变量或函数union:声明共用体类型void :声明函数无返回值或无参数,声明无类型指针volatile:说明变量在程序执行中可被隐含地改变while :循环语句的循环条件。
4月26号if (表达式){语句A;语句B;}此时if 可以控制语句A和语句B由此可见:if 默认只能控制一个语句的执行或不执行,如果想控制多个语句的执行或不执行就必须把这些语句用{}括起来If…..else用法If(表达式)//为真{};Else 表达式为假执行else里的语句{};格式If (1)A;else if (2)B;Else if (3)C;elseD;A,B,C比较大小如果A>B则A与C比较A>C 则输出A A<C 则输出C否则B于C比较B>C 则输出B B<C 则输出C我们的重点是看懂程序!遇到不懂得琢磨15分钟没结果,就看答案,最后记下了!看懂答案接下来不是敲而是改一下!如何看懂一个程序?1 流程2每个语句的功能3试数对一些小算法的程序1 尝试自己去编程解决它,大部分人无法解决2 如果解决不了,就看答案关键是把答案看懂,这个要花很大的精力,也是我们学习的重点3看懂之后尝试自己去修改程序,并且知道修改之后程序的不同输出结果的含义4照着答案去敲,5调试错误6不看答案,自己独立把答案敲出来过几天再敲几遍直到不假思索就能敲出! 7如果程序实在无法彻底理解,就把它背会!If(表达式1)A;else if (表达式2)B;else if(表达式3)C;elseD;即便表达式1和表达式2都成立,也只会执行A语句;If(表达式1)A;else if (表达式2)B;else if(表达式3)C;else (表达式4)D;这样写是不对的,正确的写法是要么去掉表达式4,要么在else后面加if 循环定义:某些代码会被重复执行分类:1for 、2while、3do…..while1格式For (1;2;3)语句A2执行的流程【重点】3范围的问题4举列1+2+3+、、、、、+1004月27号强制类型转换:格式(数据类型)(表达式)功能:把表达式的值强制转化为前面所执行的数据类型例子:(int)(4.5+2.2) 最终值=6浮点数的存储所带来的问题Float和double都不能保证可以精确的存储一个小数Float i= 99.9;Printf (“%f\n”,i); // 最终在vc++6.0中的输出结果是:99.900002举列:有一个浮点型变量x,如何判断x的值是否是零If(|x-0000001|<=0.000001) //x和一个非常小的值相减是ELSE不是为什么循环中的更新变量不能定义成浮点型多个for循环的嵌套使用For(1; 2;3) //1For (4;5;6) //2A; //3B; //4步骤:1—2—4—5—A—6—5—判断后执行3—执行2成立—4—5—A—6—5不成立—执行3—2不成立—执行B整体是两语句,1,2,3是第一个语句4是第二个语句For(1; 2;3)For (4;5;6){A;B;}整体是一个语句进制1什么叫N进制逢N进一2把R进制转成十进制(234C)转换成十六进制=2*16的3次方+3*16的2次方+4*16的一次方+C*16的0次方3十进制转成R进制十进制转换成二进制:除2取余,把余数倒过来(185)转换成二进制=10111001十进制转换成八进制:除8取余,把余数倒过来(185)转换成八进制=271十进制转换成十六进制:除16取余,把余数倒过来(3981)转换成16进制=F8D4不同进制所代表的数值之间的关系十进制的3981转换成16进制F8D十进制的3981和16进制F8D所代表的本质都是同一个补充:&&左边的表达式为假右边的表达式肯定不会执行|| 左边的表达式为真右边的表达式肯定不会执行赋值运算符= += *= /= —=优先级别:算术> 关系> 逻辑> 赋值自增、自减、三目运算符、逗号表达式自增分类;前自增++i后自增i++区别:相同点:都是最终I的值加一不同点:前自增整体表达式的值I加一之后的值后自增整体表达式的值I加一之前的值Int i=j=3K=i++;M=++j; 结果I=4,j=4;k=3;m=4;为什么会出现自增?代码更精炼、自增速度更快、i+=1;、i++学习自增要明白的几个问题1编程应该尽量屏蔽掉前自增和后自增的差别2 i++ 和++I 单独成一个语句,不要把他作为一个完整复合语句来使用如int m =( i++) +( ++i)+ i+ i++ //是错的3三木运算符格式:A? B: C 等价于If(A)B;ElseC;#include <stdio.h>int main(void){int i;i = (3>2? 5:1);printf("%d\n",i);return 0;} 结果是5逗号表达式:格式:(A, B, C,D)功能:从左到右执行最终表达式的值是最后一项的值While1执行的流程格式:While(表达式) //判断表达式真假真执行语句,假跳出语句;2于for 的相互比较For 可以和while相互转换For (1 ; 2; 3) 等价于1;A; while (2){A;3;}while 和for可以相互转化,但for的逻辑性更强,更不容易出错,推荐多使用for3举列丛键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no,回文数:正着写和倒着写都一样,比如:121、12321#include <stdio.h>int main(void){int val; //存放待判断的数字int m;int sum = 0;printf("请输入您需要判断的数字:");scanf("%d",&val);m = val; m = 121while (m) 1次m=121 成立sum=sum*10+m%10=1 { m=m/10=12sum = sum*10 +m%10; 2次m=12成立sum=sum*10+m%10=12m/=10; m=m/10=1} 3次m=1成立sum=sum*10+m%10=121if (sum ==val) m=m/10=0printf ("Yes!\n"); 4次m=0 不成立elseprintf("no!\n");return 0;} 输入121结果yes 输入123结果no4月28号F1=1,f2=2;int n; n=6If (n==1) 1次i=3; 3<6;成立{ f3= 1+2=3; f1=2;f2=f3=3; i=4;F1=1; 2次i=4;i<6成立} f3=2+3=5; f1=3f2=5; i=5;If(n==2) 3次i=5<6 成立{ f3=f1+f2=3+5=8;f1=f2=5;f2=f3=8;i=6F2=2; 4次i=6<=6成立} f3= f1+f2=5+8=13 f1=f2=8;f2=f3=13;i=7; Else{ 5次i=7<6不成立For(i=3;i<n;++i){F3=f1+f2;;F1=f2;F2=f3;}}Printf(“%d\n”,f3)4什么时候使用while,什么时候使用for没法说,用多了自然就知道了!Do…while格式: do{A}while(表达式)Do..while并不等价于for,当然也不等价while例子:一元二次方程89讲主要用于人机交互Switch(val){Case 1: printf(“1层开!\n”); break;Case2: printf(“2层开!\n”); break;Case3: printf(“3层开!\n”); break;Default: printf(“没有盖到这一层!\n”); break;}Switch (表达式){Case 常量表达式1:语句1;break;Case 常量表达式2:语句2;break;Case 常量表达式2:语句3;break;Default:语句4 break;}第一、所有case后面的常量表达式为便于描述我们姑姐称为标签,这些标签都只能是(1)枚举常量(有些书称之为枚举元素)(2)数值常量(3)字符常量(4)常变量(5)宏名中的一种,注意普通变量,枚举变量是不能作为标签使用的第二,执行完一个CASE语句后,流程控制就转移到下一个CASE语句执行CASE 常量表达式只是起语句标号的作用,并不是在该处进行条件判断。
第一个关键字:auto用来声明自动变量。
可以显式的声明变量为自动变量。
只要不是声明在所有函数之前的变量,即使没加auto关键字,也默认为自动变量。
并且只在声明它的函数内有效。
而且当使用完毕后,它的值会自动还原为最初所赋的值。
自动变量使用时要先赋值,因为其中包含的是未知的值。
例:auto int name=1;第二个关键字:static用来声明静态变量。
可以显式的声明变量为静态变量。
也为局部变量。
只在声明它的函数内有效。
它的生命周期从程序开始起一直到程序结束。
而且即使使用完毕后,它的值仍旧不还原。
即使没有给静态变量赋值,它也会自动初始化为0.例:static int name=1.第三个关键字:extern用来声明全局变量。
同时声明在main函数之前的变量也叫全局变量。
它可以在程序的任何地方使用。
程序运行期间它是一直存在的。
全局变量也会初始化为0.例:extern int name;第四个关键字:register用来声明为寄存器变量。
也为局部变量,只在声明它的函数内有效。
它是保存在寄存器之中的。
速度要快很多。
对于需要频繁使用的变量使用它来声明会提高程序运行速度。
例:register int name=1;第五个关键字:int用来声明变量的类型。
int为整型。
注意在16位和32位系统中它的范围是不同的。
16位中占用2个字节。
32位中占用4个字节。
还可以显式的声明为无符号或有符号:unsigned int signed int .有符号和无符号的区别就是把符号位也当作数字位来存储。
也可用short和long来声明为短整型,或长整行。
例:int num;第六个关键字:float用来声明变量的类型。
float为浮点型,也叫实型。
它的范围固定为4个字节。
其中6位为小数位。
其他为整数位。
例:float name;第七个关键字:double用来声明为双精度类型。
它的范围为8个字节。
14位为小数位。
也可使用更高精度的long double 它的范围则更大,达到10字节。
C 语言条件表达式C 语言条件表达式是一种用于判断某个条件是否成立的表达式,它由一个或多个变量、常量、运算符和函数组成,其结果是一个布尔值(真或假)。
C 语言条件表达式可以用于控制程序的流程,例如 if 语句、switch 语句、while 循环、for 循环等。
本文将介绍 C 语言条件表达式的基本概念、语法规则、常用运算符和函数,以及一些实例和注意事项。
基本概念C 语言中,任何非零和非空的值都被认为是 true(真),而零或 null 值都被认为是 false(假)。
因此,C 语言条件表达式的结果只有两种可能:true 或 false。
例如:int a =10;int b =20;(a > b) // 这是一个条件表达式,其结果是 false(a == b) // 这也是一个条件表达式,其结果是 false(a < b) // 这还是一个条件表达式,其结果是 trueC 语言条件表达式可以由多个子表达式组合而成,这时需要用到逻辑运算符(&&、|| 和 !)来连接子表达式,并按照优先级和结合性进行求值。
例如:int a =10;int b =20;int c =30;(a > b) && (b > c) // 这是一个由两个子表达式组成的条件表达式,其结果是 false(a < b) || (b < c) // 这也是一个由两个子表达式组成的条件表达式,其结果是 true!(a == b) // 这还是一个由一个子表达式组成的条件表达式,其结果是 trueC 语言条件表达式可以用于控制程序的流程,根据条件表达式的结果来决定执行哪些语句。
常见的流程控制语句有以下几种:if 语句:如果条件表达式为 true,则执行 if 块内的语句,否则跳过 if 块。
if...else 语句:如果条件表达式为 true,则执行 if 块内的语句,否则执行 else 块内的语句。
国开C语言程序设计形考任务2二、简答题(共30分,每小题10分)题目1请简述for循环语句的语法和用法。
答:for循环语句的语法为:for (初始化表达式。
条件表达式。
更新表达式) 循环体语句。
其中,初始化表达式在循环开始前执行一次,用于初始化循环变量;条件表达式在每次循环开始前进行判断,若为真则执行循环体语句,否则循环结束;更新表达式在每次循环结束后执行,用于更新循环变量。
for循环语句通常用于已知循环次数的情况下进行循环操作。
题目2请简述switch语句的语法和用法。
答:switch语句的语法为:switch (表达式) { case 常量1:语句1.break。
case 常量2: 语句2.break。
default: 语句n。
}。
其中,表达式的值会依次与各个常量进行比较,若匹配则执行对应的语句,并在语句末尾加上break语句跳出switch语句;若都不匹配则执行default语句。
switch语句通常用于多分支的情况下进行选择操作。
题目3请简述数组的定义和使用方法。
答:数组是一种存储多个同类型数据的数据结构。
数组的定义方式为:类型名数组名[元素个数] = {元素1.元素2.}。
其中,元素个数可以省略,但初始化时必须指定元素个数或者用{}进行初始化。
数组的使用方法为通过下标访问数组元素,下标从0开始,即数组名[0]表示第一个元素。
可以使用循环结构对数组进行遍历和操作。
C语言中,变量名可以以数字开头。
选择一项:错对错题目29在C语言中,可以使用“++”运算符对一个常量进行自增运算。
选择一项:错对错题目30在C语言中,可以使用“&”运算符获取一个变量的地址。
选择一项:对对错改写后的文章:第一部分:阅读理解(共40分,每小题2分)1.C语言中,下列哪个不是C语言的关键字?A.whileB.intC.doubleD.else答案:C2.下列哪个不是C语言的数据类型?A.charB.stringC.intD.float答案:B3.下列哪个符号不是C语言中的运算符?A.+B.-C.%D.&答案:C4.下列哪个不是C语言中的流程控制语句?A.whileB.switchC.XXXD.try答案:D第二部分:文章改错(共40分,每小题2分)已删除明显有问题的段落,剩下的段落已进行小幅度改写)C语言中,关键字是指在C语言中具有特定含义和作用的单词。