湖南科技大学c语言期末试题库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

选择题(共题),成绩()
1、C语言所提供的基本数据类型包括字符型、整型、双精度型、单精度型和____:
A) 指针型B) 结构型
C) 数组型D) 枚举类型
正确答案是: D
2、下面四个选项中,均是合法浮点数的选项是:
A) 1e+1 5e-9.4 03e2
B) -.60 12e-4 -8e5
C) 123e 1.2e-.4 e-4
D) -e3 e-4 5.e-0
正确答案是: B
3、以下符合C语言语法的表达式:
A) d=9+e+f=d+9 B) d=9+e,f=d+9
C) d=9+e=e++,d+9 D) d=9+e++=d+7
正确答案是: B
4、若有定义int a=12,则表达式a+=a-=a*=a的值是:
A) 0 B) -264
C) -144 D) 132
正确答案是: A
5、下面程序的输出结果是:
#include<stdio.h>
void main()
{
int a,b,c;
int d;
b=(a=32767, a++);
c=d=0xffff;
printf("%x,%d,%d,%d\n",a,b,c,d);
}
A) 8000,32767,65535,65535 B) -1,-1,32767,8000
C) -1,-1,-1,-1 D) 32767,-1,-1,-1
正确答案是: A
6、已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式x+a%3*(int)(x+y)%2/4 的值是:
A) 2.4 B) 2.5
C) 2.75 D) 0
正确答案是: B
7、设int a=12,则执行完语句a+=a-=a*a后,a的值是
A) 552 B) 264 C) 144 D) -264 正确答案是: D 8、表达式: 10!=9的值是
A) true B) 非零值C) 0 D) 1 正确答案是: D
9、在下列选项中,不正确的赋值语句是
A) ++t; B) n1=(n2=(n3=0));
C) k=i=j; D) a=b+c=1;
正确答案是: D
10、设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,
值为0的表达式是
A) 'a'&&'b' B) a<=b
C) a||b+c&&b-c D) !((a<b)&&!c||1)
正确答案是: D
11、能正确表示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>0
正确答案是: D
12、运行下面程序后,输出是( )。

#include <stdio.h>
void main( )
{ int k=-3;
if (k<=0) printf("****\n");
else printf("####\n")
}
A) #### B) ****
C) ####**** D) 有语法错误不能通过编译
正确答案是: D
13、下面程序的输出结果是
#include <stdio.h>
void main( )
{ int a=2,b=7,c=5;
switch(a>0)
{ case 1:switch(b<0)
{ case 1: printf("@"); break;
case 0: printf("!"); break;
}
case 0:switch(c==5)
{ case 0: printf("*"); break;
case 1: printf("#"); break;
default: printf("%%");break;
1
}
default: printf("&");
} printf("\n");
}
A) & B) !#&
C) %% D) @*&
正确答案是: B
14、运行下面程序时,若从键盘输入数据为"123",则输出结果是( )。

#include "stdio.h"
void main()
{ int num,i,j,k,place;
scanf("%d",&num);
if (num>99)
place=3;
else if(num>9)
place=2;
else
place=1;
i=num/100;
j=(num-i*100)/10;
k=(num-i*100-j*10);
switch (place)
{ case 3: printf("%d%d%d\n",k,j,i);
break;
case 2: printf("%d%d\n",k,j);
break;
case 1: printf("%d\n",k);
}
}
A) 123 B) 1,2,3
C) 321 D) 3,2,1
正确答案是: C
15、以下程序的输出结果是
#include <stdio.h>
void main( )
{int a=-1,b=4,k;
k=(++a<0) && !(b--<=0);
printf("%d,%d,%d\n",k,a,b);
}
A) 1,0,4 B) 1,0,3
C) 0,0,3 D) 0,0,4
正确答案是: D
16、执行以下程序,分别输入-10和5,运行的结果分别是( )。

#include <stdio.h>
void main( )
{ int x,c,m;
float y;
scanf("%d",&x);
if (x<0) c=-1;
else c=x/10;
switch (c)
{ case -1: y=0; break;
case 0: y=x; break;
case 1: y=10; break;
case 2:
case 3: y=-0.5*x+20; break;
default: y=-2;
}
if (y!=-2) printf("y=%d\n",y);
else printf("error\n");
}
A) y=0 B) y=0
y=5 y=-2
C) y=-10 D) y=0
y=5 y=10
正确答案是: A
17、执行下面程序时,若从键盘输入"2<CR>",则程序的
运行结果是( )。

