C语言题目
更新时间:2024-04-22 00:53:01 阅读量: 综合文库 文档下载
概述
1、C语言规定:在一个源程序中,main函数的位置( D )。 A.必须在最后 B.必须在系统调用的库函数的后面。 C.必须在最开始。 D.可以任意 2、下列说法中正确的是(C )。
A. C程序书写时,不区分大小写字母 B. C程序书写时,一行只能写一个语句 C. C程序书写时,一个语句可分成几行书写 D. C程序书写时每行必须有行号 3、以下说法中正确的是(C )
A、C语言程序总是从第一个定义的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分 4、组成C语言程序的基本单位是( C )。
A) 过程 B) 子程序
C) 函数 D) 主程序和子程序 5、以下叙述正确的是(C)。
A. C语句前面必须有行号 B. C程序中每行只能写一条语句 C. C语言本身没有输入输出语句 D. 注释必须跟在一行语句的后面 9、以下关于C语言的描述错误的是(C)
A.C语言中不同类型的变量可以出现在同一个表达式在中
B.在赋值表达式中赋值运算符(=)左边的变量和右边的值可以是不同类型 C.C语言的函数可以嵌套定义和嵌套调用
D.C语言编写的函数都可以作为一个独立的源程序文件
标识符
1、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符__A______。 A)必须为字母或下划线。 B)必须为下划线。
C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。 2、以下标识符中,不能作为合法的C用户定义标识符的是:(B )
A .a3_b3 B. void C._123 D.abc 3、以下不能定义为用户标识符是 (D)
A Main B _0 C _int D sizeof 4、下列哪个标识符是C语言合法的标识符(C )。
A) a*b B) –xyz C) ba2 D) 5i 5、下列字符串是合法的标识符的是( A )。 A、_HJ B、9_student C、 long D、LINE 1 6、在C语言提供的合法的关键字是(A ) A、switch B、cher C、Case D、sturct 7、下面四个选项中,合法的用户自定义标识是( A )。
(A) int
(B) a_b3 (C) 3_bc (D) #mm
数据类型
1、C语言中基本的数据类型包括______B____。
A) 整型、实型、逻辑型 B) 整型、实型、字符型
C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 2、C语言中基本的数据类型不包括____B______。 A) 整型 B)字符串型 C)字符型 D)实型
整型
1、C语言中,int类型数据占2个字节,则long类型数据占(D )
A、1个字节 B、2 个字节 C、3个字节 D、4个字节 2、在C语言中,负整数以(A )形式存放。
A、补码 B、BCD码 C、反码 D、进制数 3、下列不合法的C语言整型常量是(A ) A、095 B、139 C、0xff D、010 4、以下程序
main() {
int i=010,j=10,k=0x10; printf(\}输出结果是( A )
A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16 5、下面程序的输出是__D____ main() {
int k=11;
printf(\ }
A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b 6、下面程序的输出是(假设 int 数据是 2 个字节)C void main()
{ int a = 32768;
printf(“a=%d\\n”,a); }
A) a=32768 B) a=32767 C) a=-32768 D) a=-1
字符型
1、下列合法的字符常量是(B )。
A、'\\084' B、'\\x43' C、'ab'
D、\
2、以下合法的字符常量是( B )。 A) “a” (B) ?\\72? (C) ?\\0x12? (D) ?ab? 3、下列合法的字符常量是( D )。
A、“\\0” B、?ab? C、12 D、?\\117? 4、设有语句char a=?\\072?;,则变量a(A )。
A.说明不合法 B.包含2个字符 C.包含3个字符 D.包含1个字符 5、以下程序运行后的输出结果是(B) 。 main() { char m;
m='B'+32; printf(\}
A、B B、b C、98 D、a 6、若有以下定义和语句
char c1='b',c2='e';
printf(\,c2-c1,c2-'a'+\; 则输出结果是: ( B )
A、2,M B、3,E C、2,E D 、3, M
7、已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为(A) main() {
char x,y; x=?0?;y=?9?;
pirntf(“%d,%d\\n”,x,y); }
A.因输出格式不合法,输出错误信息 B.48,57
C.0,9 D.48,58
赋值运算符
1、已知ch是字符型变量,下面不正确的赋值语句是 (B )。
A.ch = 5 + 9 ; B.ch= ' a + b '; C. ch = ' \\ 0 '; D. ch= '7' + '6' ; 2、已知ch是字符型变量,下面正确的赋值语句是(C )。
A.ch = '123' ; B. ch=' \\08 '; C. ch =' \\xff '; D.ch =\ 3、若变量已定义并赋值,下列符合C语法的表达式是:( B )
A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b 4、若变量均已正确定义并赋值,以下合法的C语言赋值语句是(A)。
A) x=y==5; B) x=n%2.0 C) x+n=i; D) x=5=4+1;
5、若以下选项中的变量已正确定义,则正确的赋值语句是(C)。 A) x1=26.8%3 B) x3=0x12 C) 1+2=x2 D) x4=1+2=3
6、设x和y均为int型变量,则语句:x+=y; y=x-y; x-=y; 的功能是(D)。
A.把x和y案从大到小排列 B.把x和y按从小到大排列 C.无确定结果 D.交换x和y中的值 7、若x=5,y=4 ,则y*=x +5; y的值为( D )。
A. 40 B. 20 C B. 15 D. 30
自动转化数据类型
1、在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达式最后的运算结果类型是 ( D )
A.int B.char C.unsigned D.long
强制转化数据类型
1、以下程序的运行结果是(1)。
#include
double f=3.64159; int n;
n=(int)(f+10)%3; printf(\
算术运算符
1、C语言中,运算对象必须是整型的运算符是___A_______。 A) % B) / C) %和/ D) *
2、若变量已正确定义并赋值,表达式___B_________不符合C语言语法。 A)a*b/c; B)3.14%2 C)2, b D)a/b/c
3、若定义int x=7,y=5,z;则表达式:z=x+5/2*y的值是_____D_____
A) 7 B) 7.5 C) 17 D) 19.5 4、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 C A、 2 B、 1 C、 2.0 D、2.5
5、若定义x和y为double类型,则表达式:x=2,y=x+5/2的值是___C_______ A) 4 B) 4.5 C) 4.0 D) 3.0 6、假设在程序中a,b,c均被定义为整型,并且已赋大于1的值,则下列能正确表示代数式1/abc
的表达式是( B )。
A、1/a*b*c B、1/(a*b*c) C、1/a/b/(float) c D、1.0/a/b/c 7、设a,b,c,d均为double类型,则代数式
5ad不正确的C语言表达式是(? )。 7bc(A)5*a*d/7/b/c (B)5*a/7/b*d/c (C)5/7*a/b*d/c (D)a/b*5/7*d/c 8、若有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)/4的值是( C )
A) 2.75 B) 3.5 C) 2.5 D) 0 9、若有定义:int a = 7; float x = 2.5 , y = 4.7 ; 则表达式 x + a % 3 * (int) (x + y) % 2/4 的值是(D )。 A. 2.750000 B. 0.00000 C. 3.500000 D. 2.500000
关系运算符
1、若要求表示 “a不等于0”的关系,则不能正确表示这一关系的表达式为(A )。
(A) a<>0 (B) a (C) a>0||a<0 (D) a!=0
2、表达式_____D_____是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式
A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5) C) (c==1)&&(c==3)&&(c=5) D) (c==1)||(c==3)||(c==5) 3、为表示数学关系x≥y≥z,正确的C语言表达式是__A________。 A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) (x>=y>=z) D) (x>=y)&(y>=z) 4、设int m=1,n=2;则++m= =n的结果是( B)
A、0 B、1 C、2 D、3
逻辑运算符
1、在C语言中,逻辑值“真”用____D______表示。
A) true B) 大于0的数 C) 非0的整数 D) 非0的数 2、C语言中,逻辑“真“等价于(C )。
A、大于零的数 B、大于零的整数 C、非零的数 D、非零的整数 3、在 C 程序中,用______B_____表示逻辑值“真”。
A)1 B)非 0 的数 C)非 1 的数 D) 大于 0 的数
4、设int a=2,b;则执行b=a&&1;语句后,b的结果是( B )
A.0 B.1 C.2 D.3
5、若已经定义了一个字符型变量为a,下面哪个表达式的含义跟其余表达式不同:D
A) a!=0 B) a!=’\\0’ C) a D) !a 6、执行下面语句段的输出结果是(D )。//逻辑或优化
int i=1,j=1,k=2;
if( (j++||k++)&&i++)
printf(\18 (A) 1 , 1 , 2 (B) 2 , 2 , 1 (C) 2 , 2 , 2 (D) 2 , 2 , 3
7、以下程序的输出结果是( )。//逻辑与优化
#include \void main() {
int a=-1,b=4,k; k=(++a)&&!(b--<=0); printf(\
}
(A)1 0 4 (B)1 0 3 (C) 0 0 3 (D)0 0 4
8、若定义:int a=1,b=2,c=3,d=4,m=2,n=2;则执行(m=a>b)&&(n=c>d)后n的值为(B )。 (A)1 (B)2 (C)3 (D)4
9、若变量c为char类型,能正确判断出c为小写字母的表达式是(D )。
(A)?a?<=c<=?z? (B)(c>=?a?)||(c<=?z?) (C)(?a?<=c)and(?z?>=c) (D)(c>=?a?)&&(c<=?z?) 10、.表达式((3560)&&(-1&&1))*10的值为(B)。
A) 0 B) 1 C) 10 D) 560
11、设int x=1,y=1;表达式(!x||--y)的值是(B )。 (A)0 (B)1 (C)2 (D)-1
逗号运算符
1、若变量x和y都为int类型,x=100,y=200,下面程序段的输出结果是( A )。 printf(\
(A) 200 (B) 100 (C) 100 200 (D) 输出不确定的值 2、逗号表达式(a=3*5,a*4),a+15的值是( C )
A.15 B.60 C.30 D.75 3、设int c=5和int a; a=2+(c+=c,c+8,++c), 则a=_B__C______
A) 15 B) 14 C) 13 D) 16 4、若x,i,j和k都是int型变量,则执行下面表达式后x的值为(C)
x=(i=4,j=16,k=32)
A、4 B、16 C、32 D、520
5、设a、b都是int型变量,且a、b初始值分别为5和10,则表达式a=a+b++,b+a,b+1的值为(A)。
A) 11 B) 12 C) 15 D) 16
自增自减运算符
1、以下程序的输出结果是__D________ main()
{ int x=10,y=10;
printf(“%d %d\\n”,x--,--y); }
A) 10 10 B) 9 9 C) 9 10 D) 10 9
位运算符
1、下面程序段的运行结果为 ( A ) 。
int a=9,b=020;
printf(\A) 40 (B) 41
2. 以下程序的结果是( A )。
#include \ void main() {
(C) 42 (D) 43
unsigned int a=3,b=10; printf(\}
(A) 1 (B) 13 (C) 12 (D) 5 3、以下程序的运行结果是(B )。
#include
unsigned int a=2;b=11; printf(\ return 0; }
(A)13 (B)12 (C)5 (D)1 4、执行下面程序段,B的值应为(C)。
int x=35; char z='A'; int B;
B=((x&15)&&(z<'a'));
A) 0 B) 1 C) 2 D) 3 5、表达式15|127的值是(?)。
A) 15 B) 127 C) 0 D) 1 6、以下程序的输出结果应为(?)。
#include
printf(“%d\\n”,23|023); return 0; }
A.0 B. 1 C.23 D.46
1、以下不正确的函数首部是(C )。 (A)f(int a) (B)fun(float a[5][]) (C)function(double *a) (D)fun(int *a[10])
2、设函数fun的定义形式为 void fun( char ch, float x ) {........}则以下对函数fun的调用语句中,正确的是(C)。
A. fun(65,32) B. fun(?65?,2.8) C. fun(“abc”,3.0) D. t=fun(?D?,16.5) 3、下列程序的输出结果是(D )。(考点:函数(地址参数和普通参数)、指针运算)
void fun(char *c,int d) {
*c=*c+1; d=d+1; }
void main()
{
char a='A',b='a'; fun(&b,a); printf(\}
(A) B,A (B) a,B (C) A,B
(D) A,b
4、有下列程序(考点:函数(地址参数)、指针运算)
# include \
void prt(int *x,int *y,int *z) {
printf(\
} void main() {
int a=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c); }
(1) 第一次调用函数prt的运行结果是( B )。 32 (A) 11,42,31 (B) 11,41,20 (C) 11,21,40 (2) 第二次调用函数prt的运行结果是( A )。 33 (A) 12,42,20 (B) 12,22,41 (C) 11,21,41
5、有下列程序(考点:函数(地址参数)、指针运算)
# include
z=x; x=y; y=z; }
void fun2(int *x,int *y) { int z;
z=*x; *x=*y; *y=z; (*x)++; (*y)++; }
void main() { int a=5,b=9; fun1(&a,&b);
printf(\ fun2(&a,&b);
printf(\}
main函数中第一个printf输出结果为( B )。
(A) a=9,b=5 (B) a=5,b=9 (C) a=10,b=6 main函数中第二个printf输出结果为( C )。
(A) a=9,b=5 (B) a=5,b=9 (C) a=10,b=6
(D) 11,41,21 (D) 12,42,22
(D) a=6,b=10 (D) a=6,b=10
1、读下面程序,回答问题。
#include \void sort(int a[],int n) {
int i,j,t;
for(i=0;i
void main() {
int x[10]={1,0,-76,4,8,12,65,100,-45,123}; int i;
sort(x+5,5);
printf(\}
(1)程序中sort函数的功能是( )
(A)用起泡法对含有n个元素的数组a从小到大的排序
(B)用选择法对含有n个元素的数组a从大到小的排序
(C)用二分法对含有n个元素的数组a从小到大的排序 (D)用起泡法对含有n个元素的数组a从大到小的排序()
(2)该程序的运行输出结果为( )
(A) -76 (B) -45 (C) 8 (D) 123 2、读程序并回答问题
# include
void fun(int *a,int bott,int top) {
int i,j,t;
i=bott; j=top; while(i { t=a[i]; a[i]=a[j]; a[j]=t; i++;j--; } } void main() { int a[10]={1,2,3,4,5,6,7,8,9,0},i; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(i=0;i<10;i++) printf(\ } 函数fun的功能是(A )。 (A) 将下标为bott 到 top 之间的数组元素逆置 (B) 将下标为bott 到 top 之间数组元素进行升序排列 (C) 将下标为bott 到 top 之间数组元素进行降序排列 (D) 将下标为bott 和下标为 top 的两个元素互换 程序的运行结果为(C )。 (A)0987654321 (B) 4321098765 (C) 5678901234 (D) 0987651234 3、在下面程序中(考点:数组、函数(地址参数)、删除字符算法) # include int i,j; for(i=0,j=0;s[i]!='\\0';i++) if(s[i]>='0' && s[i]<='9') { s[j]=s[i]; j++; } s[j]='\\0'; } void main() { char s[20]=\ fun(s); printf(\ printf(\} (1) 第1个printf输出的结果为( C )。 (A) 8 8 (B) 20 8 (C) 20 20 (2) 第2个printf输出的结果为( A )。 (A) abcd (B) ab12cd (C) 1234 4、读程序并回答问题。 # include long z; if(n==0|| n==1) z=1; else z=n*fun(n-2); return z; } void main() { long z; (D) 20 4 (D) ab12cd34 int n; scanf(\ z=fun(n); printf(\} 若输入n的值为6,则程序的输出结果为( C )。 (A) 21 (B) 15 (C) 48 (D) 720 以下哪个非递归程序与函数fun的功能相同( A )。 (B) long fun(int n) (A) long fun(int n) { { int i; int i; long z; long z; for(i=n,z=0;i>0;i-=2) for(i=n,z=1;i>0;i-=2) z=z+i; z=z*i; return z; retrun z; } } (C) long fun(int n) { int i; long z; for(i=n,z=1;i>0;i--) z=z*i; retrun z; (D) long fun(int n) { int i; long z; for(i=n,z=0;i>0;i--) z=z+i; return z; } 命令行参数 1、下列程序编译连接后生成可执行文件CAD.EXE,输入以下命令行: CAD FILE1 FILE2 void main(int argc,char *argv[]) { int i; printf(\ for(i=0;i<=argc-1;i++) printf(\ printf(\ } (A) 2 (B) 3 cadfile1file2 cadfile1file2 (C) 2 (D) 3 CAD.EXEFILE1FILE2 CAD.EXEFILE1FILE2 选择结构(if) 1、if语句的一般形式可写为 if(expr) 语句1; else 语句2; 其中,作为条件判断的表达式expr( B)。 (A)可以是任意表达式 (B)只能是关系表达式或逻辑表达式 (C)不能使算术表达式 (D)不能是赋值表达式 2、 设有定义:int a=1,b=2,c=3; ,以下语句中执行效果与其它三个不同的是( C )。 (A) if(a>b) c=a,a=b,b=c; (B) if(a>b) {c=a,a=b,b=c; } (C) if(a>b) c=a;a=b;b=c; (D) if(a>b) {c=a;a=b;b=c;} 3、有如下程序 #include \void main() { int a=2,b=-1,c=2; if(a 该程序的输出结果是(C )。 (A) 0 (B) 1 (C) 2 (D) 3 4、若有定义int a=1,b=3,c=5,d=4,x;则执行以下程序段后x的值为(D)。 if(a if(c A) 1 B) 3 C) 6 D) 2 5、有下面程序 int main(void) { int a,b,c,x=1,y=2,z=3; scanf(\ if(a>b>c) x=y;y=z;z=x; printf(\} (1)若运行改程序时从键盘输入3,2,1,则程序的输出结果为(C )。 (A)2,3,2 (B)1,3,1 (C)2,3,1 (D)1,2,3 (2)若运行改程序时从键盘输入-3,-2,-1,则程序的输出结果为( D)。 (A)2,3,2 (B)1,3,1 (C)2,3,1 (D)1,2,3 6、有下列程序: # include int x=100,a=10,b=20; int v1=5,v2=0; if(a printf(\} (1)程序的运行结果是( B ) (A) 100 (B) 1 (C) 10 (2)if(v2)与下列选项相同的是( A ) (A) if(v2==0) (B) if(v2!=0) (C) if(v2==1) (D) -1 (D) if(v2!=1) 选择结构(switch) 1、以下选项中与if(a==1)a=b; else a++; 语句功能不同的switch语句是 ( A ) 。 (A) switch(a) (B) switch(a==1) { case 1: a=b;break; { case 0: a=b;break; default:a++; case 1:a++; } } (C) switch(a) (D) switch(a==1) { default:a++;break; { case 1:a=b;break; case 1: a=b; case 0:a++; } } 2、有下列程序: # include int x=10,y=5; switch(x) { case 1: x++; default: x+=y; case 2: y--; case 3: x--; } printf(\} 执行下列程序后,输出结果为( B )。 (A) x=15, y=4 (B) x=14, y=4 (C) x=10, y=5 (D) x=15, y=5 3、读下面程序并回答问题: #include \void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } case 2: a++;b++;break; } printf(\} (1)程序的运行结果为( C)。 (A) 2,1 (B) 1,2 (C) 1,1 (D) 0,0 (2)将程序中的switch(x)更改为switch(x!=1),其程序运行结果是( (A) 2,1 (B) 1,2 (C) 1,1 (D) 0,0 4、阅读下面的程序: #include scanf(\ if(s<0||s>100)printf(\else { switch(s/20) { case 0: case 1: case 2:printf(\ case 3:printf(\case 4: case 5: switch(s/45) D )。 { case 1:printf(\case 2:printf(\} } } } (1)若运行该程序时从键盘输入45,则运行输出为(C)。 A) DCBA B) DCB C) DC D) D (2)若运行该程序时从键盘输入100,则运行输出为(D)。 A) DCBA B) DBA C) BA D)C 5、有如下程序 int main(void) { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++,b++; } printf(\} (1)程序的运行结果为(c )。 (A)a=2,b=1 (B)a=1,b=1 (C)a=1,b=0 (D)a=2,b=2 (2)当在case 1:a++;后面添加语句break;程序的运行结果为(c )。 (A)a=2,b=1 (B)a=1,b=1 (C)a=1,b=0 (D)a=2,b=2 循环结构 1、下列程序段中,不是无限循环的是(C )。 (A) (B) k=0; j=100; do while(1) { ++k; } { j=j0+1; whiel(k-->=0); if( j>100 ) break; } (C) (D) s=3333; for( ; ; ); while(s%2+s++%2); 2、求取满足式12+22+32+??+n2≤1000的n,正确的语句是(A )。 (A) for(i=1,s=0;(s=s+i*i)<=1000;n=i++); (B) for(i=1,s=0;(s=s+i*i)<=1000;n=++i); (C) for(i=1,s=0;(s=s+i*++i)<=1000;n=i); (D) for(i=1,s=0;(s=s+i*i++)<=1000;n=i); 3、以下叙述中正确的是(B )。 (A) C语言中所有的循环语句都是先判断条件再执行循环体 (B) break语句只能中断循环 (C) continue 语句可以结束所有的循环 (D)C语言中,任意表达式都可作为循环条件,只要能做出0和非0的判断即可 一、 单项选择题 R1、以下标识符中,不能作为合法的C用户定义标识符的是:( ) A .a3_b3 B.void C._123 D.abc R2、C语言规定:在一个源程序中,main函数的位置( )。 A.必须在最后 B.必须在系统调用的库函数的后面。 C.必须在最开始。 D.可以任意 R3、下列说法中正确的是( )。 A. C程序书写时,不区分大小写字母 B. C程序书写时,一行只能写一个语句 C. C程序书写时,一个语句可分成几行书写 D. C程序书写时每行必须有行号 4、 已知ch是字符型变量,下面不正确的赋值语句是 ( )。 A.ch = 5 + 9 ; B.ch= ' a' + b '; C. ch = ' \\ 0 '; D. ch= '7' + '6' ; 5、 若有定义:int a = 7; float x = 2.5 , y = 4.7 ; 则表达式 x + a % 3 * (int) (x + y) % 2/4 的值是( )。 A. 2.750000 B. 0.00000 C. 3.500000 D. 2.500000 6.已知ch是字符型变量,下面正确的赋值语句是( )。 A.ch = '123' ; B. ch=' \\08 '; C. ch =' \\xff '; D.ch =\ 1. 以下标识符中,不能作为合法的C用户定义标识符的是:____________。 A)a3_b3 B)void C)_123 D)abc 2.C语言中,运算对象必须是整型的运算符是__________。 A) % B) / C) %和/ D) * 7. 在 C 程序中,用___________表示逻辑值“真”。 A)1 B)非 0 的数 C)非 1 的数 D) 大于 0 的数 N8.设int c=5和int a; a=2+(c+=c,c+8,++c), 则a=__________ A) 15 B) 14 C) 13 D) 16 9.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符________。 A)必须为字母或下划线。 B)必须为下划线。 C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。 10. 若变量已正确定义并赋值,表达式____________不符合C语言语法。 A)a*b/c; B)3.14%2 C)2, b D)a/b/c 11. 下列说法中正确的是___________。 A) C程序书写时,不区分大表达式小写字母了 B) C程序书写时,一行只能写一个语句 C) C程序书写时,一个语句可分成几行书写 D) C程序书写时每行必须有行号 12.为表示数学关系x≥y≥z,正确的C语言表达式是__________。 A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) (x>=y>=z) D) (x>=y)&(y>=z) 13.不合法的八进制数是________ A) 0 B) 028 C) 077 D)01 14、以下不能定义为用户标识符是 A Main B _0 C _int D sizeof 15.若x=5,y=4 则y*=x+5;等价于y=y*(x+5) y的值为( )。 A. 40 B. 20 C B. 15 D. 30 16、组成C语言程序的基本单位是( )。 A) 过程 B) 子程序 C) 函数 D) 主程序和子程序 17.下列哪个标识符是C语言合法的标识符( )。 A) a*b B) -xyz C) ba2 D) 5i N18.若有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)/4的值是( )。 A) 2.75 B) 3.5 C) 2.5 D) 0 19.设int m=1,n=2;则++m= =n的结果是( ) A、0 B、1 C、2 D、3 N20. 若变量已定义并赋值,下列符合C语法的表达式是:( A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b ) R(3)在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达 式最后的运算结果类型是( ) A.int B.char C.unsigned D.long R21.C语言中基本的数据类型包括__________。 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型 N22. 若定义x和y为double类型,则表达式:x=2,y=x+5/2的值是__________ A) 4 B) 4.5 C) 4.0 D) 3.0 23. 在以下运算符中,优先级最高的运算符是__________ A) ? : B) ++ C) && D) += 24.C语言中基本的数据类型不包括__________。 A) 整型 B)字符串型 C)字符型 D)实型 25. 若定义int x=7,y=5,z;则表达式:z=x+5/2*y的值是__________ A) 7 B) 7.5 C) 17 D) 19.5 6.以下说法中正确的是( ) A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行 D、C语言程序中的main()函数必须放在程序的开始部分 (1)设int a=2,b;则执行b=a&&1;语句后,b的结果是( ) A.0 B.1 C.2 D.3 N(2)逗号表达式(a=3*5,a*4),a+15的值是( ) A.15 B.60 C.30 D.75 7. 若已经定义了一个字符型变量为a,下面哪个表达式的含义跟其余表达式不同: A) a!=0 B) a!=’\\0’ C) a D) !a 8. 在以下运算符中,优先级最高的运算符是__________ A) , B) [] C) && D) += 9. 在C语言中,逻辑值“真”用__________表示。 A) true B) 大于0的数 C) 非0的整数 D) 非0的数 10. 表达式__________是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式 A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5) C) (c==1)&&(c==3)&&(c=5) D) (c==1)||(c==3)||(c==5) 1.C语言中,int类型数据占2个字节,则long类型数据占( ) A、1个字节 B、2 个字节 C、3个字节 D、4个字节 1.下列字符串是合法的标识符的是( )。 A、_HJ B、9_student C、 long 2.下列说法中正确的是( )。 A、 C程序书写时,不区分大小写字母 D、LINE 1 B、 C程序书写时,一行只能写一个语句 C、 C 程序书写时,一个语句可分成几行书写 D、 C程序书写时每行必须有行号 3.在C语言中,要求参加运算的数必须是整数的运算符是( )。 A、/ B、! C、% D、= = 4.C语言中,逻辑“真“等价于( )。 A、大于零的数 B、大于零的整数 C、非零的数 D、非零的整数 6.假设在程序中a,b,c均被定义为整型,并且已赋大于1的值,则下列能正确表示 代数式1/abc的表达式是( )。 A、1/a*b*c B、1/(a*b*c) C、1/a/b/(float) c D、1.0/a/b/c 1.下列合法的字符常量是( )。 A、'\\084' B、'\\x43' C、'ab' ) D、sturct D、\ 2.在C语言提供的合法的关键字是( A、switch B、cher C、Case 3.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A、 2 B、 1 C、 2.0 D、2.5 第二章 C语言程序结构 在C语言中,逻辑值“真”用 表示。 11) 1 12) 大于0的数 13) 非0的整数 14) 非0的数 在循环语句的循环体中,continue语句的作用是( )。 15) 立即终止整个循环 16) 继续执行continue语句之后的循环体 17) 结束本次循环 18) 结束本次循环并跳出循环 语句while(!e);中,条件!e等价于( ) 19.e==0 20 .e!=0 21.e!=1 22.e==1 设int c=5和int a; a=2+(c+=c++,c+8,++c), 则a=__________ 23) 15 24) 14 25) 13 26) 16 c=c+c++ 若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为if ( ) 27) a<>0 28) !a 29) a=0 30) a 一、 单项选择题 N1、以下不是死循环的语句是_______。 for( ; ; x+i ); while (1) {x++;} for( i=10; ; i- -) sum+= i ; for( ; (c=getchar()) != ?\\n? ; ) printf(“%c” , c) ; 2.设有程序段 int k = 10 ; while ( k = 0 ) k = k - 1 ; 以下描述正确的是 ( )。 A. 循环体语句一次也不执行。 B. 循环是无限循环。 C. while 循环语句执行十次。 D. 循环体语句执行一次。 N3.对下述程序,正确的判断是( )。 main( ) { int a,b; scanf (\if(a>b)a=b; b=a; else a++; b++; printf(\ } A. 有语法错误不能通过编译 B. 若输入4,5则输出5,6 C. 若输入5,4则输出4,5 D. 若输入5,4则输出5,5 R4. 以下程序 main() { int i=010,j=10,k=0x10; printf(\}有语法错误不能通过编译 输出结果是( ) A.8,10,16 B.8,10,10 C.10,10,10 D.10,10,16 R5. 若变量已正确说明为int类型,要给a,b,c输入数据,以下语句正确的是__________ A) read(a,b,c); B) scanf(“%d%d%d”,a,b,c); C) scanf(“%D%D%D”,&a,%b,%c); D) scanf(“%d%d%d”,&a,&b,&c); R6.已知在ASCII字符集中,字符0的ASCII值为48,下面程序的输出结果为__________。 main() { char x,y; x=’0’;y=’9’; pirntf(“%d,%d\\n”,x,y); } A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,58 7. 语句 for(k=0;k<5;++k) { if(k= = 3) continue; printf(“%d”,k); }的输出结果为_________。 A)012 B) 0124 C) 01234 D) 没有输出结果 8.为表示关系x>=y>=z,应使用C语言表达式___________。 A)(y<=x)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) 6. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和___________等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 9.以下程序的输出结果是__________ void main() { int a = 2,b = 5; printf(“a=%%%d,b=%%%d”,a,b); } A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d N10.以下程序的输出结果是__________ void main() { int x=10,y=10; printf(“%d %d\\n”,x--,--y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 11.若要表示if( a不等于0 )这一关系式,则能正确表示这一关系的表达式为 if (__________) A) a<>0 B) !a C) a=0 D) a R12对于循环语句while(1);下面( )是正确的 A、死循环 B、循环一次 C、不进入循环体 D、编译有错 13.下面程序的输出是(假设 int 数据是 2 个字节) void main() { int a = 32768; printf(“a=%d\\n”,a); } A) a=32768 B) a=32767 C) a=-32768 D) a=-1 14.表达式__________是满足:当c的值为1、3、5三个数中任意一个时值为“真”,否则值为“假”的表达式 A) (c=1)||(c=3)||(c=5) B) (c!=1)&&(c!=3)&&(c!=5) C) (c==1)&&(c==3)&&(c=5) D) (c==1)||(c==3)||(c==5) N15. 以下程序段的输出结果是_____ int x=3; do { printf(\ while (!(--x)); A) 1 B) 3 0 C) 1 -2 D) 死循环 16、数字字符0的ASCII值为48,若有以下程序 main() { char a='1',b='2'; printf(\ printf(\ } 程序运行后的输出结果是 A 3,2 B 50,2 C 2,2 D 2,50 17、有以下程序 main() { int a,b,d=25; a = d/10 & (-1); b = a && (-1); printf(\ } 程序运行后的输出结果是 A 6,1 B 2,1 C 6,0 D 2,0 18.若定义float a;现要从键盘输入a的数据,其整数位为3位,小数位为2位,则选用( )。 A)scanf(\ B) scanf(\C) scanf(\ D) scanf(\19.若定义int i; 则以下循环语句的循环执行次数是( )。 for(i=2; i==0;) printf(\ A) 无限次 B) 0次 C) 1次 D) 2次 20.下面程序段___ x=3; do { y=x--; if(!y){printf(\ printf(\} while(1<=x<=2); A) 将输出## C) 是死循环 21.以下程序中,while循环的循环次数是( )#include “stdio.h” main( ) {int i=0; while(i<10) {if(i<1)continue; if(i= =5)break; i++; } } A、1 B、10 C、6 DN 22.有以下程序: #include “stdio.h” int a=3; main( ) { int s=0; { int a=5; s+=a++; } s+=a++;printf(\ B) 将输出##* D) 含有不合法的控制表达式 。 、死循环,不能确定次数 } 程序运行后的输出结果是( )。 A、8 B、10 C、7 D、11 23(4)下面程序段的运行结果是( ) main ( ) {int a=11,b=10,c=0; a/=b+(b&&c); printf(″%d\\n″a);} A.0 B.1 C.1.1 D.11 24(5)两次运行下面程序,如果从键盘上分别输入6和4,则程序的输出结果是( main ( ) {int x; scanf(″%d″,&x); if(x++>5) printf(″%d″,x); else printf(″%d\\n″,x-1);} A.7和5 B.6和3 C.7和4 D.6和4 (6)语句while(!e);中,条件!e等价于( ) A.e=0 B.e!=0 C.e!=1 D.e==0 R25下面程序的输出是______ main() { int k=11; printf(\ } A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b 26(7)下面程序的运行结果是( ) main( ) {int i=1,sum=0; lop:sum=sum+i ; ) i=i+2; if(i<6)goto lop; printf (″sum=%d\\n″,sum);} A.sum=4 B.sum=9 C.sum=16 D.sum=25 27. 以下程序的输出结果是__________ void main(){ int a = 2,b = 5; printf(“a=%%%d,b=%%%d”,a,b); } A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d 28执行下面的程序后,a的值为_____ main() { int a,b; for (a=1,b=1;a<100;a++) { if (b>=20) break; if (b%3==1) { b+=3; continue; } b-=5; } } A) 7 B) 8 C) 9 D) 10 29 30.下面的程序会( ) main() { int x=3,y=0,z=0; if(x=y+z) printf(“****”); else printf(“####”); } A、有语法错误不能通过编译 B、输出**** C、可以通过编译,但不能通过连接,因而不能运行 D、输出#### 4.以下程序的输出结果是( ) main() { int x=10,y=10,i; for(i=0;x>8;y=++i) printf(“%d %d”,x--,y); } A、10 1 9 2 B、9 8 7 6 C、10 9 9 0 D、10 10 9 1 1.下面程序的输出是______ main() { int k=11; printf(\ } A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b 2.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是____ main() { int x; scanf(\ if (x++>5) printf(\ else printf(\ } A) 7和5 B) 6和3 C) 7和4 D) 6和4 3.读程序 #include”stdio.h” main() { int a; float b,c; scanf(\ printf(\ } 若运行时从键盘上输入9876543210 A) a=98,b=765,c=4321 B) a=1,b=432,c=8765 C) a=98,b=765.000000,c=4321.000000 D) a=98,b=765.0,c=4321.0 5.下面程序的输出是____ main() {int x=3,y=6,a=0; while (x++!=(y-=1)) { a+=1; if (y } printf(\ } A) x=4,y=4,a=1 B) x=5,y=5,a=1 C) x=5,y=4,a=3 D) x=5,y=4,a=1 第三章 数组 已有定义:char a[]=\以下叙述中正确的是 20 数组a和b的长度相同 21 a数组长度小于b数组长度 22 a数组长度大于b数组长度 strlen(a)==strlen(b)=3 设有数组定义:char array[]=\;则数组array所占的存贮空间为 个字节. 23 4 24 5 25 6 26 7 若定义int x[10];则Turbo C编译系统为该数组分配 个字节存储单元。 27 .10 28 .11 29 .20 30 .21 一、 单项选择题 R1、对两个数组a和b进行如下初始化 char a[7]=\ char b[6]={’A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是 ( ) A) a与b数组完全相同 B) a与b长度相同 C) a和b中都存放字符串 D) a数组比b数组长度长 R2.若有说明:int a[3][4];则对a数组元素的正确引用是( ) A.a[2][4] B.a[1,3] C.a[1+1][0] D.a(2)(1) R3.合法的数组定义是 ( ) A、int a[]=\ B、int a[5]={0,1,2,3,4,5}; C、vhst s=\ D、char a[]={0,1,2,3,4,5}; 4.以下正确的声明是( )。 A. int a[1][4]={1,2,3,4,5}; B. float x[3][]={{1},{2},{3}}; C. long b[2][3]={{1},{1,2},{1,2,3}}; D. double y[][3]={0}; 5下列语句的执行结果是( )。 static char str[10]={“china”}; printf(“%d”,strlen(str)); A.10 B.6 C.5 D.0 R6、以下能正确定义一维数组的选项是 A int a[5]={0,1,2,3,4,5}; B char a[]={0,1,2,3,4,5}; C char a={'A','B','C'}; D int a[5]=\7.下面程序段的运行结果是( )。 char a[7]=”abcdef”; ABC\\0ef char b[4]=”ABC”; strcpy(a,b); printf(“%c”,a[5]); A.空格 B.\\0 C.e 8定义如下变量和数组,则输出结果是( )。 int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(\ A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9 9.下列对一维数组a的正确说明语句为( )。 A) int a(10); B) int n=10, a[n]; C) int n; scanf(\ D) #define SIZE 10 int a[SIZE]; 10.下列二维数组的说明中,不正确的是( ) A、float a[3*8][7-3] B、float a[][3]={0,1,8}; C、#define L 3 float a[L][3] D、int a[6],[7] 11. 执行以下程序段后,s的值是 int a[]={5,3,7,2,1,5,4,10}; int s=0,k; for(k=0;k<8;k+=2) s+=*(a+k);s=s+a[k] A、17 B、27 C、13 D、无定值 D.f 12. 若有定义:char c[10];从键盘输入“LiFang”,则正确的函数引用是( ) A.scanf(“%c”,&c[10]); B.gets(c); C.scanf(“%s”,&c); D.gets(c[10]); N13. 以下程序的输出结果是_________。 main() { char s1[20]=“China”,s2[20]=“for”,s[10]; if(strcmp(s1,s2)!=0) printf(“%s\\n”, strcat(s2,s1)); else printf(“%d\\n”,strlen(s1)); } A) Chinafor B) 5 C) forChina D) 3 14选择下面程序运行的结果: #include “stdio.h” int m[3][3]={{1},{2},{3}}; int n[3][3]={1,2,3}; main() { printf(\ printf(\} 第1条printf语句行输出的结果为( ) A、0 B、1 C、3 D、2 R15(9)以下对一维数组a中的所有元素进行正确初始化的是( ) A.int a[10]==(0,0,0,0); B.int a[10]={ }; C.int a[]={0}; D.int a[10]={10*2}; 16(10) (8)若定义int x[10];则Turbo C编译系统为该数组分配( )个字节存储单元。 A.10 B.11 C.20 D.21 N18.有如下程序 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf(“%d”,s); } 该程序的输出结果是 A、18 B、19 C、20 D、21 N19.执行下列程序时输入123<空格>456<空格>789<回车>,输出结果是( )。 #include “stdio.h” main( ) {char s[100]; int c, i; scanf(\ scanf(\ scanf(\printf(\} A、123,456,789 B、1,456,789 C、1,23,456,789 D、1,23,456 20.以下程序的输出结果是_____ main() {char str[12]={'s','t','r','i','n','g'}; printf(\不算\\0,sizeof算\\0) } A) 6 B) 7 C) 11 D) 12 21.合法的数组定义是 ( ) A、int a[]=\ C、vhst s=\ B、int a[5]={0,1,2,3,4,5}; D、char a[]={0,1,2,3,4,5}; 22.以下正确的声明是______。 A. int a[1][4]={1,2,3,4,5}; N23.阅读下面程序,回答问题。 #include “stdio.h\void main() { int i,j row,column,m; static int array[3][3] = {{100,200,300},{28,72,-30},{-850,2,6}}; m = array[0][0]; B. float x[3][]={{1},{2},{3}}; D. double y[][3]={0}; C. long b[2][3]={{1},{1,2},{1,2,3}}; for(i=0;i<3;i++) for(j=0;j<3;j++) if(array[i][j] m = array[i][j]; row = i; column = j; } printf(“%d,%d,%d”,m.row.column); } 该程序的功能是()。 A、计算二维数组的元素和 B、求二维数组的最小值及其下标 C、对二维数组进行排序 D、求二维数组的最大值及其下标 24. 若有以下程序段: int a[]={4,0,2,3,1},k,j,t; for(j=1;j<5;j++) { t=a[j]; k=j-1; while(k>=0&&t>a[k]) {a[k+1]=a[k];k--;} a[k+1]=t; } 则该程序段的功能是___(8)____ A) 对数组a进行插入排序(升序)。 B) 对数组a进行插入排序(降序)。 C) 对数组a进行选择排序(升序)。 D) 对数组a进行选择排序(降序)。 N25. 执行如下程序段,当输入为I am A)I am sad! B)Isad! C)I sad! D)sad! 8. 9. 4. 4、 3. main() { int a[10]={1,2,3,-4,5,6,7,-8,9,10},s=0; for(int i=0;i<10;i++) { if (a[i]<0) break; s+=a[i]; } printf(\ } (3)下面程序的输出是 # include “stdio.h” # include “stdlib.h” main() { char str1[20],str2[20]; scanf(“%s”,str1); //从键盘输入Hello world printf(\输出结果1 fflush(stdin); gets(str2); //从键盘输入Hello world printf(\输出结果2 } 输出结果1是: (A)Hello (B)World (C)Hello World (D)World Hello 输出结果2是: (A)Hello (B)World (C)Hello World (D)World Hello 7. 1. 选择下面程序运行的结果: #include “stdio.h” int m[3][3]={{1},{2},{3}}; int n[3][3]={1,2,3}; main() { printf(\ printf(\} 第1条printf语句行输出的结果为( ) A、0 B、1 C、3 D、2 2. 还是刚才1题那个程序,第2条printf语句行输出的结果为( ) A、2 B、4 C、6 D、0 5.函数调用:strcat( strcpy( str1,str2 ),str3 )的功能是( ) A、将串str1复制到串str2中后再连接到串str3之后; B、将串str1连接到串str2之后再复制到串str3之后; C、将串str2复制到串str1中后再将串str3连接到串str1之后; C、将串str1复制到串str2中后再将串str3连接到串str2之后; 第四章 函数 一、 单项选择题 1、 C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 R2、若调用一个函数,且此函数 中没有return语句,则正确的说法是() 该函数 A.没有返回值 B.返回若干个系统默认值 C.能返回一个用户所希望的函数值 D.返回一个不确定的值 R3、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( ) A.float型 B.int型 C.long型 D.double型 R4、在C语言程序中,以下描述正确的是( ) A.函数的定义可以嵌套,但函数的调用不可以嵌套 B .函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 5. void main() { int f(int); int w = 2,k; for(k=0;k<3;k++) { w=f(w); printf(“%d\\n”,w); } } int f(int x) { int y=0; static int z=3; y++; z++; return (x+y+z) ; } 程序结束后,z的值为_______。 (1) A) 3 B) 4 C) 5 D) 6 R6.在一个被调用函数中,关于return语句使用的描述,错误的是( ) A、被调用函数中可以不用return语句 B、被调用函数中可以使用多个return语句 C、被调用函数中,如果有返回值,就一定要有return语句 D、被调用函数中,一个return语句可返回多个值给调用函数 7.以下程序输出的结果是( )。 #include {int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(\} A、12 B、13 C、14 D、15 8(2)若有如下函数定义: add(float x, float y) {??} 则下列说法正确的是( ) A.函数返回值类型不确定 B.函数返回值是float型 C.函数返回值是int型 D.函数返回值是void型 9 int x1=30,x2=40;// x1 x2是全局变量 void main() { int x3=10,x4=20 ; sub(x3,x4) ; sub(x2,x1); L1:printf(“%d,%d,%d,%d\\n”,x3,x4,x1,x2); } void sub(int x, int y) { x1=x ;x=y ;y=x1 ; L2 :printf(“%d,%d\\n”,x,y) ; } L1行输出结果为_______________。 (3) A) 10,20,30,40 B) 10,20,40,10 C) 20,10,40,30 D) 10,20,40,40 R10.以下对C语言函数的描述中,正确的是( )。 A、C程序由一个或一个以上的函数组成 B、C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数 D、C程序中调用关系的所有函数必须放在同一个程序文件中 11.以下函数值的类型是( )。 fun ( float x ) {float y; y= 3*x-4; return y; } A、int B、不确定 C、void D、float 12.一个C程序由函数A(),B(),C()和函数P()构成,在函数A()中分别调用了函数B()和函数 C(),在函数B()中调用了函数A(),且在函数P()中也调用了函数A(),则可以说( )。 A、函数B()中调用的函数A()是函数A()的间接递归调用 B、函数A()被函数B()调用是直接递归调用 C、函数P()直接递归调用了函数A() D、函数P()中调用的函数A()是函数P()的嵌套 13.下面函数调用语句含有实参的个数为( )。 func((a,b,c,d),(e,f,g)); A、1 B、2 C、4 D、以上都不对 14.已有函数max(a,b)为了让函数指针变量p指向函数max正是确的赋值方法是( )。 A、p=max; C、p=max(a,b); B、*p=max; D、*p=max(a,b); N15.下面程序运行的结果为: #include } main() { int m=3,n=4; printf(“The old:m=%d,n=%d\\n”,m,n); swap(m,n); Printf(“The new:m=%d,n=%d\\n”,m,n); } A、3,4 B、m=3,n=4 C、3,4 3,4 m=3,n=4 4,3 N16、选择程序的运行结果 。 main( ) { int x; x=try(5); printf (\ } try ( int n ) { if ( n>0 ) return ( n * try (n-2) ); else return(1); } A) 1 B) 15 C) 120 D) 答案均是错误的 17.有以下程序 viod fun (int a,int b,int c) { a=456; b=567; c=678;} main() { int x=10, y=20,z=30; fun (x,y,z);//值传递 D、m=3,n=4 m=4,n=3 printf(\} 输出结果是( )。 A.30,20,10 B.10,20,30 C.456,567,678 D.678,567,456 18.下列语句的执行结果是( )。 static char str[10]={“china”}; printf(“%d”,strlen(str)); A.10 B.6 C.5 D.0 N19.读程序,回答问题。 #include static int a = 3; int t = 0; if(n%2) { static int a = 4; t+=a++; } else { static int a= 5; t+=a++; } return t+a++; } void main() { int s=a,i; for(i=0;i<3;i++) s+=f(i); printf(\} 程序运行结果是()。 A、26 B、28 C、29 20.有如下程序 int func(int a,int b) { return(a+b); } main0 { int x=2,y=5,z=8,r; r=func(func(x,y),z); D、25 printf(“%d\\n”,r); } 该程序的输出的结果是 __________。 A)12 B) 13 C) 14 D) 15 21.有以下程序 viod fun (int a,int b,int c) { a=456; b=567; c=678;} main() { int x=10, y=20,z=30; fun (x,y,z); printf(\} 输出结果是_________。 A)30,20,10 B)、10,20,30 C)456,567,678 D)678,567,456 22.以下程序执行之后sum的值是_________。 main() { int i , sum; for(i=1;i<6;i++) sum+=i; printf(\} A)15 B)14 C) 不确定 D)0 N23.void main() { int f(int); int w = 2,k; for(k=0;k<3;k++) { w=f(w); printf(“%d\\n”,w); } } int f(int x) { int y=0; static int z=3; y++; z++; return (x+y+z) ; } 程序结束后,w的值为______。 (2) A) 20 B) 7 C) 28 D) 13 N24.int x1=30,x2=40;// x1 x2是全局变量 void main() { int x3=10,x4=20 ; sub(x3,x4) ; sub(x2,x1); L1:printf(“%d,%d,%d,%d\\n”,x3,x4,x1,x2); } void sub(int x, int y) { x1=x ;x=y ;y=x1 ; L2 :printf(“%d,%d\\n”,x,y) ; } L2行输出结果为____________。 (4) A) 10,20 B) 20,10 C) 10,20 40,10 10,40 10,40 25、有以下程序 void ss(char *s,char t) {while(*s) {if(*s==t) *s=t-'a'+'A'; s++; } } main() {char str1[100]=\ss(str1,c); printf(\} 程序运行后的输出结果是______。 A) ABCDDEFEDBD B) abcDDfefDbD C) abcAAfefAbA D) Abcddfefdbd D) 20,10 40,10 第五章 指针 第六章 下列说法中不正确的是( ) R10.指针是一个变量 11.指针中存放的是地址值 12.指针可以进行加、减等算术运算 13.指针变量不占用存储空间 设变量定义为“int x, *p=&x;”,则&*p相当于___________。 N18)p 19)*p 20)x 21)*&x 设变量定义为“int a[4];”,则表达式 不符合C语言语法。 22)*a 23)a[0] 24)a 25)a++ 已知:int *p, a;则语句“p=&a; ”中的运算符“&”的含义是( ) 26、位与运算 27、逻辑与运算 28、取指针内容 29、取变量地址 int n=0,*p=&n,**q=&p;则正确的赋值语句是 30 p=1; 31) *q=2; 32) q=p; 33) *p=5; 一、 单项选择题 1有以下程序(设其文件名为2-5.c) #include void main(int argc,char *argv[]) { int i; char *p; printf(\ if(argc>2) p=argv[1]; puts(p+1); } 若运行该程序时,在命令行提示符后输入 2-5 file1 file2 file3 则执行printf(“%d”,argc);时,输出结果为( 4) A 1 B 2 C 3 D 4 2有以下程序(设其文件名为2-5.c) #include void main(int argc,char *argv[]) { int i; char *p; printf(\ if(argc>2) p=argv[1]; puts(p+1); } 若运行该程序时,在命令行提示符后输入 2-5 file1 file2 file3 则执行puts(p+1);时,输出结果为( ile1) A file1 B file2 C ile1 D ile2 R3. 变量I的值为3,I的地址为1000,若欲使p为指向I的指针变量,则下列赋值正确的是___________。 A)&I=3 B)*p=3 C)*p=1000 D)p=&I 4. 有如下程序 #include void fun1(int *x,int *y) { int *z; z=x;x=y;y=z; } void fun2(int *x,int *y) { int z; z=*x; *x=*y; *y=z; (*x)++; (*y)++; } void main() { int a=5,b=9; fun1(&a,&b); printf(“a=%d,b=%d\\n”,a,b); fun2(&a,&b); printf(“a=%d,b=%d\\n”,a,b); } main函数中第一个printf输出结果为() (A)a=9,b=5 (B)a=5,b=9 (C)a=10,b=6 (D)a=6,b=10 注意:第二个printf输出结果为a=10,b=6 R5、 若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是( )。 A、*p B、a[10] C、*a D、a[p-a] 6、有以下程序 main() { int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++)p[i]=i; for(i=0;i<3;i++)printf(\ } 程序运行后的输出结果是 A 0 1 2 B 1 2 3 C 2 3 4 D 3 4 5 7以下程序的输出结果为_________。 char *alpha[6]={“ABCD”,”EFGH”,”IJKL”,”MNOP”,”QRST”,”UVWX”}; char **p; main() { int i; p = alpha; for(i=0;i<4;i++) printf(“%c”,*(p[i])); printf(“\\n”); } A) AEIM B) BFJN C) ABCD D) DHLP 8.下面程序输出数组中的最大值,由s指针指向该元素。 main() { int a[10]={6,7,2,9,1,10,5,8,4,3},*p,*s; for(p=a,s=a;p-a<10;p++) if( ) s=p; printf(“The max:%d”,*s); } 则在if语句中的判断表达式应是( ) A、p>s B、*p>*s C、a[p]>a[s] D、p-a>p-s R9(3)若有定义int *x[3],b[10];则正确的赋值语句是( ) A.x=b[0]; B.x=b; C.x[0]=b[0]; D.x[0]=&b[0]; R10若有以下定义,则______是对数组元素的正确引用。 int a[5],*p=a A). *&a[4] B、*(p+5) C、*++a D、*(p-1) 11.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是 A) char s[10]=”abcdefg”; B) char t[]=”abcdefg”,*s=t; C) char s[10];s=”abcdefg”; D) char s[10];strcpy(s,”abcdefg”); N12.#include int find(char *s1, char *s2) { int t; char *p1,*p2; for(t=0 ;s1[t] ;t++) { p1=&s1[t] ; p2=s2 ; while(*p2&&*p2==*p1)//先算*p2==*p1 { p1++; p2++; } if(!*p2) return(t); } return -1 ; } main() { if(find(“c is fun”,”is”)!=-1) L1: printf(“is”); if(find(“c is fun”,”Basic”)!=-1) L2:printf(“basic\\n”); } (11)行L1输出的结果为_________。 A is B i C c is fun D没有输出 (12)行L2输出的结果为________。 A Basic B c is fun C basic D没有输出 13.阅读下面程序,回答问题。 #include void main() { int i = 0,n = 0; char s[80],*p; p = s; strcpy(p,”This is test!”); for(;*p!=?\\0?;p++) if(*p= =? ?) i = 0; else if(i= =0) { n++; i=1; } printf(“n=%d\\n”,n); } 该程序的功能是()。 A、统计字符串的单词个数 B、统计字符串的空格个数 C、统计字符串的字母个数 D、统计字符串全部字符个数 N14.读程序并回答问题。 #include void fun(char *s,char *t) { char k; k = *s; *s = *t; *t = k; s++; t--; if(*s) fun(s,t); } void main() { char str[10] = \ p = str + strlen(str)/2+1; fun(p,p-2); printf(\} 程序的运行结果为( )。 A、abcdefg B、defgabc C、acegbdf D、gfedcba 15.读程序,回答问题。 #include void main(int argc,char *argv[] ) { int i=1,n=0; while(i n = n+strlen(argv[i]); i++; } printf(“%d\\n”,n); } 若该程序生成的可执行文件名为2-4.exe,运行时输入命令行: 2-4 123 45 67 则程序的运行结果是( )。 A、3 B、5 C、7 D、11 16.读程序,回答问题。 下面程序的输出是 # include main() { int m=3,n=6; test(&m,n); printf(\ %d\输出结果1 test(&n,m); printf(\ %d\输出结果2(9,15) } 输出结果1是: (A)9 6 (B)6 9 (C)3 6 (D)6 3 17.若有以下定义和语句,则值为12的表达式是_________。 struct wc{ int a;int *b;}*p; int x0[]={11,12},x1[]={31,32}; static struct wc x[2]={100,x0,300,x1}; p=x; A) *++p->b B) ++p->a C) p->b D) *(p++)->b 18. 以下程序的运行结果是______ void main() { int flag=1; char ch; do{ ch=getchar(); flag=chang(&ch,flag); putchar(ch); }while(ch!='\\n'); } chang(char *c, int fg) { if(*c==' ') return 1; else if( fg && *c<='z'&&*c>='a') *c+='A'-'a'; return 0; } 程序运行时,从第一列开始输入以下字符, static char str[50]=\ int sum1 = 0,sum2=0; while(*p!='\\0') { if(*p>=48&&*p<=57) sum1++; else if(*p>=101&&*p<=107) sum2++; else; p++; } printf(\} 程序的运行结果是______ A) 3,2 B) 2,3 C) 3,12 D) 12,3 R20、下面程序输出数组中的最大值,由s指针指向该元素。 main() { int a[10]={6,7,2,9,1,10,5,8,4,3},*p,*s; for(p=a,s=a;p-a<10;p++) if( ) s=p; printf(“The max:%d”,*s); } 则在if语句中的判断表达式应是( ) A、p>s B、*p>*s C、a[p]>a[s] D、p-a>p-s N21、下列程序: int *f(int *px, int *py) { return *px>*py?px:py; } void main() { int a=2, b=3, c=9; *f(&a,&b)=c; printf(\ } 执行后的结果是: A) 10 B)5 C) 9 D)程序有错,不能运行 22(1)下面程序的输出是 # include main() { int m=3,n=6; test(&m,n); printf(\ %d\输出结果1 test(&n,m); printf(\ %d\输出结果2 } 输出结果1是: (A)9 6 (B)6 9 (C)3 6 输出结果2是: (A)15 9 (B)6 15 (C)9 15 23(2)下面程序的输出是 # include { char *str[2]={“Hello”, ”World”}; D)6 3 (D)15 6 ( printf(\输出结果1 (5) printf(\输出结果2(5) } 输出结果2是:5 (A)Hello (B)World (C)Hello World (D)World Hello 24.下面的程序: #include char s[30],*p1,*p2; p1=s; gets(p1); p2=s; gets(p2) puts(p1);puts(p2); } 如果程序运行时的输入为: abc 那么程序输出的结果为(注: B、abc C、efgh abc void fun(char *a, char *b) { a=b; (*a)++; } main() { char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(\} 程序运行后的输出结果是 A) Ab B) aa C) Aa D) Bb D、efgh abc 第六章 预编译、结构体与共用体 以下叙述正确的是_________.——预编译之宏替换 (12)可以把define和if 定义为用户标识符 13)可以把define定义为用户标识符,但不能把if定义为用户标识符 (14)可以把if定义为用户标识符,但不能把define定义为用户标识符 (15)define和if都不能定义为用户标识符 正确答案:B .设有以下说明语句 typedef struct { int n; char ch[8]; }PER; 则下面叙述中正确的是__________.——数据类型重新命名 (16)PER是结构体变量名 (17)PER是结构体类型名 (18)typedef struct是结构体类型 (19)struct 是结构体类型名 正确答案:B 如果有struct wage {char name[30];float salary; }; 则struct wage worker1,worker2;定义了两个( )。 20.结构数据类型 21.结构类型变量 22.结构常量 23.一般变量 以下说法正确的是 。 (24)结构体成员变量可以用作函数的形式参数。 (25)结构体数组名可以用作函数参数,发生函数调用时传递的是地址数据。 (26)结构体数组的元素不能用作函数的实际参数。 (27)结构体成员变量的指针不能用作函数的实际参数。 以下关于typedef的叙述中,错误的是 。 (28)使用typedef为固定长度的数组定义一个新的类型名 (29)用typedef可以在C语言中创建新的数据类型 (30)用typedef只是将已存在的类型用一个新的标识符来代表 (31)使用typedef有利于程序的移植 32.文件包含是指一个源文件可以将另一个源文件的全部内容包含进来。 33.文件包含处理命令的格式为 #include “包含文件名” 或 #include <包含文件名> 34.一条包含命令可以指定多个被包含文件 35.文件包含可以嵌套,即被包含文件中又包含另一个文件。 36.可以把define和if定义为用户标识符 37.可以把define定义为用户标识符,但不能把if定义为用户标识符 38.可以把if定义为用户标识符,但不能把define定义不用户标识符 39.define和if都不能定义为用户标识符 一、 单项选择题 N1.以下程序的输出的结果是( ) main() { union { char i[2]; int k; } r; r.i[0]=2; r.i[1]=0; printf(“%d\\n”,r.k); } A、 2 B、 1 R2.以下程序的输出结果是 main( ) { struct { int i; char c; float a; } test; printf(”%d\\n”, sizeof(test)); } A、4 B、5 C、6 D、7 3 7.1 若有以下声明和语句: struct sk {int a; float b; }data; struct sk *p=&data; 则对data中成员a的正确引用形式是 。C、 0 D、不确定
efgh
表示回车): A、abc
efgh
efgh
25.有以下程序
正在阅读:
C语言题目04-22
2010年第二期四川省药品质量公告(总第20期)药品抽验不合格品种06-08
忘不了您的目光作文600字06-29
未来的翻译器作文400字06-16
新人教版五年级上册数学《用字母表示数》教学设计板书设计教案09-24
县工业信息化局年度工作总结及2022年行业扶贫工作计划05-04
小城的夜晚作文550字06-22
高中生物第二章动物生命活动的调节2.2神经系统的结构与功能导学03-11
风景在路上作文400字07-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 题目
- 语言
- -后补助-专项资金是否可作为不征税收入?-财税法规解读获奖文档
- 测绘技术工作岗位实习总结报告范文
- 材料与化工学院团学科大会通讯稿
- 光电子材料和器件复习资料
- 江苏省盐业集团2017年公开招录工作人员考试试题
- 学生行为十不准、安全十不准
- 二年级必备古诗十六首 注音加注释
- 《比较文学》复习题
- 2016年咨询工程师继续教育考试火电专业:电网技经部分试卷(94分
- 上海 维修电工高级(三级)1+X职业技能鉴定考核指导手册试题答案
- IATF16949监视测量设备控制程序
- 《诗经》爱情诗中的水意象研究
- 出口退(免)税企业办税指南
- 格力电器企业文化建设存在的问题与对策分析
- 2017年福建省二级C语言试卷真题
- 61单片机语音控制小车 - 图文
- 对司法行政机关警务督察的思考
- 医疗机构的污水、污物、粪便处理方案
- 2014-2015学年高中历史 第六单元 中国社会主义的政治建设与祖国
- 贺年片