C复习提纲 联系客服

发布时间 : 星期日 文章C复习提纲更新完毕开始阅读361223ff04a1b0717ed5dd05

{ int n;

scanf(\ printf(\ }

第三部分 习题汇编 一、判断题:

1.机器语言、汇编语言、高级语言程序都是计算机语言,但只有机器语言程序才是计算机可以直接执行的程序。

2.用汇编程序处理c语言的源程序,可以生成机器语言程序。 3.若main函数无返回值,定义函数main时可以缺省标识符“void”. 4.c的编译预处理行与其他c语句一样,均应以“;”结束。

5.一条c语句如果太长,可以从任何一处插入回车符,将其分别写在若干行上。 6.c的long类型数据可以表示任何整数。

7.c的double类型数据在其数值范围内可以表示任何实数。 8.c的任何类型数据在计算机内都是以二进制形式存储的。 9.任何变量都必须要声明其类型。

10.printf函数中的格式符“%c”只能用于输出字符类型数据。 11.按格式符“%d”输出float类型变量时,截断小数位取整后输出。 12.按格式符“%6.3f”输出i (i=123.45) 时,输出结果为123.450。 13.scanf函数中的格式符“%d”不能用于输入实数数据。 14.格式符“%f”不能用于输入 double类型数据。

15.当格式符中指定宽度时,从缓冲区中读入的字符数完全取决于所指定的宽度。 16.函数的所有参数或者都采用传值调用方式,或者都采用引用调用方式。 17.函数中不可以没有return语句。

18.传值调用的形参只有在被调用示才被创建(分配存储单元)。 19.传值调用时,实参不限于变量名,而可以是表达式。 20.被定义为前向调用的函数,不必再声明其函数原型。 21.函数f可以用f(f(x))形式调用,f是递归函数。 22.程序中不能用同一个函数名定义不同的函数。

23.c语言源程序文件经过编译、连接之后生成一个后缀为.exe的文件.() 24.c语言中以%o开头的数是八进制整数.()

25.在程序的运行过程中,符号常量的值是可以改变的.() 26.在c程序中,aph和aph代表认为是一条语句.() 27.一个复合语句在语法上被认为是一条语句.() 28.只能用while语句构成循环.() 29.不能用printf函数输出字符.()

30.c程序中各函数之间既允许直接递归调用也允许间接递归调用.() 31.在函数外部定义的变量称为全局变量.() 32.宏定义的命令行可以看作是一条c语句.() 二、填空题

1.根据所给条件,写出下列各题的输出结果。

(1)int i=234, j=567; 函数printf(\的输出结果是 。

(2)nt i=234; float x=-513.624; 函数printf(\的输出结果是 。

(3)float alfa=60, pi=3.1415926535626; 函数printf(\的输出结果是 。 (4)char ch=?$?; float x=153.45; 函数printf(\的输出结果是 。 (5)int d=27; 函数printf(\的输出结果是 。

(6)float x1=13.24, x2=-78.32; 函数printf(\的输出结果是 。 (7)设float x=2.5, y=4.7; int a=7; 表达式x+a%3*(int)(x+y)%2/4值为 。 (8)设int x=17, y=5; 执行语句x+=--x%--y后x的值为 。 (9)设int x=17, y=5; 执行语句x%=x++/--y后x的值为 。 (10)int a=7, b=6, c=5; 表达式 (a+b)>(c*c)&&b==c||c>b值为 。 (11)设int a=3, b=5, c=7; 表达式a>c||c>b!=0&&c==b+a值为 。 (12)判断变量a、b是否绝对值相等而符号相反的逻辑表达式为 。 (13)判断变量a、b中必有且只有一个为0的逻辑表达式为 。

(14)设 int b=5;求解赋值表达式a=5+(b+=6) 后表达式值、a、b的值依次是 。 (15)求解赋值表达式a=(b=10)%(c=6) 后表达式值、a、b、c的值依次是 。 (16)求解逗号表达式x=a=3,6*a后表达式值、x、a的值依次是 。 (17)若a=13、b=25、c=-17,表达式((y=(a

(18) 若s=?d?,执行语句s=(s>=?a?&&s<=?z?)?s-32:s; 后,字符变量s的值为 。 2.根据下列数学式,写出c的算术表达式。 (1) 。 (2) 。 (3) 。

3.按照要求写出下列c的表达式。

(1)数学式 (x+1) e 2 x 所对应的c算术表达式 。

(2)将double类型变量x的整数部分与y的小数部分相加的算术表达式 。 (3)将float类型变量y四舍五入至小数点后3位的表达式 。 (4)为变量s赋值:取变量x的符号,取变量y的绝对值 。 (5)条件“-5≤x≤3”所对应的c逻辑表达式 。

(6)a、b是字符变量,已知a的值为大写字母、b的值为小写字母,写出判断a、b是否为同一字母(不区分大小写)的逻辑表达式 。

(7)int类型变量a、b均为两位正整数,写出判断a的个位数等于b的十位数、b的个位数等于a的十位数的逻辑表达式 。

(8)计算变量a、b中较小值的条件表达式 。 (9)计算变量a、b、c中较小值的条件表达式 。

(10)若字符变量ch的值为大写字母,则重新赋值为对应的小写字母 。 4.根据所给题意填空题。

(1)求1~100的和,写作for(s=0, i=1; ; ++i) s+=i;

(2)执行程序段“y=1; x=5; while(x--); y++;”后,y的值为 。 (3)顺序输出26个大写英文字母的循环结构,写作: for( ) putchar(ch);

(4)输入若干个字符,以问号结束,同时输出这串字符(不包括问号),写作: while( !=???) putchar(ch);

(5)循环程序段“k=5; for(; k<0; k--);”执行后,k的值为 。 (6)定义函数时,若缺省函数类型标识符,函数类型为 。 (7)函数之间参数传递的方式有 和 。

(8)当参数采用引用调用方式传递时,实参必须是与形参同类型的 。 (9)参数采用值传递调用方式时,若实参与形参不同类型,c的处理是: (10)调用时形参值的改变对实参变量有副作用的参数传递方式是 。 (11)定义一个带参数的宏,若变量中的字符为大写字母,则转换为小写字母 (12)定义一个带参数的宏,将两个参数值交换 #define swap(a, b) {double t; }

(13)定义带参数的宏为 #define max(a, b) ((a)>(b)?(a)b)) (14)对表达式max(a, max(b, max(c, d)))作宏替换为: (15)未初始化的int类型数据,其各元素的值是 。

(16)初始化说没有被赋值的字符类型数组元素,它们的值为 。 (17)数组声明为“int a[6];”,数组元素a[1]是否又可以写作“*(a++)”? 原因是 。

(18)引用二维数组a第i行、第j列的元素(i、j为0表示第1行、第1列),可以写作: 或 。 (19)数组声明为“int a[6][6];”,表达式“*a+i”是指 、“*(a+i)”是指 、“**a”又是指 。

(20)数组声明为“float x[7][5];”若x[6][4]是内存中从x[0][0]数起的第35个元素,则x[4][4]是第 个元素。 (21)声明“char str1[20]= \后,使字符串str1为\的赋值表达式,应为 。 (22)将包括空格在内的6个字符串输入到字符数组a[6][20] 中,输入语句可以写作: (23)未初始化的int类型数据,其各元素的值是 。

(24)初始化说没有被赋值的字符类型数组元素,它们的值为 。 (25)数组声明为“int a[6];”,数组元素a[1]是否又可以写作“*(a++)”? 原因是 。

(26)引用二维数组a第i行、第j列的元素(i、j为0表示第1行、第1列),可以写作: 或 。 (27)数组声明为“int a[6][6];”,表达式“*a+i”是指 、“*(a+i)”是指 、“**a”又是指 。

(28)数组声明为“float x[7][5];”若x[6][4]是内存中从x[0][0]数起的第35个元素,则x[4][4]是第 个元素。 (29)声明“char str1[20]= \后,使字符串str1为\的赋值表达式,应为 。 (30)将包括空格在内的6个字符串输入到字符数组a[6][20] 中,输入语句可以写作: (31)fopen函数的返回值是 。

(32)文件打开方式为\,文件打开后,文件读写位置在 。 (33)文件打开方式为\,文件打开后,文件读写位置在 。 (34)表达式“fgetc(fpn)”的值为 或 。 (35)表达式“fgets(a, 10, fpn)”的值为 或 。 (36)函数fscanf的返回值为 或 。

(37)函数fread的返回值为所读入数据的个数或 。

(38)表达式“fscanf(fpn, \的值为-1时,函数feof()的值为 。 (39)函数f定义如下,计算写出f(f(4))的值是 。 int f(int x) { static int k=0; x+=k++; return x; }

三、单项选择题

1.程序中调用了库函数exit,必须包含头文件( )。 a、math.h b、string.h c、ctype.h d、stdlib.h

2.程序中调用了库函数strcmp,必须包含头文件( )。

a、math.h b、string.h c、ctype.h d、stdlib.h

3.下列宏定义命令中,哪一个格式示正确的( )。 a、#define pi=3.14159; b、define pi=3.14159 c、#define pi \、#define pi(3.14159);

4.定义带参数的宏计算两个表达式的乘积,下列定义中哪个是正确的( )。 a、#define muit(u, v) u*v b、#define muit(u, v) u*v ; c、#define muit(u, v) (u)*(v) d、#define muit(u, v)=(u)*(v)

5.宏定义为:#define div(a, b) a/b; 对语句“printf(\\\\5));”作宏替换后为( )。 a、printf(\、printf(\ c、printf(\、printf(\ 6.下列数组声明语句中,正确的是( )。 a、int a[]={1, 2, , 4, 5}; b、char a[5]={a, b, c, d, e}; c、int a[5]={1, 2}; d、char a[5]= \

7.数组声明语句为“int a[6];”,输入数组所有元素的语句应为( )。 a、scanf(\ b、for(int i=0; i<6; i++) scanf(\ c、for(int i=0; i<6; i++) scanf(\ d、for(int i=0; i<6; i++) scanf(\

8.数组声明语句为“float a[3][4];”,引用第3行第1列的元素写作( )。 a、**(a+2) b、*(*a+2) c、a[3][1] d、*(a[3]+1) 9.初始化多维数组的语句中,可以缺省的是( )。 a、最后一个下标界 b、第1个下标界 c、第2个下标界 d、以上都不是

10.数组声明为“int y[4][3];”,表达式“*(y+2)+2-*y”的值为( )。 a、10 b、20 c、16 d、8

11.数组声明为“char str1[20]= \,调用函数“strcat(str1, str2);”后,字符串str1的串长是( )。

a、13 b、14 c、6 d、7

12.表达式“strcmp(\的值为( )。 a、0 b、3 c、1 d、-3

13.下列语句定义px为指向int类型变量x的指针,其中哪一个是正确的( )。 a、int *px=x, x; b、int *px=&x, x; c、int x, *px=x; d、int *px, x; px=&x;

14.指针变量p1和p2类型相同,要使p1、p2指向同一个变量,哪一个语句是正确的( )。 a、p2=*&p1; b、p2=**p1; c、p2=&p1; d、p2=*p1;

15.声明语句为“char a=?%?, *b=&a, **c=&b;”,下列表达式中错误的是( )。 a、a==**c b、b==*c c、**c==?%? d、&a=*&b

16.数组定义为“int a[4][5];”,下列哪一个引用是错误的( )。 a、*a b、*(*(a+2)+3) c、&a[2][3] d、++a 17.表达式“c=*p++”的执行过程是( )。

a、复制*p的值给c后再执行p++ b、复制*p的值给c后再执行*p++ c、复制p的值给c后再执行p++ d、执行p++后将*p的值复制给c

18.声明语句为“char s[4][15], *p1, **p2; int x, *y;”下列语句中正确的是( )。 a、p2=s; b、y=*s; c、*p2=s; d、y=&x;