#include <stdio.h>
void main( )
{ int k; char cp;
cp=getchar( );
if (cp>='0' && cp<='9')
k=cp-'0';
else if (cp>='a' && cp<='f')
k=cp-'a'+10;
else k=cp-'A'+10;
printf("%d\n",k);
}
A) 2 B) 4
C) 1 D) 10
正确答案是: A
18、下列程序执行后的输出结果是( )。

#include <stdio.h>
void main( )
{ int a=358;
if (a>=100)
{if (a>=1000)
printf("%d is greater than 10000\n",a);
else printf("%d is 100 to 999\n",a);
2
}
else
{if (a<10)
printf("%d is less than 10\n",a);
else printf("%d is 10 to 99\n",a);
}
}
A) a is less than 10 B) a is 10 to 99
C) a is greater than 10000 D) 358 is 100 to 999
正确答案是: D
19、以下叙述正确的是
A) do-while语句构成的循环不能用其它语句构成的循环来代替
B) do-while语句构成的循环只能用break语句退出
C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环
D) 用do-while语句构成的循环,在while后的表达式为零时结束循环
正确答案是: D
20、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为
for(i=0,j=10;i<=j;i++,j--) k=i+j;
A) 12 B) 10
C) 11 D) 9
正确答案是: B
21、若i为整型变量,则以下循环语句的循环次数是( )。

for(i=2;i==0;)
printf("%d",i--);
A) 无限次B) 0次
C) 1次D) 2次
正确答案是: B
22、下面程序的输出结果是( )。

#include<stdio.h>
void main( )
{ unsigned int num,k;
num=26;k=1;
do {
k*=num%10;
num/=10;
} while(num);
printf("%d\n", k);
}
A) 2 B) 12
C) 60 D) 18 正确答案是: B
23、下面程序的输出结果是( )。

#include <stdio.h>
void main( )
{ int x,i;
for(i=1;i<=50;i++)
{ x=i;
if (++x%2==0)
if (x%3==0)
if (x%7==0)
printf("%d",i);
}
}
A) 28 B) 27
C) 42 D) 41
正确答案是: D
24、下面程序的输出结果是( )。

#include<stdio.h>
void main()
{ int x=3,y=6,a=0;
while(x++!=(y-=1))
{a+=1;
if(y<x) break;
}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
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
正确答案是: D
25、当从键盘上输入字符“12134211”下面程序的输出结果是( )。

#include<stdio.h>
void main()
{ char s;
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{ scanf("%c",&s);
switch(s)
{ default: v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++; }
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
3
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1 C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8 正确答案是: C
26、下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。

#include <stdio.h>
void main()
{ int a,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{ a+=i;
______;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);
}
A) i+=2 B) i++
C) b=b+1 D) b=i+1
正确答案是: D
27、运行以下程序后,如果从键盘上输入12,8<回车>,
则输出结果为( )。

#include<stdio.h>
void main( )
{ int a,b,n1,n2,t;
scanf("%d,%d",&n1,&n2);
if (n1>n2)
{ t=n1;n1=n2;n2=t;}
a=n1;b=n2;
while (b!=0)
{ t=a%b;
a=b;
b=t; }
printf("%d,%d\n",a,n1*n2/a);
}
A) 2,6 B) 4,24
C) 4,12 D) 8,96
正确答案是: B
28、有如下程序
#include<stdio.h>
void main()
{ char ch[80];
int j;long s=0;
printf("Enter a numeral string\n"); gets(ch);
for(j=0;ch[j]>'\0';j++)
s=10*s+ch[j]-'0';
printf("%ld\n",s);
}
如果运行时,从键盘上输入由数字组成的字符串,
该程序的功能是________。

A) 测字符数组ch的长度
B) 将数字字符串ch转换成十进制数
C) 将字符数组中的小写字母转换成大写
D) 将字符数组中的大写字母转换成小写
正确答案是: B
29、有如下程序
#include<stdio.h>
void main()
{ char ch[80]="123abcdEFG*&";
int j;long s=0;
for(j=0;ch[j]>'\0';j++) ;
printf("%d\n",j);
}
该程序的功能是________。

A) 测字符数组ch的长度
B) 将数字字符串ch转换成十进制数
C) 将字符数组ch中的小写字母转换成大写
D) 将字符数组ch中的大写字母转换成小写
正确答案是: A
30、以下程序的输出结果是________。

#include<stdio.h>
void main()
{ int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i==0 || j==0 || i==3 || j==3) s+=a[i][j];
printf("%d\n",s);
}
A) 88 B) 66
C) 60 D) 50
正确答案是: B
31、设有以下定义语句
char str1[]="string",str2[8],str3[6],str4[]="string";
则下面对函数strcpy的调用中,错误的调用是________。

