大学C++复习题
- 格式:doc
- 大小:90.00 KB
- 文档页数:10
综合练习一、判断题1.在Trubo_C中运行一个C程序时,实际上是运行后缀为.EXE的可执行文件。
2.在C语言中整数可用十进制数、八进制数和二进制数三种数制表示。
3.在程序的运行过程中,整型常量的值是可以改变的。
4. C程序中,用/* 和 */界定的部分称之为注释,注释部分对程序的运行不起作用。
5.大括弧 { } 只能用来括复合语句。
6. do_while语句构成的循环不能用其它循环语句来代替。
7.不能用scanf 函数输入字符。
8.在 C 程序中,函数的定义不可以嵌套,但函数的调用可以嵌套。
9. 一个变量的作用域取决于变量定义语句在程序中出现的位置。
10.C 语言的一个编译预处理命令用 # 开始,最后加分号。
11. C语言源程序文件经过编译、连接之后生成一个后缀为.EXE的文件。
12. C语言中以 %o开头的数是八进制整数。
13.在程序的运行过程中,符号常量的值是可以改变的。
14.在 C 程序中,APH 和 aph 代表不同的变量。
15.一个复合语句在语法上被认为是一条语句。
16. 只能用while语句构成循环。
17.不能用printf函数输出字符。
18. C程序中各函数之间既允许直接递归调用也允许间接递归调用。
19. 在函数外部定义的变量称为全局变量。
20.宏定义的命令行可以看作是一条C 语句。
21. C语言源程序是可以用来直接运行的程序。
22. C语言中以 %x 开头的数是十六进制整数。
23. C程序中定义的变量,代表内存中的一个存储单元。
24.在 C 程序中,9ab是非法的用户标识符。
25. C语句必须用一个分号作为结束。
26. do_while语句构成的循环不能用break语句退出。
27. scanf 函数是 c 语言的标准输入函数。
28. C程序的main函数不能有参数。
29. 在函数内部定义的变量称为局部变量。
30.用#include包含的头文件的后缀必须是.h。
31. C 语言程序的三种基本结构是顺序结构、选择结构和循环结构。
中南大学现代远程教育课程考试复习试题及参考答案C语言程序设计一、单项选择题若以下各题所有库函数都可以合法使用,且变量定义如下:int m=5, i=3,j=2,*p, a=8,b=0;int arr[10]={0,1,2,3,4,5,6,7,8,9},td[ ][3]={1,2,3,4,5,6};float x=2.5,y=3.0;double z=0; long n=1;char c=’A’,ch[20]={’a’,’b’,’c’,’\0’,’d’,’\0’};struct student{ int num;char name[20];float score;struct student *next;}st1,st2,*ps;FILE *fp;1.若将3和10从键盘输入给变量a、x,输入语句为scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(↙表回车):A a=3,x=10↙B 3,10↙C 3 10↙D 3,10.0↙2. 以下不是死循环的语句是:A for ( ;;y+=i++);B while(a) y+=i++ ;C do{ y+=i++}while (a>0);D for (b=0;(c=getchar()!=’\n’);)b++;3.若p=arr;正确的语句是:A *p=arr[10];B *p=arr[2*a];C p=arr[5];D p[i]=arr[0];4.若ps=&st1;则下面描述正确的是:A ps->num与st1->num等价。
B ps.num与st1.num等价。
C ps->num与num等价。
D ps->num与st1.num等价。
5.语句printf(“%d",a<i>j);的输出结果是:A 1B 0C 8 D都不对6.表达式 j/i+a%i+x 的值是:A 6B 4.5C 6.0D 5.57.表达式 b||a+i&&i<j 的值是:A 不确定B 0.0C 1D 08.若执行语句 a=b+=3*j+(int)x;则b的值为:A 1B 8C 0D 8.59. 若执行语句 a=b>j ?++i : i++;则a与i的值分别为:C x=D x=1a≥b 1 a<b11.将字符串“Wan Ming”输入数组ch中,正确的是:A、scanf(“%s”,ch)B、scanf(“%s”,&ch)C、ch=“Wan Ming”D、gets(ch)12. 执行语句printf(“%c”,td[1][0]+’A’)的结果是:A、AB、BC、DD、E13.下列关于main()函数说法正确的是A、C语言程序总是从main()开始执行B、C语言程序可以没有main()函数C、C语言程序可以包含多个main()函数,但必须在不同的模块中D、C语言程序中main()函数不能有形式参数14.下列关于函数说法正确的是A、C语言程序的函数内还可定义其他的函数B、C语言程序的函数内不可再定义其他的函数C、C语言程序的函数不能自己调用自己D、C语言程序中只有同一源文件中的函数才能有调用与被调用关系15.若#define squ(x) x*x 执行语句printf(“result=%d”,squ(i+j));结果为:A、result=36B、36C、result=11D、1116. 若#define squ(x) (x)*(x) 执行语句printf(“result=%d”,squ(i+j));结果为:A、result=36B、result=17C、result=11D、result=25 17.C语言对宏命令叙述正确的是A、宏替换占用运行时间B、编译程序对宏命令的处理是在对源程序中其它成分编译之前进行的C、宏命令的处理是在程序执行时进行的D、宏命令的处理是在程序连接时进行的18. 若执行语句a- =a+=a*=10;a的值为:A、0B、-10C、-100D、100 19.若执行语句p=arr; printf(“%d”,*(p+i));输出结果为A、0B、2C、3D、120.若执行printf(“%s”,ch);结果为:A、’abc’B、abcC、abcdD、abc\0d21.若对数组进行初始化:charcarr[ ]={’s’,’t’,’u’,’d’,’e’,’n’,’t’},barr[ ]=”student ”;则正确的是A、carr与barr长度相同B、carr比barr长C、carr与barr相同D、carr比barr短22.若有说明语句int (*p)[N];则p是A、N个指向整型变量的指针B、可指向有N个整型元素的一维数组的指针C、指向N个整型变量的函数指针D、有N个指针元素的一维指针数组23.若有说明语句int *f( );则函数f是A、f是一个指向整型变量的数组指针B、f返回一个整型数据C、f是一个指向整型变量的函数指针D、f 返回一个整型指针,指向函数本身24.若函数f定义如下:void f(char *d, char *s){ while ( *d++=*s++);}函数f的功能是:A、串比较B、串复制C、求串长D、串反向25.表达式100+a+’a’+x*z的值的数据类型为A、intB、floatC、doubleD、char26.若要动态申请一个double型内存单元,正确的语句是A、pd=double malloc(sizeof(double))B、pd=( *double)malloc(sizeof(double))C、pd=double * malloc(sizeof(double))D、pd=(double*)malloc(sizeof(double))27.若要从键盘上输入67892到变量n中,正确的语句是A、scanf(“%lf”,&n);B、scanf(“%ld ”,&n);C、scanf(“%lf ”,n);D、scanf(“%d ”,&n); 28.判断字符变量c是否不为小写英文字母的正确表达式是A、’a’<=c <=’z’B、c>= ‘a’ && c<=’z’C、’a’≤c ≤’z’D、c<’a’ || c>’z’ 29.下列每组表达式被执行后,结果完全等价的是A、!(b= =0)与!(!b )B、b=(a=4,4*5) 与 b=a=4,4*5C、float(i/j) 与 float i/jD、0<x<100 与 x>0 && x<10030.表达式(m&1)==(m%2)的值是A、 0B、无法确定C、 1D、以上都不对31.数学式ln2x+asin(60°)的C语言表达式是A、log(2*x)+a*sin(60)B、ln(2*x) +a*sin(60/180*3.14)C、ln(2*x) +a*sin(60)D、log(2*x)+a*sin(3.14*60/180)32. 要打开一个已经存在的非空文件file用于修改,则正确的语句是A、fopen(“file”,”r+”)B、fopen(“file”,”w”)C、fopen(“file”,”a+”)D、fopen(“file”,”r”)33. 若打开文件时发生错误,则fopen()函数的返回值是A、1B、0C、不确定D、没有返回值34. 调用函数fseek(fp,-25L,2),其操作结果是A、文件位置指针从文件开始处前移25字节B、文件位置指针从文件结尾处后移25字节C、文件位置指针从文件当前位置处前移25字节D、文件位置指针从文件当前位置处后移25字节35. 能正确表示a和b同时为正或同时为负的逻辑表达式是A、(a>=0||b>=0)&&(a<0||b<0)B、(a>=0&&b>=0)&&(a<0&&b<0)C、(a*b>0&&(a*b<=0)D、a*b>036. 若x=y=z=1;表达式(x--||++y)&&(z++)执行后,x,y,z的值分别为:A. 0,1,1B. 0,1,2C. 0,2,1D. 0,2,237.下列变量的初始化,不正确的是:A. int x,y=5;B. float x=y=3.5;C. char s[]=”a”;D. int a[][3]={{1},{},{0,9}};38. 可以代替while(x!=0)中的条件x!=0的是:A. xB. !xC. x==1D. x!=139.有关函数参数,下列说法不正确的是:A. 实参和形参是不同的变量;B. 实参可以将数据传给形参;C. 形参可以将数据传给实参;D. 实参和形参必须个数相等,类型一致。
c语言期末实操复习题### C语言期末实操复习题#### 一、基础语法题1. 变量声明与初始化编写一个程序,声明一个整型变量`a`和一个浮点型变量`b`,并将它们分别初始化为10和3.14。
2. 数据类型转换编写代码,将一个整数`x`(例如100)转换为浮点数,并打印转换后的值。
3. 条件语句编写一个程序,使用`if-else`语句判断一个整数`n`是否为正数、负数或零。
4. 循环结构使用`for`循环打印出1到10的数字。
5. 数组操作声明一个整型数组`arr`,包含5个元素,初始化为1, 2, 3, 4, 5,并使用循环打印数组元素。
#### 二、函数与指针1. 函数定义与调用定义一个函数`add`,接受两个整数参数并返回它们的和。
在主函数中调用该函数。
2. 指针基础编写一个程序,声明一个整型变量`num`和一个指向整型的指针`p`,将`num`的地址赋给`p`,并打印通过`p`访问的值。
3. 指针与数组使用指针操作上述数组`arr`,打印数组的最后一个元素。
4. 函数与指针定义一个函数`increment`,该函数接受一个整型指针参数,并使该指针指向的值增加1。
#### 三、结构体与联合体1. 结构体定义与使用定义一个结构体`Student`,包含学生的姓名(字符数组)、学号(整数)和成绩(浮点数)。
声明一个`Student`类型的变量,并初始化。
2. 结构体与指针编写一个函数,接受一个指向`Student`结构体的指针,并打印该学生的姓名和成绩。
3. 联合体基础定义一个联合体`Data`,可以存储整数、浮点数或字符。
声明一个`Data`类型的变量,并分别存储不同类型的数据。
#### 四、文件操作1. 文件的打开与关闭编写一个程序,打开一个文本文件(例如`example.txt`),读取文件内容,并在屏幕上打印,最后关闭文件。
2. 文件的写入编写代码,将字符串"Hello, World!"写入到一个新文件中。
C++期末考试复习题单项选择题以下各题均有 A、B、C、D 四个答案可供选择,但只有一个是最合适的即正确的。
请选择正确的答案。
1、一个字节的二进制位数是________(A) 2 (B) 4 (C) 8 (D) 162、一个 C++程序是由________开始执行的。
(A) 主函数 (B) 主过程 (C) 子程序 (D) 主程序3、以下选项中可作为 C++合法标识符的是________(A) Line#1 (B) 88_xx (C) double (D) sign4、以下选项中可作为 C++合法标识符的是________(A) back2u (B) return (C) 666_XX (D) sum-1685、以下选项中可作为 C++合法标识符的是________(A) cash$6 (B) 99_yy (C) bread (D) break6、以下选项中可作为 C++合法标识符的是________(A) long (B) fox_2 (C) 9_dog (D) Line 17、在 32 位 C++编译系统中,一个 double 类型变量占_____字节内存。
(A) 10 (B) 8 (C) 4 (D) 28、在 32 位 C++编译系统中,给一个 float 类型变量分配_____字节内存。
(A) 1 (B) 2 (C) 4 (D) 89、在 32 位 C++编译系统中,一个 long long 类型变量占_____字节内存。
(A) 1 (B) 2 (C) 4 (D) 810、在 32 位 C++编译系统中,给一个 int 类型变量分配______字节内存。
(A) 8 (B) 4 (C) 2 (D) 111、一个 char 类型变量的取值范围为________(A) 0 至 255 (B) 0 至 65535(C) -32768 至 32767 (D) -128 至 12712、一个 unsigned char 类型变量的取值范围为________(A) 0 至 255 (B) 0 至 65535(C) -32768 至 32767 (D) -128 至 12713、一个 short 类型变量的取值范围为________(A) 0 至 255 (B) 0 至 65535(C) -32768 至 32767 (D) -128 至 12714、一个 unsigned short 类型变量的取值范围为________(A) 0 至 255 (B) 0 至 65535(C) -32768 至 32767 (D) -128 至 12715、在以下选项中可作为 C++合法常量的是________(A) 2e (B) 0x4e (C) 3e2.1 (D) e516、在以下选项中可作为 C++合法常量的是________(A) 2e (B) e5 (C) 0678 (D) 0XFF17、在以下选项中可作为 C++合法常量的是________(A) 2.1e3 (B) 3e2.1 (C) e5 (D) π18、在以下选项中可作为 C++合法常量的是________(A) e3 (B) 3e2.1 (C) -4.5e+6 (D) π19、在以下选项中不能作为 C++合法常量的是________(A) 3.14 (B) 7.8e-9 (C) -4.5e+6 (D) π20、在 C++中运算对象必须是整型的运算符是________(A) %= (B) * (C) / (D) ==21、在 C++中运算对象必须是整型的运算符是________(A) || (B) && (C) / (D) %22、在以下选项中,运算符优先级最低的是________(A) *= (B) != (C) ++ (D) >=23、在以下选项中,运算符优先级最低的是________(A) & (B) = (C) / (D) ==24、在以下选项中,运算符优先级最低的是________(A) && (B) = (C) , (D) ==25、在以下选项中,运算符优先级最低的是________(A) && (B) < (C) || (D) +=26、在以下选项中,运算符优先级最高的是________(A) >= (B) /= (C) % (D) <<27、在以下选项中,运算符优先级最高的是________(A) > (B) * (C) %= (D) ||28、在以下选项中,运算符优先级最高的是________(A) < (B) % (C) >> (D) ++29、下面正确的字符常量是(A) “A“ (B) ’’\\’ (C) '\' (D) ’A’30、下面正确的字符串常量是(A) “A“ (B) ’\\’’ (C) “\” (D) ’A’31、字符型数据在内存中常用的二进制编码方式是________(A) 补码 (B) 原码 (C) ASCII 码 (D) 反码32、在以下选项中,与( k = n++ )等价的表达式是________(A) ( n += 1, k = n ) (B) ( k = ++n )(C) ( k = n, n += 1, k ) (D) ( k += n + 1 )33、if ( !k ) 等价于________(A) if ( k = = 0 ) (B) if ( k != 1 )(C) if ( k ! = 0 ) (D) if ( -k )34、if ( k ) 等价于________(A) if ( k < 0 ) (B) if ( k > 0 )(C) if ( k ! = 0 ) (D) if ( k = = 0 )35、若字符数组 s1 和 s2 中各存有一个字符串,则判断字符串 s1 大于字符串s2 的正确方法是________(A) if ( s1 > s2 ) (B) if ( strcmp( s1, s2 ) > 0 )(C) if ( s1 < s2 ) (D) if ( strcmp( s1, s2 ) )36、若字符数组 s1 和 s2 中各存有一个字符串,则判断字符串 s1 小于字符串s2 的正确方法是________(A) if ( s1 > s2 ) (B) if ( strcmp( s1, s2 ) > 0 )(C) if ( s1 < s2 ) (D) if ( strcmp( s1, s2 ) < 0 )37、若字符数组 s1 和 s2 中各存有一个字符串,则判断字符串 s1 等于字符串s2 的正确方法是________(A) if ( s1 = = s2 ) (B) if ( strcmp( s1, s2 ) < 0 )(C) if ( s1 ! = s2 ) (D) if ( strcmp( s1, s2 ) = = 0 )38、若字符数组 s1 和 s2 中各存有一个字符串,则判断字符串 s1 不等于字符串 s2 的正确方法是________(A) if ( s1 = = s2 ) (B) if ( strcmp( s1, s2 ) )(C) if ( s1 ! = s2 ) (D) if ( strcmp( s1, s2 ) = = 0 )39、若执行以下程序段:int a = 1, b = 2, n = 3, k = 4;( n = b > a ) || ++k;则 k 的值是________(A) 5 (B) 4 (C) 0 (D) 140、若执行以下程序段:int a = 1, b = 2, n = 3, k = 4;( k = a > b ) && ++n;则 n 的值是________(A) 1 (B) 0 (C) 3 (D) 441、若执行以下程序段:int a = 3, b = 4, x = 5, y = 6;b > a || ( y = x + 2 );则 y 的值是________(A) 7 (B) 6 (C) 1 (D) 042、若执行以下程序段:int a = 2, b = 4, x = 6, y = 8;a >b && ( y = x - 2 );则 y 的值是________(A) 0 (B) 1 (C) 4 (D) 843、若 x = 3, y = z = 4,则表达式( z >= y && y >= x )的值为(A) 0 (B) 1 (C) 3 (D) 444、若有数组定义:char array[ ] = "A\tB\\C";则数组 array 所占的内存空间的字节数是________(A) 8 (B) 7 (C) 6 (D) 545、在各循环语句中,当循环条件为________时结束循环。
C语言考试期末考试复习题及答案一、选择题(1) 一个C语言程序总是从(C )开始执行A) 书写顺序的第一个函数B) 书写顺序的第一条执行语句C) 主函数main()D) 不确定(2) 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( D )A) ‘x’&&’y’B) x||y+z&&y-z C) x<=yD) !((x<y)&&!z||1)(3) 执行以下程序段后,i的值是 ( C )int i=10;switch(i+1){ case 10: i++; break;case 11: ++i;case 12: ++i; break;default : i=i+1;}A) 11 B) 13 C) 12 D) 14(4) 语句while(!e);中的条件!e等价于 ( A )A) e==0 B)e!=1 C) e!=0 D) 运行时出错(5) 用 int a[4]={1,2}; 对数组进行初始化后,数组元素a[3]的值是 ( B )A) 随机值B) 0 C) 1 D) F(6) 在执行char str[10]=“china\0”; strlen(str)的结果是 ( A )A)5 B) 6 D) 7 D 9(7) 若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运行结果是 ( B )A) 随机值B) m C)o D) omputer(8) 在以下函数调用语句中fun1(x,10,(x,10),fun2(y,10,(y,10)));函数fun1参数的个数为 ( B )A) 8 B) 4C) 5 D) 编译出错(9) 在说明一个结构体变量时系统分配给它的存储空间是( D )A)该结构体中第一个成员变量所需存储空间 B) 该结构体中最后一个成员变量所需存储空间C)该结构体中占用最大存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和1. 用C语言编写的代码程序( B )A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行2. C语言中用于结构化程序设计的三种基本结构是( A )A)顺序结构、选择结构、循环结构 B)if、switch、break C)for、while、do-while D)if、for、continue3. 以下定义语句中正确的是( C )A)char a='A'b='B'; float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a;4.下列选项中,不能用作标识符的是( D )A)_1234_ B)_1_2 C) int_2_ D)2_int_5.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则( B )A)称为函数的直接递归调用 B)称为函数的间接递归调用C)称为函数的循环调用 D)C语言中不允许这样的递归调用6.以下叙述中正确的是 ( A )A)局部变量说明为static存储类,其生存期将得到延长B)全局变量说明为static存储类,其作用域将被扩大C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的存储类说明符与局部变量完全相同7.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( B)A)for(i=1,p=1;i<=5;i++) p*=i;B)for(i=1;i<=5;i++){ p=1; p*=i;}C)i=1;p=1;while(i<=5){p*=i; i++;}D)i=1;p=1;do{p*=i; i++; }while(i<=5);8.有以下程序(a)main(){ char a='a',b;printf("%c,",++a);printf("%c\n",b=a++);}程序运行后的输出结果是a)b,b B)b,c C)a,b D)a,c9.有以下函数定义:(c)void fun(int n, double x) { …… }若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A) fun(int y,double m); B)k=fun(10,12.5) C)fun(x,n); D)void fun(n,x)10.已定义c为字符型变量,则下列语句中正确的是(c)A)c='97'; B)c="97"; C)c=97; D)c="a";11.以下能正确定义一维数组的选项是(b)A)int num[]; B) #define N 100 C)int num[0..100]; D) int N=100;int num[N]; int num[N];12.以下能正确定义数组并正确赋初值的语句是(d)A)int N=5,b[N][N]; B)int a[1][2]={{1},{3}};C)int c[2][]= {{1,2},{3,4}}; D)int d[3][2]={{1,2},{34}};13.有以下程序(a)main(){ int i;for (i=0; i<3; i++)switch (i){ case 1: printf("%d ", i);case 2: printf("%d ", i);default : printf("%d ", i); }}执行后输出结果是A)011122 B)012 C)012020 D)12014.有以下程序(d)main(){ int p[7]={11,13,14,15,16,17,18}, i=0,k=0;while(i<7 && p[i]%2) { k =k+ p[i]; i++; }printf("%d\n", k);}执行后输出结果是A)58 B)56 C)45 D)2415.以下叙述中正确的是(c)A)C语言比其他语言高级 B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点16.下列叙述中正确的是(d)A)C语言中既有逻辑类型也有集合类型B)C语言中没有逻辑类型但有集合类型C)C语言中有逻辑类型但没有集合类型D)C语言中既没有逻辑类型也没有集合类型17.以下叙述中正确的是(a)A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号"{"和"}"只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分二)阅读程序,写出程序运行结果(1) #include<stdio.h>main(){ char ch=’A’;ch=(ch>=’A’&& ch<=’Z’)?(ch+32):ch;printf(“%c”,ch);}程序的运行结果是:(2) #include<stdio.h>main( ){ int sum=0,i=11;while (i<=10){sum=sum+i;i++;}printf(“%d”,sum);}程序的运行结果是:(3) #include<stdio.h>main(){ char str[ ]=”1a2b3c”;int i;for(i=0;str[i]!=’\0’;i++)if (str[i]>=’0’ && str[i]<=’9’) printf(“%c”,str[i]);}程序的运行结果是:(4) main(){ int a,b;a=5;b=8;p(a,b);p(a+b,a);}p(int x,int y){y=x+y;printf(“%d %d”,x,y);}程序的运行结果是:(5) #include<stdio.h>void main(){ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};int j,s=1;for(j=0;j<=2;j++)s=s*a[j][j];printf("%d",s);}程序的运行结果是:Key: (1) a (2) 0 (3) 123 (4) 5 13 13 18 (5) 45 三)改错题(每个程序只有一个错误,填入错误语句所在的行号以及修改后的语句)(1)下段程序的功能是先输入一个整数,然后将输入的整数输出。
C语言试题试卷编号:9618 版面整理着:一、填空共8题(共计8分)第1题(1.0分)题号:513若有以下定义,则计算表达式y+=y-=m*=y后的y值是()int m=5,y=2; 答案:-16第2题(1.0分)题号:84写出语句 b=(a=6,a*3); 执行后整型变量b的值是【1】. 答案: 18第3题(1.0分)题号:293getchar()函数只能接收一个【1】. 答案:字符第4题(1.0分)题号:437以下程序的输出结果为【1】,#include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);} 答案:9,10第5题(1.0分)题号:86写出表达式 1.234&&5.982 的值是【1】. 答案:1第6题(1.0分)题号:303为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的【1】语句配对. 答案: if第7题(1.0分)题号:311若所用变量均已正确定义,则执行下面程序段后的值是【1】.for(i=0 ; i<2 ; i++ ) printf("YES"); printf("\n"); 答案:YESYES 第8题(1.0分)题号:312以下程序段要求从键盘输入字符,当输入字母为'Y' 时,执行循环体,则括号内应填写【1】.ch=getchar();while(ch ____ 'Y')/*在括号中填写*/ch=getchar(); 答案:==二、判断共15题(共计15分)第1题(1.0分)题号:937在C程序中,每行中只能写一条语句答案:N第2题(1.0分)题号:928C程序中的关键字必须小写. 答案:Y第3题(1.0分)题号:715整数 -32100可以赋值给int型和long int型变量. 答案:Y第4题(1.0分)题号:929在C语言中,5种基本数据类型的存储空间长度的排列顺序为:char<int<long int <=float<double 答案:Y第5题(1.0分)题号:947printf函数中,%c和%s都可以输出字符串. 答案:N第6题(1.0分)题号:194若有定义和语句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘输入:10,A,12.5,则a=10,c='A',f=12.5. 答案:Y第7题(1.0分)题号:944C语言中,赋值表达式加上分号就构成了赋值语句. 答案:Y激情活力精彩学联版权所有违者必究第8题(1.0分)题号:961C语言本身并不提供输入输出语句.但可以通过输入输出函数来实现数据的输入输出. 答案:Y第9题(1.0分)题号:950逻辑运算符中的"&&"和"||"低于关系运算符,"!"高于算术运算符. 答案:Y第10题(1.0分)题号:951在执行switch语句时,default和各个case的出现次序不影响执行结果. 答案:Y第11题(1.0分)题号:723若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真". 答案:Y 第12题(1.0分)题号:709int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A. 答案:N第13题(1.0分)题号:742若有说明int c;则while(c=getchar());是正确的C语句. 答案:Y第14题(1.0分)题号:954continue语句只结束本次循环,而不是终止整个循环的执行.break语句则是结束整个循环过程,不再判断执行循环的条件是否成立. 答案:Y第15题(1.0分)题号:952do-while循环是先判断循环条件表达式,后执行循环体;while循环是先执行循环体,后判断循环条件表达式. 答案:N三、单项选择共20题(共计40分)第1题(2.0分)题号:2016设C语言中,int类型数据占2个字节,则short类型数据占().A:1个字节B:2个字节C:4个字节D:8个字节答案:B第2题(2.0分)题号:2209若变量已正确定义并赋值,下面符合C语言语法的表达式是().A:a:=b+1B:a=b=c+2C:int 18.5%3D:a=a+7=c+b 答案:B第3题(2.0分)题号:2000以下的选择中,正确的赋值语句是().A:a=1,b=2B:j++C:a=b=5;D:y=int(x) 答案:C第4题(2.0分)题号:2130下列字符序列中,是C语言保留字的是().A:sizeofB:include激情活力精彩学联版权所有违者必究C:scanfD:sqrt 答案:A第5题(2.0分)题号:2211设以下变量均为int类型,则值不等于7的表达式是().A:(x=y=6,x+y,x+1)B:(x=y=6,x+y,y+1)C:(x=6,x+1,y=6,x+y)D:(y=6,y+1,x=y,x+1) 答案:C第6题(2.0分)题号:2127下列程序段的输出结果为().float k=0.8567;printf("%4.1f%%",k*100);A:0085.6%%B:85.7%C:0085.6%D:.857 答案:B第7题(2.0分)题号:2135下列程序段的输出结果为().int x=3,y=2;printf("%d",(x-=y,x*=y+8/5));A:1B:7C:3D:5 答案:C第8题(2.0分)题号:2189从键盘上输入某字符串时,不可使用的函数是().A:getchar()B:gets()C:scanf()D:fread() 答案:A第9题(2.0分)题号:2039若k为int型变量,则以下程序段的执行结果是().k=-8567; printf("k=|%06D|\n");A:格式描述符不合法,输出无定值B:输出为k=|%06D|C:输出为|0-8567|D:输出为|-8567| 答案:B第10题(2.0分)题号:2049以下程序的输出结果为().main(){int i=010,j=10;printf("%d,%d\n",++i,j--);激情活力精彩学联版权所有违者必究}A:11,10 B:9,10 C:010,9 D:10,9答案:B第11题(2.0分)题号:2144int a=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为().A:1B:2C:3D:不一定答案:A第12题(2.0分)题号:2259以下关于运算符优先顺序的描述中正确的是().A:关系运算符<算术运算符<赋值运算符<逻辑运算符B:逻辑运算符<关系运算符<算术运算符<赋值运算符C:赋值运算符<逻辑运算符<关系运算符<算术运算符D:算术运算符<关系运算符<赋值运算符<逻辑运算符答案:C第13题(2.0分)题号:2318在C语言中,要求运算数必须是整型的运算符是().A:&&B:%C:!D:|| 答案:B第14题(2.0分)题号:2261若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假",则以下不能满足要求的表达式是().A:A%2==1B:!(A%2==0)C:!(A%2)D:A%2 答案:C第15题(2.0分)题号:2063执行下列语句后的输出为().int j=-1;if(j<=1) printf("****\n");else printf("%%%%\n");A:****B:%%%%C:%%%%cD:有错,执行不正确答案:A第16题(2.0分)题号:2248下面有关 for 循环的正确描述是().激情活力精彩学联版权所有违者必究A:for 循环只能用于循环次数已经确定的情况B:for 循环是先执行循环循环体语句,后判断表达式C:在 for 循环中,不能用 break 语句跳出循环体D:for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来答案:D第17题(2.0分)题号:2059以下程序的运行结果是().main(){ int n;for(n=1;n<=10;n++){if(n%3==0) continue;printf("%d",n);}}A:12457810B:369C:12D:1234567890 答案:A第18题(2.0分)题号:2141以下程序段的输出结果为().for(i=4;i>1;i--)for(j=1;j<i;j++)putchar('#');A:无B:######C:#D:### 答案:B第19题(2.0分)题号:2251以下不是无限循环的语句为().A:for(y=0,x=1;x>++y;x=i++) i=x;B:for(;;x++=i);C:while(1){x++;}D:for(i=10;;i--) sum+=i; 答案:A第20题(2.0分)题号:2249若i为整型变量,则以下循环执行次数是().for(i=2;i==0;) printf("%d",i--);A:无限次B:0次C:1次D:2次答案:B四、程序填空共3题(共计27分)第1题题目:要求输出结果为:A,B激情活力精彩学联版权所有违者必究#include<stdio.h>void main()/***********SPACE***********/{char a,【?】/***********SPACE***********/a=【?】;b='b';a=a-32;/***********SPACE***********/b=b-【?】;printf("%c, %c\n%d,%d\n",a,b,a,b);}答案:=======(答案1)=======b;=======(答案2)======='a'=========或=========97=======(答案3)=======32第2题(9.0分)题号:24题目:以下程序的功能是对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素数)因子的形式。
c语言大一补考复习题C语言作为计算机科学与技术专业学生的入门语言,其重要性不言而喻。
为了帮助同学们更好地准备大一补考,以下是一些C语言的复习题,涵盖了基础知识点和一些常见的编程问题。
# 一、选择题1. 在C语言中,以下哪个是合法的字符常量?A. 'A'B. "A"C. 123D. 0x412. 以下哪个不是C语言的关键字?A. intB. floatC. autoD. double3. 以下哪个是正确的C语言语句?A. if (x = y) { ... }B. if (x == y) { ... }C. if x == y { ... }D. if (x == y) then { ... }4. C语言中,哪个函数用于将整数转换为字符串?A. atoi()B. itoa()C. sprintf()D. printf()5. 下面哪个是正确的C语言数组声明?A. int array[10] = {1, 2, 3};B. int array[] = {1, 2, 3};C. int array = {1, 2, 3};D. int [10] array = {1, 2, 3};# 二、填空题6. 在C语言中,用于定义变量的关键字是____。
7. C语言中的字符串是以____结尾的字符数组。
8. 一个C语言程序的执行从____函数开始。
9. 在C语言中,____运算符用于计算两个数的乘方。
10. 要将一个整数转换为浮点数,可以使用____函数。
# 三、简答题11. 解释C语言中指针的概念,并给出一个使用指针的简单例子。
12. 描述C语言中结构体(struct)的作用,并给出一个结构体的声明和使用的例子。
13. 简述C语言中函数的定义和调用过程。
# 四、编程题14. 编写一个C语言程序,实现输入两个整数,输出它们的和、差、积、商。
15. 编写一个C语言程序,实现对一个字符串进行反转。
《C语言程序设计》期末复习题一、选择题1.能将高级语言编写的源程序转换成目标程序的是()A.程序 B. 解释程序 C. 编译程序 D.编辑程序2.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是()。
A. 10<a<15B. a==11||a==12||a==13||a==14C. a>10&&a<15D.!(a<=10)&&!(a>=15)3.当调用函数时,实参是一个数组名,则向函数传送的是( )。
A. 数组的长度B. 数组的首地址C. 数组每一个元素的地址D. 数组每个元素中的值4.执行下面的程序段后,k的值是()int k=1,n=325;do { k*=n%10;n/=10;}while(n);A. 3B. 30C. 523D. 3255.若有以下数组说明,则i=6;a[a[i]]元素数值是()。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.3B.8C.6D.56.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A. for(i=1,p=1;i<=5;i++) p*=i;B. for(i=1;i<=5;i++){ p=1; p*=i;}C. i=1;p=1;while(i<=5){p*=i; i++;}D. i=1;p=1;do{p*=i; i++; }while(i<=5);7.若有:int a[][3]={{1,2,3},{4,5},{6,7},{8}}; 则数组a的第一维的大小为: ( ) A. 12 B. 3 C. 4 D.无确定值8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是( )。
char s[20]= “Bejing”,*p;p=s;A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等C.s和p都是指针变量D.数组s中的容和指针变量p中的容相等9.以下正确的函数定义是( )。
C++复习题一、简答题1.在c++中,内联函数中不能使用什么语句?答:不允许使用循环语句和分支语句2.在c++中,封装可以由那几个关键字提供控制方式?分别作用是什么?答:在类定义体里,使用了private、protected、public三个关键字是用来说明数据成员和函数成员的访问权限。
public说明公有成员,该类成员都可以通过对象被访问的。
private说明私有成员,该类成员只能被自己的成员函数或友元访问;protected说明保护型的成员,可以被自己的成员函数或友元访问,也可以被派生类的函数成员访问;3.由于二义性原因,一个类如何防止从一个类中重复继承?答:①通过使用作用运算符“::”明确指出访问的是哪个基类中的成员;②在类中定义同名成员;③虚基类(virtual 继承方式基类名)4.在c++中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则如何处理这个基类?用什么关键字?答:将这个公共基类说明为虚基类,用virtual 关键字5.简单成员函数是指声明中不含有什么关键字的函数?(关注存储类型)答:简单成员函数是指存储类型为auto型。
static,extern,register6.静态成员的特点?答:静态成员的特点是:不管这个类创建多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。
7.当访问私有静态数据成员时,可通过什么来访问?答:在类外,私有静态数据成员不能直接访问,必须通过公有的成员函数访问。
8.有关继承,静态成员是否可以被继承?可以。
友元是否可以被继承?不可以构造函数是否可以被继承?不可以9.c++不允许重载什么运算符?答:成员访问运算符.;作用域运算符∷;条件运算符?:;成员指针运算符*;长度运算符sizeof()10.那些运算符只能用类运算符来重载?答:= () [] * 这四个只能用类重载11.c++提供格式宽度控制方式有哪几种?关键字是?答1.int width(int val) int width( ) int ios::width(int n) 2.setw(int n)12.十进制数0.1的二进制表示是什么?答:(0.1)10= (0.000110011...)2,它是无限循环小数。
也就是说,十进制数0.1无法精确用二进制表示!13.简述程序设计的步骤。
答:程序设计一般遵循以下步骤:明确问题;系统设计;用某种语言进行编程;测试与调试;运行与维护14.简述编译与解释的区别。
答:编译是指把高级语言程序首先翻译成功能上等价的机器语言程序或汇编语言程序,然后执行目标代码程序,在目标代码程序的执行中不再需要源程序。
解释则是指对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了,这种翻译方式不产生目标程序。
一般来说,编译执行比解释执行效率要高15.简述C++程序的编译执行过程答:编译过程主要分为4个阶段:编译预处理;编译、优化阶段;汇编过程;链接程序(?)16.下面哪一些是合法的C++字面常量,它们的类型是什么?-5.23, 1e+50, -25, 105, 20.20, e5, 1e-5, -0.0e5, '\n'-000, 'A', '5', '3.14', falsered, '\r', '\f' "Today is Monday.", "\""答:字面常量是指在程序中直接写出常量值的常量。
-5.23, 1e+50,-25, 20 ,.20, 1e-5, -0.0e5, '\n', -000, 'A', '5', '\r', '\f' , "Today is Monday.", "\""都是字面常量。
其中:整数类型常量:-25, 20, -000实数类型常量:-5.23, 1e+50 , .20, 1e-5, -0.0e5字符常量: '\n', 'A', '5', '\r', '\f'字符串常量:"Today is Monday.", "\""17.什么是符号常量?符号常量的优点是什么?答:符号常量是指有名字的常量,在程序中通过常量的名字来使用这些常量。
程序中使用符号常量有以下优点:(1)增加程序易读性;(2)提高程序对常量使用的一致性;(3)增强程序的易维护性18.如何理解变量?变量定义和声明的作用是什么答:值可以改变的量叫变量,可变的数据.使用变量前,C++要对变量做声明19.指针类型主要用于什么场合?引用类型与指针类型相比,其优势在哪里?答:指针类型主要用于参数传递和对动态变量的访问。
在C++中,指针类型还用于访问数组元素,以提高访问效率。
引用类型与指针类型都可以实现通过一个变量访问另一个变量,但访问的语法形式不同:引用是采用直接访问形式,指针则采用间接访问形式。
在作为函数参数类型时,引用类型参数的实参是一个变量,而指针类型参数的实参是一个变量的地址。
除了在定义时指定的被引用变量外,引用类型变量不能再引用其他变量;而指针变量定义后可以指向其他同类型的变量。
因此,引用类型比指针类型要安全。
20.const int * p1 和 int * const p2的区别是什么?答:const int * p1 是指向常量的指针,指针指向一个常量,无需初始化,指针本身可以改变,但是指针指向的值不能改变。
int * const p2是指向常量的引用,使用时必须初始化,而且初始化后,引用值不可以改变,引用的常量也不能改变。
21.表达式中的类型转换规则是什么?下面的表达式计算时如何进行操作数类型转换? (1)3/5*12.3 (2)'a'+10*5.2 (3)12U+3.0F*24L表达式中类型转换规则是:基于单个操作符依次进行转换。
1)3 与 5 同类型,不转换,结果为 0,转换成double 型后与 12.3 做乘法。
2)10 转换成double 型与 5.2 做乘法,’a ’转换成double 型后与前者结果做加法。
22.将下列公式表示成C++的表达式:(1)aac b b 242-+- (可利用C++标准库中的求平方根的函数:sqrt(x))(-1*b+sqrt(b*b-4*a*c))/(2*a)(2)))()((c s b s a s s --- :sqrt(s*(s-a)*(s-b)*(s-c))(3)345.2133r cb dc b a ⋅⋅+++⋅⋅⋅π((a*b)/(c*d))*(3/(1+(b/(2.5+c))))+(4*pi*r*r*r/3)23.派生类构造函数执行的次序是怎样的?答:派生类构造函数执行的一般次序为:调用基类构造函数;调用成员对象的构造函数;派生类的构造函数体中的内容。
24.如果在派生类B 已经重载了基类A 的什么叫做多态性 ?在C++中是如何实现多态的?答:多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。
C++支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。
25.一个成员函数fn1(),没有重载成员函数fn2(),如何调用基类的成员函数fn1()、fn2()?答:A::fn1(); fn2();26.如果类A 是类B 的友元,类B 是类C 的友元,类D是类A 的派生类,那么类B 是类A 的友元吗?类C 是类A 的友元吗?类D 是类B 的友元吗?答:类B 不是类A 的友元,类C 不是类A 的友元,类D 不是类B 的友元二、选择题1. 下列的各类函数中, C 不是类的成员函数。
A) 构造函数 B) 析构函数C) 友元函数 D) 拷贝初始化构造函数 2.作用域运算符“::”的功能是 D 。
A) 标识作用域的级别的 B) 指出作用域的范围的C) 给定作用域的大小的D) 标识成员是属于哪个类的3. A 是析构函数的特征。
A) 一个类中只能定义一个析构函数B) 析构函数名与类名不同C) 析构函数的定义只能在类体内 D) 析构函数可以有一个或多个参数4下述静态数据成员的特性中, D 是错误的。
A) 说明静态数据成员时前边要加修饰符static B) 静态数据成员要在类体外进行初始化C) 引用静态数据成员时,要在静态数据成员前加<类名>和作用域运算符D) 静态数据成员不是所有对象所共用的 5. 友元关系不能 CA) 是类是与类的关系B) 是一个类成员函数与另一个类的关系C) 继承 D) 提高程序的运行效率6.下列关于对象数组的描述中, D 是错的。
A) 对象数组的下标是从0开始的B) 对象数组的数组名是一个常量指针C) 对象数组的每个元素是同一个类的对象D) 对象数组只能赋初值,而不能被赋值7. 下列说明中const char *ptr; ptr应该是 CA) 指向字符常量的指针B) 指向字符的常量指针C) 指向字符串常量的指针D) 指向字符串的常量指针8. 已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,A是正确的。
A) void print()const; B) const void print();C) void const print():D) void print(const);9. 关于new运算符的下列描述中,D是错的。
A) 它可以用来动态创建对象和对象数组B) 使用它创建的对象或对象数组可以使用运算符delete 删除C) 使用它创建对象时要调用构造函数D) 使用它创建对象数组时必须指定初始值10. 下列对派生类的描述中,D是错的A) 一个派生类可以作另一派生类的基类B) 派生类至少有一个基类C) 派生类的成员除了它自己的成员外,还包含了它的基类的成员D) 派生类中继承的基类成员的访问权限到派生类中保持不变11. 派生类的构造函数的成员初始化列表中,不能包含 DA) 基类的构造函数B) 派生类中子对象的初始化C) 派生类中一般数据成员的初始化D) 基类的子对象初始化12. 设置虚基类的目的是BA) 简化程序B) 消除二义性C) 提高运行效率D) 减少目标代码13. 下列函数中,C不能重载A) 成员函数B) 非成员函数C) 析构函数D) 构造函数注:重载函数:同名不同参(个数、类型、顺序)14. 关于动态联编的下列描述中D 是错误的A) 动态联编是以虚函数为基础的B) 动态联编是在运行时确定所调用的函数代码的C) 动态联编调用函数操作是指向对象的指针或对象引用D) 动态联编是在编译时确定操作函数的15. 关于虚函数的描述中,D是正确的A) 虚函数是一个static类型的成员函数B) 虚函数是一个非成员函数C) 基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数D) 派生类的虚函数与基类的虚函数具有不同的参数个数和类型16. 下列描述中,D是抽象类的特性A) 可以说明虚函数B) 可以进行构造函数重载C) 可以定义友元函数D) 不能说明其对象17. 在类定义的外部,可以被访问的成员有CA) 所有类成员B) private的类成员C) public的类成员D) public或private的类成员18.下面对构造函数的不正确描述是BA) 系统可以提供默认的构造函数B) 构造函数可以有参数,所以可以有返回值没有C) 构造函数可以重载D) 构造函数可以设置默认参数19. 在创建派生类对象时,构造函数的执行顺序是DA) 对象成员构造函数、基类构造函数、派生类本身的构造函数B) 派生类本身的构造函数、基类构造函数、对象成员构造函数C) 基类构造函数、派生类本身的构造函数、对象成员构造函数D) 基类构造函数、对象成员构造函数、派生类本身的构造函数20. 在C++中,要实现动态联编,必须使用D调用虚函数A) 类名B) 派生类指针C) 对象名D) 基类指针三、运行结果1.在你的计算机上运行下面的程序:#include <iostream>using namespace std;int main(){ double a=3.3, b=1.1;int i=a/b;cout << i << endl;return 0;}结果与你预期的是否相符?如果不符,请解释它的原因结果为 2。