C语言试题3.docx
《C语言试题3.docx》由会员分享,可在线阅读,更多相关《C语言试题3.docx(15页珍藏版)》请在冰豆网上搜索。
C语言试题3
《高级程序设计基础(C语言)》考试题三
一、选择题(共20题,每题2分)
1、以下选项中合法的用户标识符是()。
A)long B)_2Test C)3Dmax D)A.dat
2、以下程序的输出结果是()
main()
{
intx=11,y=11;
printf("%d%d\\n",x--,--y);
}
A)11,11 B)10,10 C)10,11 D)11,10
3、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()。
A)0 B)1 C)2 D)3
4、能正确表示“当x的值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()。
B)(x>=1)&&(x<=10)&&(x>=200)||(x<=210)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
5、若运行时给变量x输入12,则以下程序的运行结果是()。
main()
{ intx,y;
scanf(“%d”,&x);
y=x>12?
x+10:
x-12;
printf(“%d\n”,y);
}
A)0 B)22 C)12 D)10
6、以下程序的输出结果是()。
main()
{ intx=2,y=-1,z=2;
if(x if(y<0) z=0;
else z=z+1;
printf(“%d\n”,z);
}
A)3 B)2 C)1 D)0
7、下列程序的输出结果是()
main()
{
intx=100,a=10,b=20;
intv1=5,v2=0;
if(a
if(b!
=15)
if(!
v1)
x=1;
else if(v2)x=10;
x=-1;
printf(“%d”,x);
}
A)1 B) 10 C) -1 D) 100
8、设有程序段
int k=10;
while(k=0)
k=k—1;
则下面描述中正确的是()
A) while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
9、下面程序段的运行结果是()。
a=1;b=2;c=2;
while(a
{
t=a;
a=b;
b=t;
c--;
}
printf("%d,%d,%d",a,6,c);
A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1
10、以下对一维数组a的正确说明是()。
A)inta(10);
B)intn=10,a[n];
C)intn;scanf(“%d”,&n); inta[n];
D)#defineSIZE10
inta[SIZE];
11、以下程序的输出结果是()。
main()
{
inti,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k);
}
A)20 B)21 C)22 D)23
12、对下面程序段说法正确的是()。
for (t=1; t<=100;t++)
{
scanf("%d",&x);
if(x<0) continue;
printf("%3d",t);
}
A)当x<0时整个循环结束
B)x>=0时什么也不输出
C)printf函数永远也不执行
D)最多允许输出100个非负整数
13、下面是对s的初始化,其中不正确的是()。
(A)chars[5]={“abc”}; (B)chars[5]={‘a’,’b’,’c’};
(C)chars[5]=””; (D)chars[5]=”abcdef”;
14、以下程序的输出结果是()。
main()
{
inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A)258 B)741 C)852 D)369
15、在执行charstr[10]=“Ch\nina\0”;strlen(str)的结果是( )。
A)5 B)6 C)7 D)9
16、以下选项中,对指针变量p不正确的操作是()。
A)inta[6],*p; p=&a; B)inta[6],*p;p=a;
C)inta[6]; int*p=a=1000; D)inta[6]; int*p1,*p2=a; *p1=*p2;
17、下面语句中能正确进行字符串赋值操作的是()。
A)charstr[5]={“abcde”}; B)charstr[5]={‘a’,’b’,’c’,’d’,’e’}
C)char*str;str=”abcde”; D)char*str;scanf(“%s”,str);
18、对于C语言的函数,下列叙述中正确的是()。
A)函数的定义不能嵌套,但函数调用可以嵌套
B)函数的定义可以嵌套,但函数调用不能嵌套
C)函数的定义和调用都不能嵌套
D)函数的定义和调用都可以嵌套
19、以下程序的输出结果是()。
#include
main()
{
intk=4,m=1,p;
p=func(k,m);
printf(“%d”,p);
p=func(k,m);
printf(‘%d\n”,p);
}
func(inta,intb)
{
intm=0,i=2;
i+=m+1;
m=i+a+b;
returnm;
}
A)8,17 B)8,16 C)8,20 D)8,8
20、fopen()函数的mode取值”r”和”w”时,它们之间的差别是()。
A)”r”可向文件写入,”w”不可向文件写入
B)”r”不可向文件写入,”w”可向文件写入
C)”r”不可由文件读出,”w”可由文件读出
D)文件不存在时,”r”建立新文件,”w”出错
二、分析程序题(共10题,每题3分)
1、下面程序的运行结果是__________________。
#include
main()
{
inti,j,k;
i=3;
j=2;
printf("i++=%d\n",i++);
printf("++i=%d\n",++i);
}
2、下面程序的运行结果是x=__________________,y=__________________。
main()
{floatx=4.9;inty;
y=(int)x;
printf("x=%f,y=%d",x,y);}
3、设有程序片段:
switch(grade)
{ case‘A’:
printf(“85-100\n”);
case‘B’:
printf(“70-84\n”);
case‘C’:
printf(“60-69\n”);
case‘D’:
printf(“<60\n”);
default:
printf(“error!
\n”);
}
若grade的值为’C’,则输出结果是__________________。
4、以下程序的输出结果是__________________。
main()
{
intx=2,y=-1,z=2;
if(x if(y<0) z=0;
else z=z+1;
printf(“%d\n”,z);
}
5、以下程序段的输出结果是__________________。
int x=2,s=0;
while (x!
=0)
{ s=s+x;
x--;
}
printf("%d",s);
6、以下程序执行时输入LanguageProgramming<回车>的结果是__________________。
#include
main()
{
charstr[30];
scanf(“%s”,str);
printf(“str=%s\n”,str);
}
7、以下程序的执行结果是__________________。
#include
main()
{
charstr[]={“1a2b3c”};
inti;
for(i=0;str[i]!
=’\0’;i++)
if(str[i]>=’0’&&str[i]<=’9’)
printf(“%c”,str[i]);
printf(“\n”);
}
8、以下程序的执行结果是__________________
#include
structstudent{
charname[20];
intmath;
};
main(){
structstudents={"tom",90};
structstudent*p=&s;
printf("%s\t",p->name);
printf("%d\n",p->math);
}
9、以下程序的执行结果是__________________。
#include
intx=1;
main()
{
func(x);
printf(“x=%d\n”,x);
}
func(intx)
{
x=3;
}
10、有如下定义:
struct
{
intx;
char*y;
} tab[2]={{1,”ab”},{2,”cd”}},*p=tab;
则:
表达式*p->y的结果是__________________。
表达式*(++p)->y的结果是__________________。
三、编写程序题(共3题,每题10分)
1、编写输出以下图形的程序(要求行数从键盘输入)。
1
12
123
1234
12345
123456
……
2、从键盘输入8个整数保存到数组中,运用选择法按从大到小排序后输出数组。
3、试自定义函数myExchange(),用于交换两个整型数据。
第三套考试题参考答案
一、 选择题
1、B
2、D
3、C
4、C
5、A
6、B
7、D
8、C
9、A
10、D
11、B
12、D
13、D
14、C
15、B
16、D
17、B
18、A
19、D
20、B
二、程序分析题
1、i++=3++i=5
2、x=4.90000,y=4
3、60-69
<60
Error!
4、2
5、3
6、str=Language
7、123
8、tom90
9、x=3
10、abcd
三、编程题
1、
#include
main()
{
inti,j,n;
printf("inputn:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf("%d",j);
printf("\n");
}
}
2
#include
main()
{
inta[8],i,j,max_id,tmp;
printf("input8integers:
");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
for(i=0;i<8;i++)
{
max_id=i;
for(j=i+1;j<8;j++)
{
if(a[max_id] max_id=j;
}
tmp=a[max_id];
a[max_id]=a[i];
a[i]=tmp;
}
for(i=0;i<8;i++)
printf("%4d",a[i]);
}
3
#include
voidmyExchange(int*p1,int*p2)
{
inttmp;
tmp=*p1;
*p1=*p2;
*p2=tmp;
}
main()
{
inta,b;
printf("inputaandb:
");
scanf("%d%d",&a,&b);
myExchange(&a,&b);
printf("after:
a=%d,b=%d",a,b);
}