(此函数用来复制字符串)
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
正确答案是: C
4
32、阅读程序:
#include<stdio.h>
void main()
{ char str1[]="how do you do",str2[10];
scanf("%s",str2);
printf("%s",str2);
printf("%s\n",str1);
}
运行该程序,输入字符串HOW DO YOU DO,则程序的输出结果是______。

A) HOW DO YOU DO B) HOWhow do you do
C) How how do you do D) how do you do
正确答案是: B
33、下面程序的输出是________。

#include<stdio.h>
void main()
{ char s[]="23245322";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{default: v4++;
case '2': v1++;
case '4': v3++;
case '3': v2++;
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1 C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8 正确答案是: C
34、以下程序执行后的输出结果是________ 。

(设a[0][0] 是数组a中的第1个元素)
#include <stdio.h>
void main( )
{ int a[4][5]={1,2,4,8,10,-1,-2,-4,-8,-10,3,5,7,9,11};
int i,j,n=9;
i=n/5; j=n-i*5-1;
printf("NO. %d: %d,%d is %d\n",n,i,j,a[i][j]);
}
A) 第n个元素所在的行和列及其该元素的值
B) 第n行的最大元素所在的行和列及其最大值
C) 第i行的最大元素所在的行和列及其最大值
D) 以上都不对
正确答案是: A 35、下列一组初始化语句中,正确的是________。

A) int a[8]={ }; B) int a[9]={0,7,0,4,8};
C) int a[5]={9,5,7,4,0,2}; D) int a[7]=7*6;
正确答案是: B
36、若有定义和语句:
char s[10];s="abcd";printf("%s\n",s);
则程序运行后________(以下u代表空格)。

A) 输出abcd B) 输出a
C) 输出abcduuuuu D) 编译不通过
正确答案是: D
37、函数fun的功能是:根据以下公式计算S,n通过形参传入,n的值大
于等于0。

划线处应填________。

1 1 1 1
S=1 - ─+ ─- ─+ …───
3 5 7 2n-1
float fun(int n)
{ float s=0.0,w,f=-1.0;
int i=0;
for(i=0;i<=n;i++)
{________;
w=f/(2*i+1);
s+=w; }
return s; }
A) f=1 B) f=-1
C) f=-1*f D) f=0
正确答案是: C
38、函数fun的功能是:根据以下公式计算并返回S,n通过形参传入,n的值
大于等于0。

划线处应填________。

1 1 1 1
S=1 - ─+ ─- ─+ …───
3 5 7 2n-1
float fun(int n)
{ float s=0.0,w,t,f=-1.0;
int i;
for(i=0;i<n;i++)
{f=-f;
w=f/(2*i+1);
s+=w; }
____________; }
A) return (f) B) return (i)
C) return (s) D) return (w)
正确答案是: C
5
39、以下程序的输出结果是________。

#include <stdio.h>
void fun()
{ static int a=0;
a+=2;
printf("%d",a); }
void main()
{ int cc;
for(cc=1;cc<4;cc++) fun( );
printf("\n"); }
A) 2222 B) 2468
C) 222 D) 246
正确答案是: D
40、以下程序的输出结果是
#include <string.h>
void fun( char s[])
{ int x,y; char c;
for(x=0,y=strlen(s)-1; x<y;x++,y--)
{c=s[y];s[y]=s[x];s[x]=c; } }
void main()
{ char a[]="123456789"; int k;
fun(a); puts(a); }
A) 987654321 B) 123456789
C) 123454321 D) 987656789
正确答案是: A
41、下列程序执行后输出的结果是________。

#include<stdio.h>
int f(int a)
{int b=0 , c=3;
a=c++,b++;
return(a); }
void main()
{int a=2,i,k;
for(i=0;i<3;i++)
k=f(a++);
printf("%d\n",k); }
A) 3 B) 0
C) 5 D) 4
正确答案是: A
42、以下程序的输出结果是________。

#include "ctype.h"
void space(char str[ ])
{int i,t; char ts[81];
for(i=0,t=0;str[i]!= '\0';i+=2)
if(!isspace(str[i]) && str[i]!= 'a')
ts[t++]=toupper(str[i]);
ts[t]= '\0';
strcpy(str,ts); }
void main()
{char s[81]={ "abcdefg"};
space(s);
puts(s);}
A) ABCDEFG B) CEG
C) ABCDE D) BDF
正确答案是: B
43、下面程序的功能是,将字符数组a中的字符逆序存放,划线处应
填入________。

#include<string.h>
void main()
{ char a[80]= "abcdefgh";
fun(a); puts(a); }
fun(char s[10])
{ int x=0,y; char c;
for(________;x<y;x++,y--)
{c=s[x];s[x]=s[y];s[y]=c; } }
A) y=0 B) y=strlen(s)
C) y=strlen(s)-1 D) y=x
正确答案是: C
44、以下程序的输出结果是________。

