二级C语言2010年培训
心下(11)-(40)小题为C语言知识考核内容, 共计50分 (11)以下关于结构化程序设计的叙述中正确的是
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成 B)结构化程序使用goto语句会很便捷
C)在C语言中,程序的模块化是利用函数实现的
D)由三种基本结构构成的程序只能解决小规模的问题 答案:C
解析: A)结构化的程序可由顺序、分支、循环中的一种或多种,没有要求同时。B)Goto语句
是会破坏程序的结构化D)三种结构也可解决大规模问题
(12)以下关于简单程序设计的步骤和顺序的说法中正确的是 A)确定算法后,整理并写出文档,最后进行编码和上机调试
B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档 C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档 D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构 答案:B 解析: 参考书本第1章程序设计步骤
(13)以下叙述中错误的是
A)C程序在运行过程中所有计算都以二进制方式进行 B)C程序在运行过程中所有计算都以十进制方式进行 C)所有C程序都需要编译链接无误后才能运行
D)C程序中整型变量只能存放整数,实型变量只能存放浮点数
答案:B 解析:C程序在运行过程中所有计算都以二进制方式进行
(14)有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是 A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x
答案:B 解析: A)中x-y可能为0 ,C)中b必须是整数 D)右边x不能赋值给表达式
(15)以下选项中能表示合法常量的是 A)整数:1,200 B)实数:1.5E2.0 C )字符斜杠:‘\\’ D)字符串:\答案:D
解析:A中逗号错误,B中指数必须为整数 C中反斜干表示转义符,必须跟其他符号D正确。
(16)表达式a+=a-=a=9的值是 A)9 B)_9 C)18 D)0 答案:D
解析:赋值运算从右至左 ,最后得到a=0
二级C语言2010年培训
(17)若变量已正确定义,在if (W)printf(“%d\\n,k”);中,以下不可替代W的是 A)a<>b+c
B)ch=getchar() C)a==b+c D)a++
答案:A 解析:不等于用!=表示
(18)有以下程序 #include
{int a=1,b=0; if(!a) b++;
else if(a==0)if(a)b+=2; else b+=3;
printf(”%d\n”,b); }
程序运行后的输出结果是 A)0 B)1 C)2 D)3
答案:A 解析:if与最近的else搭配构成嵌套,由于!a、a==0为假,b未变化
(19)若有定义语句int a, b;double x;则下列选项中没有错误的是 A)switch(x%2) B)switch((int)x/2.0 {case 0: a++; break; {case 0: a++; break; case 1: b++; break; case 1: b++; break; default : a++; b++; default : a++; b++; } }
C)switch((int)x%2) D)switch((int)(x)%2) {case 0: a++; break; {case 0.0: a++; break; case 1: b++; break; case 1.0: b++; break; default : a++; b++; default : a++; b++; } }
答案:C 解析:switch( ),()中的数据类型与case中的要一致! (20)有以下程序 #include
{int a=1,b=2; while(a<6){b+=a;a+=2;b%=10;} printf(”%d,%d\n”,a,b); }
程序运行后的输出结果是
A)5,11 B)7,1 C)7,11 D)6,1
二级C语言2010年培训
答案:B 解析:第1次循环,b=3 ,a=3 第2次循环,b=6 ,a=5
第3次循环,b=11,a=7,由b%=10 得到b=1,
(21)有以下程序 #include<stdio.h> main() {int y=10; while(y--);
printf(”Y=%d\n”,Y); }
程序执行后的输出结果是 A)y=0 B)y= -1
C)y=1 D)while构成无限循环
答案:B 解析:y=0时不在循环,但y- -便得y输出-1
(22)有以下程序 #include<stdio .h> main()
{char s[」=\; printf(\%c\n\,*s+2); }
程序运行后的输出结果是
A)tuv B)字符t的ASCII码值 C)t D)出错
答案:C 解析:先取出s[0]为r,*s+2向后移2位,字符t
(23)有以下程序 #include<stdio.h> #include<string.h> main()
{char x[]=”STRING”;
x[0」=0;x[1]=’\0’;x[2」=’0’; printf(”%d %d\\n”,sizeof(x),strlen(x)); }
程序运行后的输出结果是
A)6 1 B)7 0 C)6 3 D)7 1
答案:B 解析:sizeof指返回字符串在内存中所占的真正长度(包括结束符’\\0’),strlen返回
字符串的长度,遇到’\\0’结束,由于x[1]=’\0’,所以返回1个字符长度
(24)有以下程序 #include<stdio.h> Int f(int x); main()
二级C语言2010年培训
{int n=1,m; m=f(f(f(n)));printf(”%d\n”,m); }
int f(int x) {return x*2;}
程序运行后的输出结果是 A)1 B)2 C)4 D)8
答案:D 解析:三重函数调用,从里到外f(1)=2, f(2)=4,f(4)=8
(25)以下程序段完全正确的是 A)int *p; scanf(\&p); B)int *p; scanf(“%d”,p);
C)int k, *p=&k; scanf(\);
D)int k, *p:; *p= &k; scanf(“%d”,p);
答案:C 解析:A)中p是指针,不用再分配地址 B)中指针P没有赋初值 D)中*p=&k,*p表示指针所指的内存中的数据,右边是地址,所以错误!
(26)有定义语句:int *p[4];以下选项中与此语句等价的是 A)int p[4]; B)int **p;
C)int *(p「4」); D)int (*p)「4」;
答案:C 解析:题目表示4个整数指针, A)表示4个整数元素数组 B)表示指向整数指针 的指针,D)表示声明了一个指针变量,指向含4个元素的数组
(27)下列定义数组的语句中,正确的是 A)int N=10; B)#define N 10 int x[N]; int x[N]; C)int x[0..10]; D)int x[];
答案:B 解析:A)中x[N]中的N是个变量,必须用常量定义 C]中不能用省略号D)中不
指明数组长度,就必须赋值
(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是 A)int a[5]=﹛0﹜; B)int b[]={0,0,0,0,0}; C)int c[2+3]; D)int i=5,d[i];
答案:D 解析:定义数组长度不能用变量定义,同27题
(29)有以下程序 #include<stdio.h> void f(int *p); main()
二级C语言2010年培训
{int a[5]={1,2,3,4,5},*r=a; f(r);printf(”%d\\n”;*r); }
void f(int *p)
{p=p+3;printf(”%d,”,*p);} 程序运行后的输出结果是 A)1,4 B)4,4 C)3,1 D)4,1
答案:D 解析:指针r指向a[0]=1,p=p+3移动3位,指向元素4,选D
(30)有以下程序(函数fun只对下标为偶数的元素进行操作) # include<stdio.h>
void fun(int*a;int n) {int i、j、k、t;
for (i=0;i<n-1;i+=2) {k=i;
for(j=i;j
main()
{int aa「10」={1、2、3、4、5、6、7},i; fun(aa、7);
for(i=0,i<7; i++)printf(”%d,”,aa[i])); printf(”\n”); }
程序运行后的输出结果是 A)7,2,5,4,3,6,1 B)1,6,3,4,5,2,7 C)7,6,5,4,3,2,1 D)1,7,3,5,6;2,1
答案:A 解析:fun(int*a;int n)中的外循环分别对序号为0,2,4,6的四个元素进行内循 环处理,内循环使得K对应的元素为较大者,两重循环使得这4个元素按降序排列为,其余元 素不变,选A
(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST\要求的是 A)if(strcmp(s2,s1)==0)ST; B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST; D)if(sl-s2==0)ST;
答案:A 解析:strcmp为字符串比较函数
(32)以下不能将s所指字符串正确复制到t所指存储空间的是 A)while(*t=*s){t++;s++;}