一.选择题
第1题题号:3141
以下程序的执行结果是_______.
main()
{ int num = 0;
while( num <= 2 ) { num++;
printf( "%d,",num ); } }
A:0,1,2
B:1,2,
C:1,2,3,
D:1,2,3,4,
答案:C
第2题题号:126
下列程序的输出结果是()。
main()
{int a=011;
printf("%d\n",++a);
}
A:12
B:11
C:10
D:9
答案:C
第3题题号:611
以下for循环的执行次数是
for(x=0,y=0;(y=123)&&(x<4);x++);()。
A:是无限循环
B:循环次数不定
C:4次
D:3次
答案:C
第4题题号:153
在C语言中,if语句后的一对原括号中,用以决定分支的流程的表
达式()。
A:只能用逻辑表达式
B:只能用关系表达式
C:只能用逻辑表达式或关系表达式
D:可用任意表达式
答案:D
第5题题号:654
以下不能正确定义二维数组的选项是()。
A:int a[2][2]={{1},{2}};
B:int a[][2]={1,2,3,4};
C:int a[2][2]={{1},2,3};
D:int a[2][]={{1,2},{3,4}}; 答案:D
第6题题号:116
下列语句的结果是()。
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
答案:D
第7题题号:639
以下能正确定义数组并正确赋初值
的语句是()。
A:int N=5,b[N][N];
B:int a[1][2]={{1},{3}};
C:int c[2][]={{1,2},{3,4}};
D:int d[3][2]={{1,2},{34}};
答案:D
第8题题号:677
若已定义的函数有返回值,则以下关
于该函数调用的叙述中错误的是()。
A:函数调用可以作为独立的语句存
在
B:函数调用可以作为一个函数的实
参
C:函数调用可以出现在表达式中
D:函数调用可以作为一个函数的形
参
答案:D
第9题题号:150
经过以下语句定义后,表达式
z+=x>y?++x:++y的值为()。
int x=1,y=2,z=3;
A:2
B:3
C:6
D:5
答案:C
第10题题号:503
以下语句中,不能实现回车换行的是
()。
A:printf("\n");
B:putchar("\n");
C:fprintf(stdout,"\n");
D:fwrite("\n",1,1,stdout);
答案:B
第11题题号:132
若ch为char型变量,k为int型变量(已知字
符a的ASCII十进制代码为97),
则以下程序段的执行结果是()。
ch='a'; k=12; printf("%x,%o,",ch,ch,k);
printf("k=%%d\n",k);
A:因变量类型与格式描述符的类型不匹配,输出
无定值
B:输出项与格式描述符个数不符,输出为零值或
不定值
C:61,141,k=%d
D:61,141,k=%12
答案:C
第12题题号:650
若有说明: int a[][4]={0,0};则下面不正确的叙
述是()。
A:数组a的每个元素都可得到初值0
B:二维数组a的第一维大小为1
C:因为二维数组a中第二维大小的值除经初值个
数的商为1,故数组a的行数为1
D:有元素a[0][0]和a[0][1]可得到初值0,其余
元素均得不到初值0
答案:D
第13题题号:630
逻辑运算符两侧运算对象的数据类型()。
A:只能是0或1
B:只能是0或非0正数
C:只能是整型或字符型数据
D:可以是任何类型的数据
答案:D
第14题题号:632
以下叙述正确的是()。
A:do-while语句构成的循环不能用其它语句构
成的循环来代替.
B:do-while语句构成的循环只能用break语句退
出.
C:用do-while语句构成的循环,在while后的表
达式为非零时结束循环.
D:用do-while语句构成的循环,在while后的表
达式为零时结束循环
答案:D
第15题题号:625
已知x=43,ch='A',y=0;则表达式
(x>=y&&ch<'B'&&!y)的值是()。
A:0
B:语法错
C:1
D:"假"
答案:C
第16题题号:647
以下能对二维数组a进行正确初始化的语句是()。
A:int a[2][]={{1,0,1},{5,2,3}};
B:int a[][3]={{1,2,3},{4,5,6}};
C:int a[2][4]={{1,2,3},{4,5},{6}};
D:int a[][3]={{1,0,1}{},{1,1}};
答案:B
第17题题号:573
C语言中运算对象必须是整型的运算符是()。A:%=
B:/
C:=
D:〈=
答案:A
第18题题号:209
若有以下程序段:int a=3,b=4;
a=a^b;b=b^a;a=a^b;则执行以上
语句后,a和b的值分别是()。
A:a=3,b=4
B:a=4,b=3
C:a=4,b=4
D:a=3,b=3
答案:B
第19题题号:579
在C语言中,char型数据在内存中的存储形式是()。
A:补码
B:反码
C:原码
D:ASCII码
答案:D
第20题题号:104
以下运算符中,优先级最高的运算符是()。A:||
B:%
C:!
D:==
答案:C
第21题题号:604
下面不正确的字符串常量是()。
A:'abc'
B:"12'12"
C:"0"
D:" " 答案:A
第22题题号:175
C语言程序中,当调用函数时()。
A:实参和虚参各占一个独立的存储
单元
B:实参和虚参可以共用存储单元
C:可以由用户指定是否共用存储单
元
D:计算机系统自动确定是否共用存
储单元
答案:A
第23题题号:613
下面有关 for 循环的正确描述是
()。
A:for 循环只能用于循环次数已经
确定的情况
B:for 循环是先执行循环循环体语
句,后判断表达式
C:在 for 循环中,不能用 break 语
句跳出循环体
D:for 循环的循环体语句中,可以包
含多条语句,但必须用花括号括起来
答案:D
第24题题号:629
为了避免在嵌套的条件语句
if-else 中产生二义性,C语言规
定:
else子句总是与()配对。
A:缩排位置相同的if
B:其之前最近的if
C:其之后最近的if
D:同一行上的if
答案:B
第25题题号:641
若有说明:int a[10];则对a数组元
素的正确引用是()。
A:a[10]
B:a[3,5]
C:a(5)
D:a[10-10]
答案:D
第26题题号:601
下面四个选项中,均是不合法的浮点
数的选项是()。
A:160. 0.12 e3
B:123 2e4.2 .e5
C:-.18 123e4 0.0
D:-e3 .234 1e3
答案:B
第27题题号:102
以下数据中,不正确的数值或字符常量是()。
A:c
B:66
C:0xaa
D:50
答案:A
第28题题号:612
语句while(!E);中的表达式!E等价于()。
A:E==0
B:E!=1
C:E!=0
D:E==1
答案:A
第29题题号:143
C 语言中以下几种运算符的优先次序()的排列
是正确的。
A:由高到低为:!,&&,||,算术运算符,赋值运算符
B:由高到低为:!,算术运算符,关系运算符,&&,||,
赋值运算符
C:由高到低为:算术运算符,关系运算符,赋值运
算符,!,&&,||
D:由高到低为:算术运算符,关系运算符,!,&&,||,
赋值运算符
答案:B
第30题题号:709
若定义:int a=511,*b=&a;, 则
printf("%d\n",*b);的输出结果为()。
A:无确定值
B:a的地址
C:512
D:511
答案:D
第31题题号:664
以下正确的函数定义形式是()。
A:double fun(int x,int y)
B:double fun(int x;int y)
C:double fun(int x,int y);
D:double fun(int x,y);
答案:A
第32题题号:606
已定义ch为字符型变量,以下赋值语句中错误的
是()。
A:ch='\';
B:ch=62+3;
C:ch=NULL;
D:ch='\xaa';
答案:A
第33题题号:3561
以下程序中,while循环的循环次数是______ main()
{
int i=0;
while(i<10)
{
if(i<1) continue;
if(i==5) break;
i++;
}
}
A:1
B:4
C:6
D:死循环,不能确定次数
答案:D
第34题题号:657
以下不能正确进行字符串赋初值的语句是()。A:char str[5]="good!";
B:char str[]="good!";
C:char *str="good!";
D:char str[5]={'g','o','o','d'};
答案:A
第35题题号:614
若i为整型变量,则以下循环执行次数是()。for(i=2;i==0;) printf("%d",i--);
A:无限次
B:0次
C:1次
D:2次
答案:B
第36题题号:707
若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。
A:p1=&m;p2=&p1
B:p1=&m;p2=&n;*p1=*p2;
C:p1=&m;p2=p1;
D:p1=&m;*p2=*p1;
答案:C
第37题题号:113
执行下列语句后变量x和y的值是()。
y=10;x=y++;
A:x=10,y=10
B:x=11,y=11
C:x=10,y=11 D:x=11,y=10
答案:C
第38题题号:646
若有说明 int a[3][4];则a数组元
素的非法引用是()。
A:a[0][2*1]
B:a[1][3]
C:a[4-2][0]
D:a[0][4]
答案:D
第39题题号:644
以下对一维整型数组a的正确说明
是()。
A:int a(10);
B:int n=10,a[n];
C:int n; scanf("%d",&n); int
a[n];
D:#define SIZE 10 (换行) int
a[SIZE];
答案:D
第40题题号:576
设以下变量均为int类型,则值不等
于7的表达式是()。
A:(x=y=6,x+y,x+1)
B:(x=y=6,x+y,y+1)
C:(x=6,x+1,y=6,x+y)
D:(y=6,y+1,x=y,x+1)
答案:C
第41题题号:155
假定所有变量均已正确定义,下列程
序段运行后x的值是()。
k1=1;
k2=2;
k3=3;
x=15;
if(!k1) x--;
else if(k2) x=4;
else x=3;
A:14
B:4
C:15
D:3
答案:B
第42题题号:649
若有说明: int a[3][4]={0};则下面
正确的叙述是()。
A:只有元素a[0][0]可得到初值0
B:此说明语句不正确
C:数组a中各元素都可得到初值,但其值不一定
为0
D:数组a中每个元素均可得到初值0
答案:D
第43题题号:136
下列程序的输出结果为()。
main()
{int m=7,n=4;
float a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}
A:27.000000
B:27.500000
C:28.000000
D:28.500000
答案:A
第44题题号:513
int a[10];合法的数组元素的最小下标值为()。
A:10
B:9
C:1
D:0
答案:D
第45题题号:634
以下不正确的定义语句是()。
A:double x[5]={2.0,4.0,6.0,8.0,10.0};
B:int y[5]={0,1,3,5,7,9};
C:char c1[]={'1','2','3','4','5'};
D:char c2[]={'\x10','\xa','\x8'};
答案:B
第46题题号:436
设j和k都是int类型,则下面的for循环语句
()。
for(j=0,k=0;j<=9&&k!=876;j++)
scanf("%d",&k);
A:最多执行10次
B:最多执行9次
C:是无限循环
D:循环体一次也不执行
答案:A
第47题题号:627
判断char型变量cl是否为小写字母的正确表达
式是()。
A:'a'<=cl<='z'
B:(cl>=a)&&(cl<=z)
C:('a'>=cl)||('z'<=cl)
D:(cl>='a')&&(cl<='z')
答案:D
第48题题号:508
int a=1,b=2,c=3;
if(a>c)b=a;a=c;c=b;则c的值为()。
A:1
B:2
C:3
D:不一定
答案:B
第49题题号:580
设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的
数据类型为()。
A:int
B:float
C:double
D:不确定
答案:C
第50题题号:3566
有以下程序段
int n=0,p;
do
{
scanf("%d",&p);
n++;
}while(p!=12345&&n<3);
此处do-while循环的结束条件是______。
A:p的值不等于12345并且n的值小于3
B:p的值等于12345并且n的值大于等于3
C:p的值不等于12345或者n的值小于3
D:p的值等于12345或者n的值大于等于3
答案:D
二.程序填空
1.484.)./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:识别输入的字符串,每个单词输出一行------------------------------------------------------*/
#include
#include
void main()
{
int c;
int inspace;
/***********SPACE***********/
________________;
while((c = getchar()) != '\n')
{
if(c == ' ' || c == '\t' || c == '\n')
{
/***********SPACE***********/
if(________________)
{
inspace = 1;
putchar('\n');
}
}
else
{
inspace = 0;
/***********SPACE***********/
________________;
}
}
}
答案:
【1】inspace = 0
【2】inspace == 0
【3】putchar(c)
2.424)./*---------------------------------
----------------------
【程序填空】
----------------------------------------------
-----------
功能:输出结果为:
* * * * *
* * * * *
* * * * *
* * * * *
----------------------------------------------
--------*/
main()
{
/***********SPACE***********/
static char
________________={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for(i=0;i<5;i++)
{
printf("\n");
/***********SPACE***********/
for(j=1;j<=3*i;j++)
printf("%1c",________________);
/***********SPACE***********/
for(k=0;k<________________;k++)
printf("%3c",a[k]);
}
printf("\n");;
}
答案:
【1】a[5] 或a[]
【2】space 或' '
【3】5 或=4
3.415)./*-------------------------------------------------
------
【程序填空】
---------------------------------------------------------
功能:数组名作为函数参数,求平均成绩。
------------------------------------------------------*/
float aver(float a[ ]) /*定义求平均
值函数,形参为一浮点型数组名*/
{
int i;
float av,s=a[0];
for(i=1;i<5;i++)
/***********SPACE***********/
s+=________________[i];
av=s/5;
/***********SPACE***********/
return ________________;
}
void main()
{
float sco[5],av;
int i;
printf("\ninput 5 scores:\n");
for(i=0;i<5;i++)
/***********SPACE***********/
scanf("%f",________________);
/***********SPACE***********/
av=aver(________________);
printf("average score is %5.2f\n",av);
getch();
}
答案:
【1】a
【2】av 或(av)
【3】&sco[i] 或sco+i
【4】sco
4.423)./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:考查字符串数组的应用。输出26个英文字母。
-------------------------------------------------------*/
#include
void main (void)
{
char string[256];
int i;
/***********SPACE***********/
for (i = 0; i < 26; ________________)
/***********SPACE***********/
string[i] = ________________;
string[i] = '\0';
/***********SPACE***********/
printf ("the arrary contains %s\n",________________);
}
答案:
【1】i++ 或++i 或i=i+1 或i+=1
【2】'A' + i 或i+'A' 或65 + i 或i+65
【3】string
5.429)./*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:从读入的整数数据中,统计大于零的整数个数和小于零的
整数个数。用输入零来结束输入,程序中用变量i统计大于
零的整数个数,用变量j统计小于零的整数个数。
-------------------------------------------------------*/
#include
main()
{
int k,n,i,j;
printf("Enter INT number,with 0 to end\n");
i=j=0;
scanf("%d",&n);
while(n!=0)
{
/***********SPACE***********/
if(n>0)i=________________;
/***********SPACE***********/
if(n<0)j=________________;
/***********SPACE***********/
scanf("%d",________________);
}
printf("i=%4d\n",i,j);
}
答案:
【1】i + 1
【2】j + 1
【3】&n
三.程序改错
第1题题号:249
/*-----------------------------
-------------------------
【程序改错】
-------------------------------
-------------------------
功能:有一数组内放10个整数,要求
找出最小数和它的下标,然后
把它和数组中最前面的元素
即第一个数对换位置.
-------------------------------
-----------------------*/
#include
main( )
{
int i,a[10],min,k=0;
printf("\n please input array
10 elements\n");
for(i=0;i<10;i++)
/***********FOUND***********/
scanf("%d", a[i]);
for(i=0;i<10;i++)
printf("%d",a[i]);
min=a[0];
/***********FOUND***********/
for(i=3;i<10;i++)
/***********FOUND***********/
if(a[i]>min)
{
min=a[i];
k=i;
}
/***********FOUND***********/
a[k]=a[i];
a[0]=min;
printf("\n after eschange:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\nk=%d\nmin=%d\n",k,min);
}
答案:
1). scanf("%d",&a[i]);
2). for(i=1;i<10;i++) 或
for(i=0;i<10;i++) 或 for(i=1;i<=9;i++) 或
for(i=0;i<=9;i++)
3). if(a[i] 4). a[k]=a[0]; 第2题题号:285 /*---------------------------------------- -------------- 【程序改错】 ------------------------------------------ -------------- 功能:根据整型形参m,计算如下公式的值: y=1+1/3+1/5+1/7+...+1/(2m-3) ------------------------------------------ ------------*/ #include double fun(int m) { /**********FOUND**********/ double y=1 int i; /**********FOUND**********/ for(i=1; i /**********FOUND**********/ y+=1.0/(2i-3); return(y); } main() { int n; printf("Enter n: "); scanf("%d", &n); printf("\nThe result is %1f\n", fun(n)); } 答案: 1). double y=1; 2). for(i=1; i<=m; i++) 3). y+=1.0/(2*i-3); 第3题题号:16 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:实现交换两个整数的值。 例如:给a和b分别输入3和6 ,输出为a=6 b=3 ------------------------------------------------------*/ #include /**********FOUND**********/ void fun (int a, b) { int t; /**********FOUND**********/ t=a; /**********FOUND**********/ a=b; /**********FOUND**********/ b=t; } main() { int a,b; printf("enter a,b:");scanf("%d%d",&a,&b); fun(&a,&b); printf("a=%d b=%d\n",a,b); } 答案: 1). void fun (int *a,int *b) 或 fun (int *a,int *b) 2). t=*a; 3). *a=*b; 4). *b=t; 第4题题号:399 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。------------------------------------------------------*/ #include #define N 20 int fun(int m) { /**********FOUND**********/ int s=0,i; for(i=1;i /**********FOUND**********/ if(i%m=0) /**********FOUND**********/ s=*i; return s; } main() { int sum; sum=fun(5); printf("%d以内所有%d的倍数之 积为: %d\n",N,5,sum); } 答案: 1). int s=1 , i ; 2). if(i%m==0) 3). s=s*i; 或 s=i*s; 或 s*=i; 第5题题号:31 /*----------------------------- ------------------------- 【程序改错】 ------------------------------- ------------------------- 功能:从键盘输入十个学生的成绩, 统计最高分,最低分和平均分。 max代表最高分,min代表最 低分,avg代表平均分。 ------------------------------- -----------------------*/ #include main( ) { int i; /***********FOUND***********/ float a[8],min,max,avg; printf("input 10 score:"); for(i=0;i<=9;i++) { printf("input a score of student:"); /***********FOUND***********/ scanf("%f",a); } /***********FOUND***********/ max=min=avg=a[1]; for(i=1;i<=9;i++) { /***********FOUND***********/ if(min min=a[i];