#include <stdio.h>
int a,b;
void fun()
{ a=100; b=200; }
void main()
{ int a=5,b=7;
fun();
printf("%d%d\n",a,b); }
A) 100200 B) 57
C) 200100 D) 75
正确答案是: B
45、读以下程序,下面的说法中错误的是________。

#include <stdio.h>
pt( char string[ ])
{ char str[10]; int i=0;
strcpy(str,string);
if(str[i]== '\0') return;
while(str[i]!= '\0') i++;
i--;
printf("%c",str[i]);
str[i]='\0';
6
pt(str); }
void main( )
{
char s[ ]={ "Hello"};
pt(s); }
A) 在函数pt( )中使用了递归调用
B) 在函数pt( )中使用了嵌套调用
C) 程序的功能是使字符串s按反序存放
D) 程序的功能是将字符串"Hello"按反序输出
正确答案是: B
选择题(共题),成绩()
1、a,b均为整数,且b!=0,则表达式a/b*b+a%b的值是:
A) a B) b
C) a被b除的整数部分D) a被b除的商的整数部分正确答案是: A
2、若有代数式(3ae)/(bc),则下面不正确的C语言表达式是:
A) a/b/c*e*3 B) 3*a*e/b/c
C) 3*a*e/b*c D) a*e/c/b*3
正确答案是: C
3、已知x=43,ch='A',y=0,则表达式(x>=y&&ch<'B'&&!y)的值是:
A) 0 B) 语法错
C) 1 D) "假"
正确答案是: C
4、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是:
A) 5.5 B) 5
C) 3 D) 4.0
正确答案是: C
5、若已定义int a,则表达式a=10,a+10,a++的值是:
A) 20 B) 10
C) 21 D) 11
正确答案是: B
6、已知有double型变量x=2.5,y=4.7,整型变量a=7,则表达式x+a%3*(int)(x+y)%2/4 的值是:
A) 2.4 B) 2.5
C) 2.75 D) 0
正确答案是: B 7、阅读下面的程序
#include<stdio.h>
void main()
{
int i,j;
scanf("%2d %*3d %2d",&i,&j);
printf("%d%4d",i,j);
}
如果从键盘上输入
12 345 67<回车>
则程序的运行结果是:
A) 12 67 B) 12 345
C) 12345 D) 程序语法出错
正确答案是: A
8、C语言中最简单的数据类型包括
A) 整型,实型,逻辑型B) 整型,实型,字符型
C) 整型,字符型,逻辑型D) 整型,实型,逻辑型,字符型
正确答案是: B
9、下面程序的输出是
#include<stdio.h>
void main()
{int x=023;
printf("%d\n",--x);
}
A) 17 B) 18 C) 23 D) 24
正确答案是: B
10、若有以下定义: int a,b,c1,c2,x,y; 则正确的switch 语句是
A) switch(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b;break; { case 3:
case 2:y=a-b;break; case 1:y=a+b;break;
}
case 3:y=b-a;break;
} C) switch a D) switch(a-b)
{ case c1:y=a-b;break; { default:y=a*b;break;
case c2:y=a*d;break; case 3:
default:x=a+b; case 4:x=a+b;break;
}
case 10:
7
case 11:y=a-b;break;
}
正确答案是: D
11、以下不正确的if语句是( )。

A) if(x>y) printf("%d\n",x);
B) if (x=y)&&(x!=0) x+=y;
C) if(x!=y) scanf("%d",&x);else scanf("%d",&y);
D) if(x<y) {x++;y++;}
正确答案是: B
12、在执行以下程序时,为了使输出结果为:t=4 则给a和b
输入的值应满足的条件是
#include <stdio.h>
void main( )
{ int s,t,a,b;
scanf("%d,%d",&a,&b);
s=1; t=1;
if (a<0) s=s+1;
if (a>b) t=s+t;
else if (a==b) t=5;
else t=2*s;
printf("t=%d\n",t);
}
A) a>b B) a<b<0
C) 0>a>b D) 0<a<b
正确答案是: B
13、请读程序:
#include <stdio.h>
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("a=%d,b=%d\n",a,b);
}
上面程序的输出结果是
A) a=2,b=1 B) a=1,b=1
C) a=1,b=0 D) a=2,b=2
正确答案是: A
14、运行下面程序时,若从键盘输入数据为"86",则输出结果是( )。

#include "stdio.h"
void main()
{ int t;
scanf("%d",&t);
if (t>=90) printf("A\n");
else if (t>=80) printf("B\n");
else if (t>=70) printf("C\n");
else if (t>=60) printf("D\n");
else printf("E\n");
printf("OK\n");
}
A) B B) B OK
C) B D) B
OK C
D
E
OK
正确答案是: C
15、运行下面程序时,从键盘输入数据为"2,13,5<CR>",
则输出结果是( )。

