- 若有说明语句:char c = ‘\72’ ; 则变量 c 中存放的是
A)2 个字符
B)1 个字符
C)3 个字符
D)说明语句不合法
答案 B - 以下叙述正确的是
A)do-while 语句构成的循环,当 while 语句中的表达式值为 0 时
结束循环
B)do-while 语句和 while 构成的循环功能相同
C)while 语句构成的循环,当 while 语句中的表达式值为非 0 时结
束循环
D)do-while 语句构成的循环,必须用 break 语句退出循环
答案:A - 有以下程序
#include <stdio.h>
main()
{
int a, b, c=241;
a = c/100 % 9;
b = ( -1 )&&( -1 );
printf("%d, %d\n", a, b );
}
程序运行后的输出结果是
A) 6,0
B)6,1
C) 2,1
D)2,0
答案:C - 有以下程序
#include <stdio.h>
main( ) {
int i ;
for( i=1; i<= 5; i++ ) { if( i % 2 ) printf( "" );
else continue;
printf( “#” );
}
printf( “$\n” );
}
程序运行后的输出结果是
A) # * # * # $
B)* # * # * $
C)* # * # $
D)* # * # * # * $
答案:A - 已知 a=5,b=6,c=7,d=8,m=2,n=2,执行
(m=a>b)&&(n=c<d)后 n 的值为
A)0
B) 2
C)1
D)-1
答案:B - 有以下程序
#include <stdio.h>
main()
{
int x=23;
do
{
printf("%2d\n", x–);
} while( !x );
}
程序的执行结果是
A)输出 23
B)输出 321
C)不输出任何内容
D)陷入无限循环
答案:A - 有以下程序
#include <stdio.h>
main()
{
char c;
while( ( c=getchar() )!= ‘\n’ ) {
switch( c-‘2’ ) {
case 0 :
case 1 : putchar( c+4 );
case 2 : putchar( c+4 ); break;
case 3 : putchar( c+3 );
default : putchar( c+2 ); break;
} }
printf( “\n” );
}
程序运行后从第一列开始输入以下数据
2473<回车>
程序的输出结果是
A) 4444
B) 668977
C)6677877
D)68766
答案:B - 有以下程序
#include <stdio.h>
main()
{ int i=0, sum=1;
do
{
sum += i++ ; } while( i<6 );
printf("%d \n",sum);
}
程序的输出结果是
A)18
B)16
C)20
D)22
答案:B - 有以下程序段,若变量已正确定义并赋值
if(a>b)printf(“x=%d,”, x);
else printf(“y=%d,”, y);
if(a<=b)i++;
else j++;
则与此程序段功能相同的选项是
A)if(a>b){printf(“x=%d,”, x);j++;}
else {printf(“y=%d,”, y);i++;}
B)if(a>b){printf(“x=%d,”, x);i++;}
else {printf(“y=%d,”, y);j++;}
C)if(a<=b){printf(“x=%d,”, x);i++;}
else {printf(“y=%d,”, y);j++;}
D)if(a>=b){printf(“x=%d,”, x);i++;}
else {printf(“y=%d,”, y);j++;}
答案:A - 以下程序的功能是判断输入的一个整数是否能被 3 或 7 整除,
若能整除,输出 YES,否则输出 NO。在下划线处应填入的选项是
#include <stdio.h>
main()
{ int k;
printf(“Enter a int number : “); scanf(”%d”, &k );
if ________ printf(“YES\n”);
else printf(“NO\n”);
}
A)( (k%3 == 0) || (k%7 == 0) )
B)(k/3 == 0) || (k/7 == 0)
C)( (k%3=0) || (k%7=0) )
D)( (k%3 == 0)&& (k%7 == 0) )
答案:A - 对于 if(表达式) 语句,以下叙述正确的是
A)“表达式”的值可以是任意合法的数值
B)在“表达式”中不能出现变量
C)在“表达式”中不能出现常量
D)“表达式”的值必须是逻辑值
答案:A - 有如下程序
#include <stdio.h>
main()
{
int a = 0, b = 1;
if (a++ && b++)
printf(“T”);
else
printf(“F”);
printf(“a=%d,b=%d\n”, a, b);
}
程序运行后的输出结果是
A) Ta=1,b=2
B)Fa=0,b=2
C) Fa=1,b=1
D)Ta=0,b=1
答案:C - 有如下程序
#include <stdio.h>
main()
{
int i, data;
scanf("%d", &data);
for (i=0; i<5; i++)
{
if (i < data) continue;
printf("%d,", i);
}
printf("\n");
}
程序运行时,从键盘输入:3<回车>后,程序输出结果为
A) 0,1,2,3,4,5,
B)1,2,3,4,
C) 3,4,
D)0,1,2,
答案:C - 有如下程序
#include <stdio.h>
main()
{
int i, data;
scanf("%d", &data);
for (i=0; i<5; i++)
{
if (i > data) break;
printf("%d,", i);
}
printf("\n");
}
程序运行时,从键盘输入:3<回车>后,程序输出结果为
A) 0,1,
B) 0,1,2,3,
C)3,4,5,
D)3,4,
答案:B - 有如下程序
#include <stdio.h>
main()
{
char a = ‘3’, b = ‘A’;
int i;
for (i=0; i<6; i++)
{
if (i % 3) putchar(a + i);
else putchar(b + i);
}
printf("\n");
}
程序运行后的输出结果是
A)A45D78
B)ABC678
C)34CD78
D)34AB78
答案:A - 有如下程序
#include <stdio.h>
main()
{
int i;
for (i=0; i<5; i++)
putchar(‘9’ - i);
printf("\n");
}
程序运行后的输出结果是
A) 54321
B) 98765
C)‘9’‘8’‘7’‘6’‘5’
D)‘43210’
答案:B - 有如下程序
#include <stdio.h>
main()
{
int x = 0x13;
if (x = 0x18) printf(“T”);
printf(“F”);
printf("\n");
}
程序运行后的输出结果是
A) T
B) TF
C)F
D)TFT
答案:B - 有如下程序
#include <stdio.h>
main()
{
int a = 0, b = 1;
if (++a = = b++)
printf(“T”);
else
printf(“F”);
printf(“a=%d,b=%d\n”, a, b);
}
程序运行后的输出结果是
A)Ta=1,b=2
B)Fa=1,b=2
C)Ta=0,b=1
D)Fa=0,b=2
答案:A - 有如下程序
#include <stdio.h>
main()
{
int i = 1;
for (printf("%d", i); i<4; i++)
printf("%d", i);
printf("\n");
}
程序运行后的输出结果是
A) 0123
B)123
C) 1123
D)001
答案:C - 有如下程序
#include <stdio.h>
main()
{
char ch = ‘A’;
while (ch < ‘D’)
{
printf("%d", ch - ‘A’);
ch++;
}
printf("\n");
}
程序运行后的输出结果是
A) 123
B)ABC
C)abc
D) 012
答案:D - 有如下程序
#include <stdio.h>
main()
{
if (’\0’ == 0) putchar(‘X’);
if (‘0’ == 0) putchar(‘Y’);
if (‘a’ > ‘b’) putchar(‘Z’);
printf("\n");
}
程序运行后的输出结果是
A)X
B)XYZ
C)YZ
D)Y
答案:A - 有如下程序
#include <stdio.h>
main()
{
char ch = ‘M’;
while (ch != ‘K’)
{
ch --;
putchar(ch);
}
printf("\n");
}
程序运行后的输出结果是
A) MN
B) LK
C)OP
D)MM
答案:B - 有以下程序段
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>b) a=b;
if(a>c) a=c;
printf("%d\n",a);
该程序段的功能是
A)输出 a、b、c 中的最小值
B)输出 a、b、c 中的最大值
C)输出 a 的原始值
D)输出 a、b、c 中值相等的数值
答案:A - 有以下程序
#include <stdio.h>
main()
{
int x;
scanf("%d",&x);
if(x>10) printf(“1”);
else if(x>20) printf(“2”);
else if(x>30) printf(“3”);
}
若运行时输入:35<回车>,则输出结果是
A)1
B)2
C)3
D)123
答案:A - 若要实现 total=1+2+3+4+5,以下程序段错误的是
A)int i=1,total=1;
while(i<5)
{ total+=i;
i+=1;
}
B)int i=1,total=0;
while(i<=5)
{ total+=i;
i+=1;
}
C)int i=0,total=0;
while(i<5)
{ i+=1;
total+=i;
}
D)int i=0,total=0;
while(i<=5)
{ total+=i;
i+=1;
}
答案:A - 有以下程序
#include <stdio.h>
main()
{
int i=1,k=0;
for( ; i<6 ; ) { switch(i%3)
{ case 0: k++;
case 1: k++; break;
case 2: k++; continue;
}
i+=1;
}
printf("%d\n",k)
程序的运行情况是
A) 输出 6
B) 形成无限循环
C)输出 5
D)输出 4
答案:B - 以下不能输出小写字母 a 的选项是
A)printf("%c\n",“a”);
B)printf("%c\n",‘A’+32);
C)putchar(97);
D)putchar(‘a’);
答案:A - 有以下程序段
char c1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
若要给 c1、c2、c3 分别输入字母 A、B、C,则以下对输入形式的
描述正确的是
A)字母 A、B、C 之间不能有分隔符
B)字母 A、B、C 之间可以用空格分隔
C)字母 A、B、C 之间可以用回车符分隔
D)字母 A、B、C 之间可以用 Tab 键分隔
答案:A - 有以下程序段
scanf("%d%d%d",&a,&b,&c);
if(a<b) a= =b;
if(a<c) a= =c;
printf("%d\n",a);
该程序段的功能是
A) 输出 a、b、c 中值相等的数值
B)输出 a、b、c 中的最大值
C)输出 a、b、c 中的最小值
D) 输出 a 的原始值
答案:D - 以下程序段中,不能实现“如果 a<b 则 x=10,否则 x=-10”
的是
A)if(a<b) x=10;
if(b<a) x=-10;
B)if(a<b) x=10;
else x=-10;
C)x=-10;
if(a<b) x=10;
D)x=(a>=b)? -10:10;
答案:A - 以下能够实现计算 5!的程序段是
A)int fac=1,k=0;
do{ k++; fac*=k;} while(k<5);
B)int fac=0,k=1;
do{ fac*=k; k++;} while(k<5);
C)int fac=1,k=1;
do{ k++; fac*=k;} while(k<=5);
D)int fac=1,k=0;
do{ fac*=k; k++;} while(k<5);
答案:A - 有以下程序
#include <stdio.h>
main()
{
int x=0,y=6;
do
{ while(–y) x++;}
while(y–);
printf("%d,%d\n",x,y);
}
程序的运行结果是
A) 5,0
B)6,0
C) 5,-1
D)6,-1
答案:C - 有以下程序
#include <stdio.h>
main()
{ char *s=“120119110”;
int n0,n1,n2,nn,i;
n0=n1=n2=nn=i=0;
do{
switch(s[i++])
{ default : nn++;
case ‘0’ : n0++;
case ‘1’ : n1++;
case ‘2’ : n2++;
} } while(s[i]);
printf(“n0=%d,n1=%d,n2=%d,nn=%d\n”,n0,n1,n2,nn);
}
程序的运行结果是
A) n0=4,n1=8,n2=9,nn=1
B)n0=2,n1=5,n2=1,nn=1
C)n0=2,n1=7,n2=10,nn=1
D) n0=3,n1=8,n2=9,nn=1
答案:D - 有以下程序
#include <stdio.h>
int m1(int x,int y)
{ return x<=y ? x :y; }
int m2(int x,int y)
{ return x<=y ? y :x; }
int fun(int a,int b)
{ return a+b; }
main()
{ int x=2,y=3,z=1;
printf("%d\n", fun(m1(x,y),m2(y,z)));
}
程序的运行结果是
A) 6
B) 5
C)4
D)3
答案:B - 若有定义:int a=0,b=0,c=0,d=0; ,对于表达
式 (a++ && b++) ? c++ : d++,以下关于其执行顺序的叙述正确
是
A)先计算表达式 a++,其值为 0,由此即可确定(a++ && b++)
值为 0,因此计算 d++
B)先计算表达式 a++,其值为 0;再计算表达式 b++,其值为 0,
由此可确定(a++ && b++)值为 0,因此计算 d++
C)先计算表达式 a++,其值为 1;再计算表达式 b++,其值为 1,
由此可确定(a++ && b++)值为 1,因此计算 c++
D)先计算表达式 b++,其值为 1;再计算表达式 a++,其值为 1,
由此可确定(a++ && b++)值为 1,因此计算 c++
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a,b;
for (a=0; a<3; a++)
{ scanf("%d", &b);
switch(b)
{ default: printf("%d,", ++b);
case 1: printf("%d,", ++b);
case 2: printf("%d,", ++b);
} } }
执行时输入:1 2 3<回车>,则输出结果是
A) 2,3,4,
B) 2,3,3,4,5,6,
C)2,2,3,4,4,4,
D)2,3,4,3,4,4,
答案:B - 有以下程序
#include <stdio.h>
main( )
int a=-1, b=-1;
for(; ++a;) ++b;
printf("%d,%d\n", a, b);
}
程序运行后的输出结果是
A) 0,0
B) 0,-1
C)-1,-1
D)结果不确定
答案:B - 有以下程序
#include <stdio.h>
main( ) { int a=0, b=0;
for(; a<5; a++)
{ if (a%2==0) continue;
b += a;
break;
}
printf("%d \n", b);
}
程序运行后的输出结果是
A)1
B)4
C)0
D)10
答案:A - 以下不属于合法 C 语言转义字符的是
A)’\c’
B)’\a’
C)’\b’
D)’\r’
答案:A - 有以下程序
#include <stdio.h>
main( ) { char c;
for(; (c=getchar()) != ‘#’; ) putchar(++c);
}
执行时如输入为:abcdefg##<回车> , 则输出结果是
A) bcdefgh$$
B)bcdefgh$
C) bcdefgh
D)abcdefg
答案:C - 若有定义:int a=0,b=0,c=0,d=0;,以下关于 C 语言表达式:
(++a || ++b) ? ++c : ++d 执行顺序的叙述正确的是
A)先计算表达式++a,其值为 1,由此可确定(++a || ++b)值为 1,
因此计算++c
B)先计算表达式++a,其值为 1;再计算表达式++b,其值为 1,
由此可确定(++a || ++b)值为 1,因此计算++c
C)先计算表达式++b,其值为 1;再计算表达式++a,其值为 1,
由此可确定(++a || ++b)值为 1,因此计算++c
D)先计算++a,++b,++d,使得 a,b,d 的值都为 1,由此可确定
(++a || ++b)值为 1,因此计算++c
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a,b;
for (a=0; a<3; a++)
{ scanf("%d", &b);
switch(b)
{ default: printf("%d,", b++);
case 1: printf("%d,", b++);
case 2: printf("%d,", b++);
} } }
程序运行时输入:1 2 3<回车>,则输出结果是
A) 1,2,3,
B) 1,2,2,3,4,5,
C)1,2,3,2,3,3,
D)1,1,1,2,2,3
答案:B - 有以下程序
#include <stdio.h>
main( ) { int a = 1, b = 1;
for( ; a–; ) b–;
printf("%d,%d\n", a, b);
}
程序运行后的输出结果是
A)-1,0
B)0,0
C)-1,-1
D)1,1
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a=1, b=0;
for(; a<5; a++)
{ if (a%2 = = 0) break;
continue;
b += a;
}
printf("%d \n", b);
}
程序运行后的输出结果是
A) 1
B) 0
C)10
D)4
答案:B - 若有定义:
char s[30] = {0};
运行时输入:
This is a string.<回车>
则以下不能正确读入上述字符串到字符数组 s 中的选项是
A)scanf("%s", s);
B)gets(s);
C)for (i=0; (c=getchar()) != ‘\n’; i++) s[i] = c;
D)i = 0;
while ((c=getchar())!=’\n’) s[i++] = c;
答案:A - 有以下程序
#include <stdio.h>
main( ) { char c;
c=getchar();
do {
putchar(c++);
} while((c=getchar()) != ‘#’);
}
程序运行时从第一列开始输入:abcdefg##<回车>,则输出结果
是
A) abcdefg#
B)bcdefgh
C) abcdefg
D)bcdefgh$
答案:C - 对于 if(表达式) 语句,以下叙述正确的是
A)“表达式”的值可以是任意合法的数值
B)变量不能出现在“表达式”中
C)常量不能出现在“表达式”中
D)如果“表达式”的值不是逻辑值,程序会出编译错误
答案:A - 有如下程序
#include <stdio.h>
main( ) {
int a = 0, b = 1;
if (a++ && b++)
printf(“TRUE”);
else
printf(“FALSE”);
printf("_OUT:a=%d,b=%d\n", a, b);
}
程序运行后的输出结果是
A) FALSE_OUT:a=0,b=2
B) FALSE_OUT:a=1,b=1
C)TRUE_OUT:a=1,b=2
D)TRUE_OUT:a=0,b=1
答案:B - 有如下程序
#include <stdio.h>
main( ) {
int i, data;
scanf("%d", &data);
for (i=0; i<5; i++)
{
if (i < data) continue;
printf("%d-", i);
} }
程序运行时,从键盘输入:3<回车>后,程序输出结果为
A)3-4-
B)1-2-3-
C)0-1-2-
D)0-1-2-3-
答案:A - 有如下程序
#include <stdio.h>
main( ) {
int i, data;
scanf("%d", &data);
for (i=0; i<10; i++)
{
if (i > data) break;
printf("%d,", i);
} }
程序运行时,从键盘输入:3<回车>后,程序输出结果是
A) 1,2,3,
B) 0,1,2,3,
C)2,3,4,
D)3,4,5,
答案:B - 有如下程序
#include <stdio.h>
main( ) {
char a = ‘0’, b = ‘a’;
int i;
for (i=0; i<4; i++)
{
if (i % 3) putchar(a + i);
else putchar(b + i);
} }
程序运行后的输出结果是
A) 10ab
B)ab3d
C) a12d
D)11ac
答案:C - 有如下程序
#include <stdio.h>
main( ) {
int i;
for (i=0; i<5; i++)
putchar(‘Z’ - i);
}
程序运行后的输出结果是
A)ZYXWV
B)VWXYZ
C)‘X’‘Y’‘Z’‘W’‘V’
D)‘ABCDE’
答案:A - 有以下程序
#include <stdio.h>
main( ) {
int x = 0x13;
if (x = 0x12) printf(“True”);
printf(“False\n”);
}
程序运行后的输出结果是
A) False
B)True
C) TrueFalse
D)TrueFalseTrue
答案:C - 有以下程序
#include <stdio.h>
main( ) {
int a = 0, b = 1;
if (++a = = b++)
printf(“1”);
else
printf(“0”);
printf(“a=%d,b=%d\n”, a, b);
}
程序运行后的输出结果是
A) 0a=1,b=2
B) 1a=1,b=2
C)1a=0,b=1
D)0a=0,b=2
答案:B - 有以下程序
#include <stdio.h>
main( ) {
int i = 4;
for ( printf("%d", i); i<2; i++) printf("%d", i);
printf("\n");
}
程序运行后的输出结果是
A)4
B)12
C)1
D)0
答案:A - 有以下程序
#include <stdio.h>
main( ) {
char ch = ‘B’;
while (ch < ‘E’)
{
printf("%d", ch - ‘A’);
ch++;
}
printf("\n");
}
程序运行后的输出结果是
A) ABC
B) 123
C)abc
D)012
答案:B - 有以下程序
#include <stdio.h>
main( ) {
if (’\0’ = = 0) putchar(‘1’);
if (‘0’ = = 0) putchar(‘2’);
if (‘a’ > ‘b’) putchar(‘3’);
}
程序运行后的输出结果是
A)1
B)123
C)23
D)3
答案:A - 有以下程序
#include <stdio.h>
main( ) {
char ch = ‘M’;
while (ch != ‘K’)
{
putchar(ch);
ch --; } }
程序运行后的输出结果是
A) OP
B)MK
C) ML
D)mm
答案:C - 字符数组 a 和 b 中分别存储了字符串,判断字符串 a 和 b 相
等,应当使用的是
A)if(strcmp(a,b)= =0)
B)if(strcpy(a,b))
C)if(a= =b)
D)if(a=b)
答案:A - 以下正确的转义字符是
A) ‘\0x41’
B) ‘\x41’
C)’\X41’
D)’\0X41’
答案:B - 为了避免在嵌套的 if-else 语句中产生二义性,C 语言规定与
else 子句配对是
A)在其之前最近的不带 else 的同层 if 子句
B)在其之后最近的不带 else 的 if 子句
C)与其缩排位置相同的 if 子句
D)与其在同一行上的 if 子句
答案:A - 有如下程序段
int k;
for(k=2;k==0;) printf("%d",k–);
则 for 循环体执行的次数是
A) 2 次
B)1 次
C) 0 次
D)无限次
答案:C - 有如下程序段
for (i=0; i<10; i++)
if (i <= 5) break;
则循环结束后 i 的值为
A)0
B)1
C)5
D)10
答案:A - 以下程序段中,与其他三个功能不同的程序段是
A)s=0;i=1;
for( ; ; ) {s+=i; i++; if(i<=10) break;}
B)s=0,i=1;
for( ; i<=10; ) {s+=i,i++;}
C)s=0;
for(i=1; i<=10; i++) {s+=i;}
D)for(s=0,i=1; i<=10; s+=i,i++) ;
答案:A - 设有定义:int a=0,b=1;,以下表达式中,会产生“短路”
现象,致使变量 b 的值不变的是
A)a++ && b++
B)a++ || ++b
C)++a && b++
D)+a || ++b
答案:A - 有以下程序
#include <stdio.h>
main( ) { int x=1, y=2, z=3;
if(x>1)
if(y>x) putchar(‘A’);
else putchar(‘B’);
else
if(z<x) putchar(‘C’);
else putchar(‘D’);
}
程序的运行结果是
A) B
B)C
C) D
D)A
答案:C - 有语句:k=x<y ?(y<z?1:0):0; ,以下选项中,与此语句功能
相同的是
A)if(x<y && y<z) k=1; else k=0;
B)if(x<y) k=0; else if(y<z) k=1;
C)if(x<y) if(y<z) k=1;else k=0;
D)if(x<y || y<z) k=1; else k=0;
答案:A - 有如下程序段
for(i=0;i<10;i++)
if(i>5) break;
则循环结束后 i 的值为
A) 9
B)5
C) 6
D)10
答案:C - 有以下程序
#include <stdio.h>
main( ) { int i,a;
for (i=0; i<=10; i++) a=i;
printf("%d,%d\n", i, a);
}
程序的运行结果是
A)11,10
B)10,10
C)10,11
D)11,11
答案:A - 有以下程序段
int x ,i ;
for(i=1;i<=100;i++)
{ scanf("%d",&x);
if(x<0) continue;
printf("%4d\n",x);
}
下面针对上述程序段的描述正确的是
A)最多可以输出 100 个非负整数
B)当 x<0 时结束整个循环
C)当 x>=0 时没有任何输出
D)printf 函数调用语句总是被跳过
答案:A - 以下与数学表达式 “0<x<5 且 x≠2” 不等价的 C 语言逻辑
表达式是
A)(0<x<5) && (x!=2)
B)0<x && x<5 && x!=2
C)x>0 && x<5 && x!=2
D)(x>0 && x<2) || (x>2 && x<5)
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a, b;
for (a=0; a<3; a++)
{ scanf("%d", &b);
switch(b)
{ default: printf("%d,",b+1); continue;
case 1: printf("%d,", b+1);
case 2: printf("%d,", b+1); continue;
} } }
执行时输入:1 2 3<回车>,则输出结果是
A) 2,2,3,4,4,4,
B)2,3,4,
C) 2,2,3,4,
D)2,3,3,4,5,6,
答案:C - 有以下程序
#include <stdio.h>
main( ) { int a=-2, b=2;
for(; ++a && --b;)
;
printf("%d,%d\n", a,b);
}
程序运行后的输出结果是
A) 1,-1
B)0,0
C) 0,1
D)0,2
答案:C - 有以下程序
#include <stdio.h>
main( ) { int a=0, b=0;
for( ;a<7; a++ ) { if (a%2==0) continue;
b += a;
continue;
}
printf( “%d \n”, b );
}
程序运行后的输出结果是
A) 0
B)4
C)1
D) 9
答案:D - 以下选项中是非转义字符的是
A)’\d’
B)’\t’
C)’\b’
D)’\r’
答案:A - 有以下程序
#include <stdio.h>
main( ) { char c;
for (; ( c=getchar()) != ‘#’; ) { if ( c>=‘a’ && c<=‘z’ ) c = c - ‘a’ + ‘A’;
putchar(++c);
} }
执行时输入:aBcDefG##<回车>, 则输出结果是
A) bcdefgh
B)ABCDEFG
C)AbCdEFg
D) BCDEFGH
答案:D - 以下选项中错误的是
A)printf("%s\n", ‘s’);
B)printf("%d %c\n", ‘s’,‘s’);
C)printf("%c\n", ‘s’- 32);
D)printf("%c\n", 65);
答案:A - 若有定义:char ch;当执行以下循环时从键盘输入 abcde<
回车>,将输出的个数是
while((ch=getchar())==‘e’) printf("");
A)1
B)4
C)5
D)0
答案:D - 有以下程序
#include <stdio.h>
main( ) { int t;
scanf("%d", &t );
if( t++ < 6 ) printf("%d\n", t);
else printf("%d\n", t–);
printf("\n");
}
执行时输入:6<回车>,则输出结果是
A)5
B)8
C)6
D)7
答案:D - 有以下程序
#include <stdio.h>
main()
{ int x=10,y=11,z=12;
if( y< z )
x=y; y=z; z=x;
printf(“x=%d y=%d z=%d\n”, x, y, z );
}
程序运行后的输出结果是
A)x=11 y=12 z=11
B)x=10 y=10 z=10
C)x=11 y=11 z=10
D)x=10 y=10 z=12
答案:A - 有以下程序
#include <stdio.h>
#include <math.h>
main()
{ double x, y, z;
scanf("%lf%lf",&x,&y );
z= x/ y;
while(1)
if( fabs(z) > 1.0 ) { x=y; y=x; z=x/y; }
else break;
printf(“y=%f \n”, y );
}
执行时输入:3.6 2.4<回车>,则输出结果是
A)2.400000
B)1.500000
C)1.600000
D)2.000000
答案:A - 以下选项中与 ( !a== 0 )的逻辑值不等价的表达式是
A)( a== !0 )
B)a
C)(a>0 || a<0)
D)(a!= 0 )
答案:A - 对于 if(表达式) 语句,以下叙述正确的是
A)“表达式”可以是常量
B)“表达式”的值只能是整数值
C)“表达式”不能是变量
D)“表达式”中不可以出现字符型变量的比较
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a = 10, b = 11;
if (++a = = b++)
printf(“T”);
else
printf(“F”);
printf(“a=%d,b=%d\n”, a, b);
}
程序运行后的输出结果是
A) Ta=10,b=11
B)Fa=10,b=12
C) Ta=11,b=12
D)Fa=11,b=11
答案:C - 有以下程序
#include <stdio.h>
main( ) { int i;
char c;
scanf("%c", &c);
for (i=0; i<5; i++)
{
if (i > c) continue;
printf("%d,", i);
} }
执行时输入:0<回车>后,则输出结果是
A)0,1,2,3,4,
B)0,0,0,0,0,
C)5,
D)0,1,
答案:A - 有以下程序
#include <stdio.h>
main( ) { char ch = ‘1’;
while (ch < ‘9’)
{
printf("%d", ch - ‘0’);
ch++;
} }
程序运行后的输出结果是
A)1
B)01234567
C)0
D) 12345678
答案:D - 有以下程序
#include <stdio.h>
main( ) {
if (’\0’ = = 0) putchar(‘1’);
if (“0” = = 0) putchar(‘2’);
if (‘A’ = = “A”) putchar(‘3’);
}
程序运行后的输出结果是
A)3
B)123
C)23
D1
答案:D - 有以下程序
#include <stdio.h>
main( ) { char ch = ‘D’;
while (ch > ‘A’)
{ ch --;
putchar(ch);
if (ch == ‘A’) break;
putchar(ch+1);
} }
程序运行后的输出结果是
A)CDBCA
B)BCA
C)CCBB
D)CB
答案:A - 以下与表达式(!x= =0) 的逻辑值不等价的选项是
A)x==1
B)x
C)x!=0
D)x>0 || x<0
答案:A - 以下叙述正确的是
A)表达式 9+‘0’的值是字符 9 的 ASCII 码
B)表达式’A’+32 的值是字母 A 的 ASCII 码
C)表达式’a’-32 的值是字母 a 的 ASCII 码
D)表达式 9-'0’的值是数值 9
答案:A - 变量 math 和 engl 中存放了两门课的成绩。若两门课成绩均
在 60 分以上(含 60),则显示“pass”;有一门低于 60 分则显
示“fail”,以下不能实现上述功能的程序段是
A)if(math<60)
if(engl<60)
printf(“fail\n”);
else
printf(“pass\n”);
B)if(math<60)
printf(“fail\n”);
else
if(engl>=60)
printf(“pass\n”);
else
printf(“fail\n”);
C)if ((math<60) ||(engl<60))
printf(“fail\n”);
else
printf(“pass\n”);
D)if ((math>=60) && (engl>=60))
printf(“pass\n”);
else
printf(“fail\n”);
答案:A - 以下程序拟实现计算 s=1 + 22 + 33 + … + nn +…,直
到 s>1000 为止。
#include <stdio.h>
main( ) { int s,n;
s=1;
n=1;
do
{ n=n+1; s=s+nn; }
while(s>1000);
printf(“s=%d\n”,s);
}
程序运行后,不能得到正确结果,以下修改方案正确的是
A) 把 s=1; 改为 s=0;
B) 把 while(s>1000); 改为 while(s<=1000);
C)把 n=1; 改为 n=0;
D)把 n=n+1; 改为 n=n*n;
答案:B - 有以下程序
#include <stdio.h>
main( ) { int m,n;
scanf("%d%d", &m,&n);
while(m!=n)
{ while(m>n) { m=m-n; }
while(n>m) { n=n-m; } }
printf("%d\n",m);
}
该程序的功能是
A)计算 m 和 n 的最大公约数
B)计算 m 和 n 的最小公倍数
C)计算 m 和 n 的差值
D)找出 m 和 n 中的较大值
答案:A - 以下程序拟实现计算 sum=1+1/2+1/3+ … +1/50 。
#include <stdio.h>
main( ) { int i; double sum;
sum=1.0;
i=1;
do
{ i++; sum += 1/i; }
while( i<50 );
printf(“sum=%lf\n”,sum);
}
程序运行后,不能得到正确结果,出现问题的语句是
A) i++;
B)while(i<50);
C)sum = 1.0;
D) sum += 1/i;
答案:D - 若有以下程序
#include <stdio.h>
main()
{ char a=‘5’, b;
a++;
printf("%d,%d\n", a-‘5’+255, b=a- ‘5’);
}
执行后的输出结果是
A)256,1
B)1,256
C)255,1
D)256,0
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a=1,b=2,c=3,d=4, r=0;
if (a!=1) r=1;
if (b= =2) r=2;
else if (c!=3) r=3;
else if (d= =4) r=4;
printf("%d\n", r);
}
执行后的输出结果是
A)0
B)4
C)1
D)2
答案:D - 有以下程序段
int s, n;
s=1;
for( n=10; n>0; n-- ) s+=n;
该程序段拟实现整数 1~10 的累加求和,但程序中有错误。以下 4
种修改方案中仍然错误的一个是
A)将 for 循环改为 for(n=2;n<10;n++)
B)将 for 循环改为 for(n=10;n>1;n–)
C)将 for 循环改为 for(n=10;n>=2;n–)
D)将 s=1; 改为 s=0;
答案:A - 以下关于循环语句的叙述中正确的是
A)do-while 语句的循环体至少执行一次
B)while 语句的循环体至少执行一次
C)for 语句的循环体至少执行一次
D)上述 A、B、C 说法均正确
答案:A - 有以下程序
#include <stdio.h>
main( ) { int a=7, b=0;
do { b += a; a -=1; } while ( a-- ) ;
printf( “%d,%d\n”, b, a );
}
执行后的输出结果是
A) 16,0
B)28,1
C) 16,-1
D)28,0
答案:C - 以下选项中不属于 C 语言字符常量的是
A) ‘a’
B)’\n’
C) ‘\xah’
D)’\007’
答案:C
C语言基础选择题100道(附答案)03
最新推荐文章于 2025-03-23 17:05:26 发布