1、《C次序 方案 》期末复习练习 题及参考答案 (4)
一、单项选择 题
1.有如下次序 片断 :
#include
2、x=12 b=3, y=6 D) 以上均差错 2.有以下次序 片断 : typedef struct { int b; int p; }TYPEA; void f(TYPEA c) { c.b += 1; c.p += 2; } main() { TYPEA a ={1, 2}; f(a); printf("%d,%d\n", a.b, a.p); } 那么次序 运行 后的输出结果是 。 A) 2,3 B)2,4 C)1,4 √D)1,2 3.对于 以
3、下次序 片断 ,描画精确 的选项是 。 int x= -1; do {x=x*x;}while(!x); A)是去世 循环 B)循环 实行 两次 √C)循环 实行 一次 D)有语法差错 4. 一个指针数组的定义 为 。 A) int (*ptr)[5]; √B) int *ptr[5]; C) int *(ptr[5]); D) int ptr[5]; 5. 以下选项中不是合理 用户标识符的是〔 〕。
4、 A) Double √B) unsigned C) intege D) Char 6. 已经清楚 ch是字符型变量,以下不精确 的赋值语句是〔 〕。 √A) ch="a"; B) ch='a'; C) ch='\x61'+3; D) ch='\141'; 7. 经过下述赋值后,变量x的数据典范 是〔 〕。 int x=3; double y; y = (double) x; √A) int B) char C) float D) double 8.
5、假设 以下次序 运行 时给变量x输出12,那么次序 实行 后的输出结果是〔 〕。 int main() { int x, y; scanf("%d",&x); y = x > 12? x + 10: x – 12; printf("%d\n",y); } √A) 0 B) 10 C) 12 D) 22 9. 假设 有定义 :int a=7; float x=2.5,y=4.7; 那么表达 式x+a%3*(int)(x+y) %2/4的值是〔 〕。 A) 0.000000 √B)2.500000 C
6、) 2.750000 D) 3.500000 10. 假设 有以下代码,那么以下表达 精确 的选项是〔 〕。 int t = 0; while(t = 1) {...} A) 循环 把持 表达 式的值为0 √B) 循环 把持 表达 式的值为1 C) 循环 把持 表达 式不合 法 D) 以上说法都差错 11. 已有定义 :char a[]="xyz", b[] = {'x','y','z'};, 以下表达 精确 的选项是〔 〕。 A) 数组a跟 b的长度一样。 B) a数组长度小于
7、b数组长度。 √C) a数组长度大年夜 于b数组长度。D) 上陈说 法都差错 。 12. 设有定义 :int n1 = 0, n2, *p = &n2, *q = &n1;,那么以下赋值语句中与 n2 = n1;语句等价的是〔 〕。 √A) *p = *q; B) p = q; C) *p = &n1; D) p = *q; 13. 已经清楚 函数的调用 方法 :fread(buf, SIZE, count, fp);,其中 参数buf的含义 是〔 〕。 A) 一个整型变量,代表要读入的数据项总跟 。 B)
8、 一个文件指针,指向要读的文件。
√C) 一个指针,指向要读入数据的存放所在 。
D) 一个存储区,存放待读的数据项。
14. 假设 有定义 :char *p = "abcd"; char c[]="abcd";,那么以下语句中差错 的选项是〔 〕。
A) printf("%c\n", *(p++) ); B) printf("%s\n", p );
√C) printf("%c\n", *(c++) ); D) printf("%s\n", c );
15. 有以下次序
#include
9、 { int y; if(x==0||x==1) return(3); y=x*x-f(x-2); return y; } main() { int z; z=f(3); printf("%d\n",z); } 次序 的运行 结果是〔 〕。 A)0 B)9 √C)6 D)8 16. 〔T3-39〕阅读 以下次序 ,那么运行 结果为〔 〕。 #include "stdio.h" fun() { static int x=5; x++; return x;}
10、main() { int i,x; for(i=0;i<3;i++) x=fun(); printf("%d\n",x);} A)5 B)6 C)7 √D)8 17. 下面次序 段的运行 结果是〔 〕。 char str[]="ABC",*p=str; printf("%d\n",*(p+3)); A)67 √B)0 C)字符′C′的所在 D)字符′C′ 18. 下面的次序 段运行 后,输出结果是〔 〕。 int i,j,x=0; static int a[8]
11、[8]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=2*i+j; for(i=0;i<8;i++) x+=a[i][j]; printf("%d",x); A)9 B)不判定 值 √C)0 D)18 19. 以下次序 实行 后的输出结果是〔 〕。 void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]; a=0; b[0]=3; func(&a,b); printf("%d\n",b
12、[0]);} √A)6 B)7 C)8 D)9 20. 〔T3-28〕阅读 以下次序 段,那么次序 的输出结果为〔 〕。 #include "stdio.h" #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() { int a=5,b=6,c=8,k; k=N(M(a,b),c); printf("%d\n",k); } √A)3 B)5 C)6 D)8 21. 对于 for(表达 式1; ;表达 式3)可理解为〔 〕。 A) f
13、or(表达 式1;0;表达 式3) √B) for(表达 式1;1;表达 式3) C) for(表达 式1;表达 式1;表达 式3) D) for(表达 式1;表达 式3;表达 式3) 22. 合理 的数组定义 是〔 〕。 A) int a[6]={"string"}; B) int a[5]={0,1,2,3,4,5}; C) char a={"string"}; √D) char a[]={0,1,2,3,4,5}; 23. 给出以下定义 : char x[ ]="abcdefg"; char y[ ]={'a','b','c','
14、d','e','f','g'}; 那么精确 的表达 为〔 〕。 A) 数组x跟 数组y等价 B) 数组x跟 数组y的长度一样 √C) 数组x的长度大年夜 于数组y的长度 D) 数组x的长度小于数组y的长度 24. 定义 如下变量跟 数组: int i; int x[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; 那么下面语句的输出结果是〔 〕。 for(i=0;i<4;i++) printf("%3d",x[i][3-i]); A) 1 5 9 13 B) 1 6 11
15、16
√C) 4 7 10 13 D) 4 8 12 16
25. 有定义 语句: char s[10];
假设 要从终端给s输出5个字符, 差错 的输出语句是〔 〕。
A)gets(&s[0]); B) scanf("%s",s+1); C)gets(s); √D)scanf("%s", s[1]);
26. 以下次序 的运行 结果是〔 〕。
#include
16、32;
return *s;
}
void main()
{ char a[20]="Welcome",*p,ch;
for(p=a;*p!='\0';p++)
{ ch=fun(p);
putchar(ch);
}
}
√A) WELCOME B) Welcome C) COME D) WEL
27. 以下次序 的运行 结果是〔 〕。
#include
17、turn x+y+z ;
}
void main()
{ int i;
for(i=1;i<=3;i++)printf("%3d",fun(i));
}
√A) 8 10 12 B)8 10 12 C) 4 6 8 D) 4 6 8
28. 以下次序 的运行 结果是〔 〕。
#include
18、 for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) { max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d",max,row,colum); } A) max=8,row=0,colum=2 B) max=4 ,row=2,colum=1 √C) max=10 ,row=1,colum=2 D) max=1 ,row=1,colum=2 29. 以下次序 的运行
19、结果是〔 〕。
#include
20、int b=3; int fun(int *a) { b+=*a; return(b); } void main() { int a=2, b=2; b+=fun(&a); printf("%d\n",b); } A)4 √B)7 C)5 D)8 二、填空题 1.C语言 源次序 文 件的扩大年夜 名是.C ,经过编译后,生成 文件的扩大年夜 名是.OBJ ,经过连接 后,生成 文件的扩大年夜 名是.EXE 。(小写也精确 ) 2.把a,b定义 成长 整型变量的定义 语句是lo
21、ng a,b;或者 long int a,b; 3.设x跟 y均为整型变量,且x=3,y=2,那么1.0*x/y表达 式的值为1.5 4.已有定义 :float x=5.5; x=(int)x+2; 那么printf("%f", x);的输出值为7.000000 5.已有定义 :int x=0,y=0;那么表达 式:(x+=2,y=x+3/2,y+5)后,变量x的值为 2 ,变量y的值为 3,表达 式的值为 8 。 6.实行 以下语句for(i=1;i++<=5;); 后,变量i的值为 7 。 7. 当有 char *a[5];其语义为定义 了
22、一个名字为a的数组,有5个字符型指针的元素。对以下定义 式停顿说明: int (*b)[5];语义为: 定义 了一个名字为b的指针变量,它只能指向包含 5个int型元素的一维数组; int (*c)(char *),语义为: 定义 了一个名字为c的指针变量,它只能指向带有char *典范 形参, 前去 值典范 为int型的函数 ; 8. C语言 从源次序 的抄写 到上机运行 输出结果要经过: 编辑 、 编译 、 连接 、 运行 四个步伐 。 9. 设有命题:b介于a,c之间且a,b,c互不相当 ,写出对应的逻辑表达 式: a
23、b
24、0 + c - '0';
}
printf("value=%d\n", n);
}
次序 运行 时输出为:2020<回车> 时,那么次序 运行 结果是:2020
2.
#include
25、a, b); break; case 1: a++; b++; printf("a=%d, b=%d\n", a, b); break; } case 2: a++; b++; printf("a=%d, b=%d\n", a, b); break; } } 运行
26、 结果是:
a=2, b=1
a=3, b=2
3.
#include 27、 printf("%d\t", *p); }
printf("\n");
for (p=a; p2<回车>3<回车>4<回车>5<回车>6<回车>7<回车>8<回车>9<回车>10<回车> 时,那么次序 运行 结果为:
1 2 3 4 5 6 7 8 9 10
1 3 5 7 9
5.
#include 28、
main()
{ int m, n, r;
scanf("%d %d", &m, &n);
r = mod(m, n);
while (r != 0)
{ m = n;
n = r;
r = mod(m, n);
}
printf("The Result is :%d\n", n);
}
次序 运行 时输出:81<空格>18 <回车>,那么运行 结果是:
The Result is : 9
6. 当运行 以下次序 时,运行 结果是__ Shanghai __。
29、include 30、axLen]={"Guangzhou","Beijing","Shenzhen","Shanghai"};
fun(city,4);
printf("%s\n",city[2]);
return 0;
}
7.以下次序 的输出结果是______________。
#include 31、'); putchar('*'); }
}
printf("\n");
}
return 0;
}
8. 当运行 以下次序 时,从键盘输出如下内容后回车:2673 ,那么下面次序 的运行 结果是___66977_________。
#include 32、
case 3: putchar(c+3);
case 4: putchar(c+3);break;
}
}
printf("\n");
return 0;
}
9. 有以下次序 D
#include 33、
}
次序 的运行 结果是__accbbxxyy,bbxxyy _____。
四、次序 填空题
阅读 次序 ,在标有下划线的空白 处填入适当 的表达 式或语句,使次序 残缺并符合 题目 恳求 。
1. 以下次序 将输出的十进制数以十六进制的方法 输出。
#include 34、d", &number);
do {
c[i] = number % base;
number = number / base;
i++;
}while (number != 0);
printf("对应的十六进制数为: \n");
for(--i; i>=0; --i)
{ d = c[i];
printf("%c", b[d]);
}
printf("\n");
}
用户从键盘任意 输出一个数字表示 月份值n,次序 表示 该月份对应的英文表示 ,假设 n 35、不在1~12之间,那么输出“Illegal month〞。
#include 36、
scanf("%d", &n);
if ((n <= 12) && (n >= 1))
{printf("month %d is %s\n", n, monthName[n]); }
else {printf("%s\n", monthName[0]); }
}
3.设有一元二次方程Ax2+Bx+C=0,以下次序 揣摸 方程根的情况,并打算 现实上 根,次序 中定义 变量a,b,c分差错 应方程的系数A、B、C,请补齐代码使次序 能够 精确 运行 。
#include 37、
{ ___ void fd(double, double, double); ____
double a,b,c;
printf("请输出一元二次方程的系数:a=?,b=?,c=?\n");
scanf("a=%lf,b=%lf,c=%lf", ____&a, &b, &c _);
fd(a,b,c);
return 0;
}
void fd(double a, double b, double c)
{ double disc,x1,x2;
if( fabs(a) <= 1e-6) { printf("不是一元二次方程\n" ); }
disc 38、 b * b - 4 * a * c;
if(______fabs(disc)<=1e-6 _______)
{printf("有2个相当 的实根:x1 = x2 = %8.4f\n",-b/(2 * a) );}
else if( disc > 1e-6)
{ x1 = (-b + sqrt(disc) ) / ( 2 * a );
x2 = (-b - sqrt(disc) ) / ( 2 * a );
printf("有2个不相当 的实根:x1 = %8.4f, x2 = %8.4f\n", x1, x2 );
}
else {printf("无实根\n" ); }
}
精选可编辑