#include <stdio.h>
void main( )
{ int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
switch(a)
{ case 1: printf("%d\n",b+c); break;
case 2: printf("%d\n",b-c); break;
case 3: printf("%d\n",b*c); break;
case 4: { if(c!=0) {printf("%d\n",b/c);break;}
else {printf("error\n");break;}
}
defualt: break;
}
}
A) 10 B) 8
C) 65 D) error
正确答案是: B
16、以下程序的输出结果是
#include <stdio.h>
void main( )
{
int a,b,d=241;
a=d/100%6;
b=1 && (-1);
printf("%d,%d\n",a,b);
}
8
A) 6,1 B) 2,1
C) 6,0 D) 2,0
正确答案是: B
17、下面的程序
#include <stdio.h>
void main( )
{ int x=3,y=0,z=0;
if (x=y+z) printf("* * * *");
else printf("# # # #"); }
A) 有语法错误不能通过编译。

B) 输出* * * *。

C) 可以通过编译,但是不能通过连接,因而不能运行。

D) 输出# # # #。

正确答案是: D
18、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是:
A) 10<a<15 B) a==11||a==12||a==13||a==14 C) a>10&&a<15 D) !(a<=10)&&!(a>=15)
正确答案是: A
19、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。

while((ch=getchar())!='e') printf("*");
A) 5 B) 4
C) 6 D) 1
正确答案是: B
20、执行下面程序后sum的值是( )。

#include<stdio.h>
void main( )
{ int i,sum=0;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
A) 15 B) 14
C) 不确定D) 0
正确答案是: A
21、阅读以下程序:
#include<stdio.h>
void main( )
{ int x;
for(x=5;x>0;x--)
if (x--<5) printf("%d,",x);
else printf("%d,",x++); }
程序运行后的输出结果是( )。

A) 4,3,2 B) 4,3,1,
C) 5,4,2 D) 5,3,1,
正确答案是: B
22、设有以下程序
#include<stdio.h>
void main( )
{ int n1,n2;
scanf("%d",&n2);
while (n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298,则输出结果为( )。

A) 892 B) 8921
C) 89 D) 921
正确答案是: B
23、下面程序的运行结果是( )。

#include<stdio.h>
void main( )
{ int m=7,n=5,i=1;
do
{ if (i%m==0);
if (i%n==0)
{ printf("%d\n",i); break;}
i++;
} while(i!=0);
}
A) 7 B) 6
C) 5 D) 4
正确答案是: C
24、下面程序段的输出结果是( )。

x=3;
do { y=x--;
if (!y) {printf("*");continue;}
printf("#");
} while(x=2);
A) ## B) ##*
C) 死循环D)输出错误信息
正确答案是: C
25、以下程序运行后的输出结果是( )。

#include <stdio.h>
void main( )
9
{ int s=0,k;
for(k=7;k>=0;k--)
{switch(k)
{
case 1:
case 4:
case 7: s++; break;
case 2:
case 3:
case 6: break;
case 0:
case 5: s+=2; break; }
}
printf("s=%d\n",s);
}
A)s=5 B)s=1
C)s=3 D)s=7
正确答案是: D
26、下列程序的输出结果是( )。

#include<stdio.h>
void main( )
{ int i, j, k;
for(i=0;i<=2;i++)
{ for(k=1;k<=i;k++) printf(" ");
for(j=0;j<=3;j++) printf("*");
printf("\n");
}
}
A) **** B) ****
**** ****
**** ****
C) **** D) ***
**** ***
**** ***
正确答案是: B
27、设x和y均为int型变量,则执行下面的循环后,y 的值为
for(y=1,x=1;y<=50;y++)
{ if( x>=10) break;
if (x%2==1)
{ x+=5; continue;}
x-=3;
}
A) 2 B) 4
C) 6 D) 8
正确答案是: C 28、有如下程序
#include<stdio.h>
void main()
{ char ch[80]="123abcdEFG*&";
int j;long s=0;
for(j=0;ch[j]>'\0';j++) ;
printf("%d\n",j);
}
该程序的功能是________。

A) 测字符数组ch的长度
B) 将数字字符串ch转换成十进制数
C) 将字符数组ch中的小写字母转换成大写
D) 将字符数组ch中的大写字母转换成小写
正确答案是: A
29、以下程序的输出结果是________。

