k:
c
c:
a);
}
A)4B)3
C)2D)1
10.在C语言中,下述正确的是(D)
A)do-while语句构成的循环不能用其他语句构成的循环来代替。
B)do-while语句构成的循环只能用break语句退出。
C)do-while语句构成的循环,在while后的表达式为非0时结束循环。
D)do-while语句构成的循环,在while后的表达式为0时结束循环。
11.对于下述while循环语句,说法正确的是(B)
inti=1;
while(i++)
printf(“***”);
A)判断循环结束的条件非法B)是无限循环
C)是有限循环D)只循环一次
12.下面程序的输出结果(B)
#include
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)
{b+=3;continue;}
b-=5;
}
printf(“%d\n”,a);
}
A)7B)8C)9D)10
13.以下不能正确进行字符串赋初值的语句是(C)
A)charstr[5]=“good!
”;
B)charstr[]=“good!
”;
C)char*str=“good!
”;
D)charstr[5]={‘g’,’o’,’o’,’d’,’\0’};
14.给出以下定义:
charx[]=“abcdefg”;
chary[]={'a','b','c','d','e','f','g'};
则以下叙述正确的是(C)
A)数组x和数组y等价B)数组x和数组y长度相等
C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度
15.下面对函数嵌套的叙述中,正确的是(B)
A)函数定义可以嵌套,但函数调用不能嵌套
B)函数定义不可以嵌套,但函数调用可以嵌套
C)函数定义和函数调用均不能嵌套
D)函数定义和函数调用均可以嵌套
16.调用一个函数,此函数中没有return语句,下列说法正确的是:
该函数(A)
A)返回一个不确定的值
B)返回若干个系统默认值
C)能返回一个用户所希望的函数值
D)没有返回值
17.以下有关宏替换的叙述不正确的是(A)
A)宏替换不占用运行时间
B)宏名无类型
C)宏替换只是字符替换
D)宏名必须用大写字母表示
18.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是(C)
A)a,point,*&aB)&*a,&a,*point
C)&a,&*point,pointD)*&point,*point,&a
19.设以下程序的输出结果是(C)。
#defineSQR(x)x*x
main()
{inta=16,k=2,m=1;
a=(k+a)/SQR(k+m);
printf(“%d\n”,a);
}
A)16B)9C)12D)1
20.下面程序段运行的结果是(C)
chara[]=“language”,*p;
p=a;
while(*p!
='u')
{
printf(“%c”,*p-32);
p++;
}
A)LANGUAGEB)languageC)LANGD)langUAGE
21.执行下面的程序段后,变量k中的值为(D)
intk=3,s[2];
s[0]=k;k=s[1]*10;
A)30B)20C)10D)不定值
22.以下能正确定义二维数组的是(C)。
A)inta[][3];B)inta[][3]={};
C)inta[][3]={2*3};D)inta[2][3]={{1},{2},{3}};
23.有以下程序
#include
main()
{char*p=“abcde\0fghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是(D)
A)15B)12C)6D)5
24.下列程序的输出结果是(C)
#include
structabc
{inta,b,c;};
main()
{structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b%s[0].c;
printf(“%d\n”,t);
}
A)7B)4C)3D)2
25.当执行下面程序输入:
ABC时,输出的结果是(A)。
#include“stdio.h”
#include“string.h”
main()
{charss[10]=“12345”;
strcat(ss,“6789”);
gets(ss);
printf(“%s\n”,ss);
}
A)ABCB)ABC9C)123456ABCD)ABC456789
二.填空题(本题总分20分,每空2分)
1.ASCII代码中,字母A的序号是65,以下程序的输出结果是【6589】。
#include
main()
{charc1=’A’,c2=’Y’;
printf(“%d,%d\n”,c1,c2);
}
2.若x为int型变量,则执行以下语句后x的值是【2】。
x=7;x+=x-=x+x;
3.有inta=3,b=4,c=5;则以下表达式的值是【3】。
!
(a+b)+c-1&&b+c/2
若二维数组a有m列,则计算任一元素a[i][j]在数组中的位置的公式是【i*m+j
】。
4.C语言提供了三种预处理语句,他们是宏定义,【文件包含】和条件编译。
5.以下程序的功能是用选择法对数组a中的整数由小到大进行排序。
voidsort(intb[],intn)
{inti,j,t;
for(i=0;ifor(j=i;jif(b[i]>b[j])
{t=b[i];;b[j]=t;}
}
main()
{inta[]={5,8,6,2,7,4,1,3};
inti;
sort(a,8);
for(i=0;i<8;i++)
printf(“﹪5d”,a[i]);
printf(“\n”);
}
6.以下程序的功能是先为数组a输入数据,再为x输入一个数据,在数组a中找出第一个与x相等的元素并将其下标输出,若不存在这样的元素,则输出“Notfound!
”标志。
main()
{inti,x,a[10];
for(i=0;i<10;i++)
scanf(“﹪d”,【8】);
scanf(“﹪d”,&x);
printf(“﹪d”,x);
for(i=0;i<10;i++)
if(【9】)break;
if(【10】)printf(“position:
﹪d\n”,i);
elseprintf(“Notfound!
\n”,x);
}
三.分析程序,写出运行后的结果。
(本题总分10分,每小题5分)
1、下述程序的输出结果是_____s=13_______________。
#include
main()
{ints=10,k;
for(k=7;k>4;k--)
{switch(k)
{case1:
case4:
case7:
s++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;break;
}
}
printf(“s=%d”,s);
}
2、下述程序的输出结果是__________4,5__________。
voidswap(int*a,int*b)
{int*tmp;
tmp=a;
a=b;
b=tmp;
*tmp=4;
}
main()
{inta=3,b=5;
swap(&a,&b);
printf(“%d,%d”,a,b);
}
四、编程题(本题总分20分,每小题10分)
1、编程从键盘输入一个5行5列的二维数组数据(设数值各不相等),并找出数组中的最大值及其所在的行下标和列下标。
要求格式化打印输出,例如最大值形式:
Max=最大值,row=行标,col=列标。
#include
Voidmain(){
IntI,j,Max,a[5][5],row,col;
Max=0;
For(i=1;i<=5;i++){
For(j=1;j<=5;i++){
Scanf(“%d”,&a[i][j]);
If(a[i][j]>max){
max=a[i][j];
row=I;
col=j;
}
}
}
Printf(“MAX=%D,ROW=%D,COL=%D”,MAX,ROW,COL);
}
2.主函数已有变量定义语句doublea=2.8,intn=4,以及函数调用语句mypow(a,n)用以求a的n次方。
请编写mypow函数。
doublemypow(doublex,inty)
{
intn=0;
doubleans=1.00;
if(y==0)
return1;//注意为0次方时的判断。
else
{
while(n{
ans*=x;
n++;
}
returnans;
}
}