#include<stdio.h>
void main()
{ int a[3][3]={{1,2,3},{3,4,5},{5,6,7}},i,j,s=0;
for(i=0;i<3;i++)
for(j=i;j<3;j++) s+=a[i][j];
printf("%d\n",s);
}
A) 26 B) 36
C) 19 D) 22
正确答案是: D
30、当执行下面的程序时,如果输入ABC,则输出结果是_________。

#include "stdio.h"
#include "string.h"
void main()
{ char ss[10]="12345";
gets(ss);
strcat(ss,"6789");
printf("%s\n",ss);
}
A) ABC6789 B) ABC67
C) 12345ABC6 D) ABC45678
正确答案是: A
31、下面的程序中第________行有错误(每行程序前面的数字是行号)
1 #include <stdio.h>
2 void main()
3 {
4 float a[3]={0.0};
5 int i;
6 for(i=0;i<3;i++) scanf("%d",&a[i]);
10
7 for(i=1;i<3;i++) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
A) 没有B) 第4行
C) 第6行D) 第8行
正确答案是: C
32、设有以下定义语句
char str1[]="string",str2[8],str3[6],str4[]="string";
则下面对函数strcpy的调用中,错误的调用是________。

(此函数用来复制字符串)
A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
正确答案是: C
33、以下程序输出的结果是________。

#include <stdio.h>
void main( )
{ int a[ ]={1,2,3,4,5},i,j,s=0;
j=1;
for(i=4;i>=0;i--) { s=s+a[i]*j; j=j*10; }
printf("s=%d\n",s);
}
A) s=12345 B) s=1 2 3 4 5
C) s=54321 D) s=5 4 3 2 1
正确答案是: A
34、以下程序执行后的输出结果是________ 。

(设a[0][0] 是数组a中的第1个元素)
#include <stdio.h>
void main( )
{ int a[4][5]={1,2,4,8,10,-1,-2,-4,-8,-10,3,5,7,9,11};
int i,j,n=9;
i=n/5; j=n-i*5-1;
printf("NO. %d: %d,%d is %d\n",n,i,j,a[i][j]);
}
A) 第n个元素所在的行和列及其该元素的值
B) 第n行的最大元素所在的行和列及其最大值
C) 第i行的最大元素所在的行和列及其最大值
D) 以上都不对
正确答案是: A
35、若有定义语句:char s[100],d[100]; int j=0,i=0; ,且s中已赋字
符串,请在划线处填______以实现将字符串s中的内容拷贝到字符串d
中。

(注意:不得使用逗号表达式)
while(s[i]) { d[j]=__________; j++; }
d[j]=0;
A) s[i] B) s[++i]
C) s[i++] D) s[j]
正确答案是: C
36、下面程序输出的结果是________。

#include <stdio.h>
void main( )
{ int i,j,x=0;
static int a[6]={1,2,3,4,5,6};
for(i=0,j=1;i<5;++i,j++) x+=a[i]*a[j]; printf("%d\n",x);
}
A) 数组a中首尾的对应元素的乘积
B) 数组a中首尾的对应元素的乘积之和
C) 数组a中相邻各元素的乘积
D) 数组a中相邻各元素的乘积之和
正确答案是: D
37、以下程序的输出结果是________。

#include <stdio.h>
int d=1;
int fun( int p)
{ static int d=5;
d+=p;
printf("%d ",d);
return (d); }
void main()
{ int a=3; printf("%d \n",fun(fun(d))); } A) 6 11 11 B) 6 6 9
C) 6 12 12 D) 6 6 15
正确答案是: C
38、以下程序的输出结果是________。

#include <stdio.h>
int a[3][3]={1,2,3,4,5,6,7,8,9},b[10];
void f (int s[],int p[ ][3])
{ s[0]=p[1][1]; }
void main()
{ f(b,a);
printf("%d\n",b[0]); }
A) 1 B) 4
C) 7 D) 5
正确答案是: D
39、请读程序:
#include <stdio.h>
11
void fun(int s[ ])
{ int j=0;
do
s[j]+=s[j+1];
while (++j<2); }
void main()
{ int k, a[10]={2,3,4,5,6};
for(k=1;k<3;k++) fun(a);
for(k=0;k<5;k++) printf("%d",a[k]); }
上面程序的输出结果是_________。

A) 56956 B) 34556
C) 57956 D) 1211456
正确答案是: D
40、下列程序执行后输出的结果是________。

#include<stdio.h>
int f(int a)
{int b=0;
static c=3;
a=c++,b++;
return(a); }
void main()
{int a=2,i,k;
for(i=0;i<3;i++)
k=f(a++);
printf("%d\n",k); }
A) 3 B) 0
C) 5 D) 4
正确答案是: C
41、设有如下的函数
void ggg(x)
{float x;
printf("\n%d",x*x);}
则函数的类型________。

A) 与参数x的类型相同B) 是void
C) 是int D) 无法确定
正确答案是: C
42、以下函数fun形参的类型是________。

fun( float x)
{ float y;
y=3*x-4;
return y; }
A) int B) 不确定
C) void D) float
正确答案是: D 43、以下函数strtod的功能是,将一个十进制数字的字符串转换成与它等价
的有符号十进制整数值,划线处应填入________。

int strtod( char s[ ])
{ int i=0,f=0; int n;
n=0; if(s[0]== '-') {f=1;________; }
for(;s[i]!= '\0';i++) n= n*10+s[i]-'0';
if(f==1) return (-n);
else return (n); }
A) n=-1 B) i=1
C) n=n*(-1) D) i=0
正确答案是: B
44、以下叙述中,不正确的是________。

A) 使用static float a定义的外部变量存放在内存中的静态存储区
B) 使用float b定义的外部变量存放在内存中的动态存储区
C) 使用static float c定义的内部变量存放在内存中的静态存储区
D) 使用float d定义的内部变量存放在内存中的动态存储区
正确答案是: B
45、请读程序:
#include<stdio.h>
func( int a, int b)
{ int c;
c=a+b;
return c; }
void main()
{ int x=6, y=7, z=8, r;
r=func( (x--,y++,x+y),z--);
printf("%d\n",r); }
上面程序的输出结果是________。

A) 11 B) 20
C) 21 D) 31
正确答案是: C
选择题(共题),成绩()
1、以下叙述正确的是:
A) 在C程序中,主函数必须位于程序的最前面
B) 在C程序中,一行只能写一条语句
C) C程序的基本结构是程序行
D) C语句是完成某种程序功能的最小单位
正确答案是: D
2、以下能正确定义变量a、b和c并为其赋值的语句是:
12
A) int a=5; b=5; c=5; B) int a,b,c=5;
C) a=5, b=5, c=5; D) int a=5, b=5, c=5;
正确答案是: D
3、a,b均为整数,且b!=0,则表达式a/b*b+a%b的值是:
A) a B) b
C) a被b除的整数部分D) a被b除的商的整数部分正确答案是: A
4、以下符合C语言语法的表达式:
A) d=9+e+f=d+9 B) d=9+e,f=d+9
C) d=9+e=e++,d+9 D) d=9+e++=d+7
正确答案是: B
5、设x为int型变量,则执行语句x=10和x+=x-=x-x 后,x的值为:
A) 10 B) 20
C) 40 D) 30
正确答案是: B
6、阅读下面的程序
#include<stdio.h>
void main()
{
char ch;
scanf("%3c",&ch);
printf("%c",ch);
}
如果从键盘上输入
abc<回车>
则程序的运行结果是:
A) a B) b
C) c D) 程序语法出错
正确答案是: A
7、请读程序:
#include <stdio.h>
void main()
{ int a; float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
}
若运行时从键盘上输入9876543210<CR>(<CR>表示回车),则上面程序的
输出结果是
A) a=98,b=765,c=4321 B) a=10,b=432,c=8765
C) a=98,b=765.000000,c=4321.000000 D) a=98,b=765.0,c=4321.0 正确答案是: C
8、C语言中最简单的数据类型包括
A) 整型,实型,逻辑型B) 整型,实型,字符型
C) 整型,字符型,逻辑型D) 整型,实型,逻辑型,字符型
正确答案是: B
9、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关
系的表达式为
A) a<>0 B) !a C) a=0 D) a
正确答案是: D
10、若有以下定义: float x; int a,b; 则正确的switch 语句是
A) switch(x) B) switch(x)
{ case 1.0:printf("*\n"); { case 1,2:printf("*\n");
case 2: printf("**\n") case 3:printf("**\n");
} }
C) switch(a+b) D) switch(a-b);
{ case 1: printf("*\n") ; { case 1:printf("*\n");
case 2: printf("**n"); case 2:printf("**\n");
} }
正确答案是: C
11、以下程序段运行结果是( )。

int x=1,y=1,z=-1;
x+=y+=z;
printf("%d\n",x<y?y:x);
A) 1 B) 2
C) 4 D) 不确定的值
正确答案是: A
12、在执行以下程序时,为了使输出结果为:t=4 则给a和b
输入的值应满足的条件是
#include <stdio.h>
void main( )
{ int s,t,a,b;
scanf("%d,%d",&a,&b);
s=1; t=1;
if (a<0) s=s+1;
if (a>b) t=s+t;
else if (a==b) t=5;
else t=2*s;
printf("t=%d\n",t);
13
}
A) a>b B) a<b<0
C) 0>a>b D) 0<a<b
正确答案是: B
13、以下程序输出结果是
#include <stdio.h>
void main( )
{ int m=4;
if (++m>5) printf("%d\n",m--);
else printf("%d\n",--m);
}
A) 7 B) 6
C) 5 D) 4
正确答案是: D
14、若执行下面的程序从键盘上输入9,则输出结果是
#include <stdio.h>
void main( )
{int n;
scanf("%d",&n);
if (n++<10) printf("%d\n",n);
else printf("%d\n",n--);}
A) 11 B) 10
C) 9 D) 8
正确答案是: B
15、请读程序:
#include <stdio.h>
void main( )
{ float x,y;
scanf("%f",&x);
if (x<0.0) y=0.0;
else if ((x<5.0) && (x!=2.0))
y=1.0/(x+2.0);
else if (x<10.0) y=1.0/x;
else y=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入 2.0<CR>(<CR>表示回车),则上面程序
的输出结果
A) 0.000000 B) 0.250000
C) 0.500000 D) 1.000000
正确答案是: C
16、选择出合法的if语句(设int x,y;):
A) if (x!=y) if(x>y) printf("x>y\n");
else printf("x<y\n"); else printf("x==y\n");
B) if (x!=y)
if (x>y) printf("x>y\n")
else printf("x<y\n");
else printf("x==y\n");
C) if (x!=y) if(x>y) printf("x>y\n");
else printf("x<y\n")
else printf("x==y\n");
D) if (x!=y)
if(x>y) printf("x>y\n");
else printf("x<y\n")
else printf("x==y\n");
正确答案是: A
17、执行下列程序,输入为1的输出结果是( )。

#include <stdio.h>
void main( )
{ int k;
scanf("%d",&k);
switch (k)
{
case 1: printf("%d\n",k++);
case 2: printf("%d\n",k++);
case 3: printf("%d\n",k++);
case 4: printf("%d\n",k++); break;
default: printf("Full!\n");
}
}
A) 1 B) 2
C) 2 D) 1
3 2
4 3
5 4
正确答案是: D
18、执行以下程序,分别输入10和30,运行的结果分别是( )。

#include <stdio.h>
void main( )
{ int x,c,y;
scanf("%d",&x);
if (x<0) c=-1;
else c=x/10;
switch (c)
{ case -1: y=0; break;
case 0: y=x; break;
case 1: y=10; break;
case 2:
case 3: y=-0.5*x+20; break;
14
default: y=-2;
}
if (y!=-2) printf("y=%d\n",y);
else printf("error\n");
}
A) y=10 B) y=10
y=-2 y=10
C) y=10 D) y=0
y=5 y=-2
正确答案是: C
19、C语言中while 和do-while 循环的主要区别是( )。

A) do-while的循环体至少无条件执行一次
B) while 的循环控制条件比do-while 的循环控制条件严格
C) do-while 允许从外部转到循环体内
D) do-while 的循环体不能是复合语句
正确答案是: A
20、以下程序的输出结果是
#include<stdio.h>
void main( )
{ int a,b;
for(a=1,b=1;a<=100;a++)
{ if (b>=10) break;
if (b%5==1) { b+=5; continue; } }
printf("%d\n",a); }
A) 101 B) 6
C) 4 D) 3
正确答案是: D
21、下面程序的输出结果是( )。

#include<stdio.h>
void main( )
{ unsigned int num,k;
num=26;k=1;
do {
k*=num%10;
num/=10;
} while(num);
printf("%d\n", k);
}
A) 2 B) 12
C) 60 D) 18
正确答案是: B
22、下面函数的功能是根据以下的公式,返回满足精度∈要求的π值,请填空。

π 1 1 2 1 2 3 1 2 3 4 — = 1+— + —— + ——— + ————+ ……
2 3 3 5 3 5 7 3 5 7 9 #include<stdio.h>
void main( )
{ double esp,s=0.0, t=1.0;
int n;
scanf("%f",&esp);
for(_________; t>esp; n++)
{ __________;
t=n*t/(2*n+1);}
s=2*s;
printf("s=%f\n",s);
}
A) n=1 B) t=1
s+=t s=s/t
C) t=1 D) n=1.0
s=s+t t+=s
正确答案是: A
23、以下程序段的执行结果是( )。

int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)
m++;
printf("%d\n",m);
A) 12 B) 15
C) 20 D) 25
正确答案是: C
24、下面程序的输出结果是( )。

#include<stdio.h>
void 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
正确答案是: D
25、下面程序的输出结果是( )。

#include<stdio.h>
void main( )
{ int i;
for(i=1;i<6;i++)
{ if (i%2) {printf("#");continue;}
printf("*");
}
15。

相关文档
最新文档