C语言习题2.docx
《C语言习题2.docx》由会员分享,可在线阅读,更多相关《C语言习题2.docx(9页珍藏版)》请在冰豆网上搜索。
C语言习题2
一,选择
1,若k,g均为int型变量,则下列语句的输出为(A)。
k=017;g=111;printf("%d\t",++k);printf("%x\n",g++);
A、166f
B、156f
C、1670
D、1571
2设有定义语句charc1=92,c2=92;,则以下表达式中值为零的是(C)
A、c1|c2
B、c1&c2
C、c1^c2
D、~c2
3,以下运算符中优先级最低的是(C)。
A、|
B、&
C、||
D、&&
4,下列程序段的输出结果为(A)。
floatk=0.8567;
printf("%06.1f%%",k*100);
A、0085.7%
B、.857
C、0085.6%
D、0085.6%%
5以下程序的输出结果是(C)
main()
{inta=2,b=5;
printf(“a=%%d,b=%%d\n”,a,b);
}
A、a=%2,b=%5
B、a=%%d,b=%%d
C、a=%d,b=%d
D、a=2,b=5
6,以下程序的运行结果是(B)
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf(“%d\n”,c);
}
A、0
B、2
C、1
D、3
7,以下不是无限循环的语句为(C)。
A、for(;;x++=i);
B、while
(1){x++;}
C、for(y=0,x=1;x>++y;x=i++)i=x;
D、for(i=10;;i--)sum+=i;
8,以下对一维整型数组a的正确说明是(B)。
A、intn;scanf("%d",&n);inta[n];
B、#defineSIZE10(换行)inta[SIZE];
C、inta(10);
D、intn=10,a[n];
9,下列语句中,不正确的是(C)。
A、staticchara[2]={'1'};
B、staticchara[2]={1,2};
C、staticchara[2]={'1','2','3'};
D、staticinta[2]={'1','2'};
10,在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(D)。
A、传递方式由用户指定
B、地址传递
C、由实参传给形参,再由形参传回实参
D、单向值传递
11,C语言执行程序的开始执行点是(B)。
A、程序中第一个函数
B、程序中的main函数
C、程序中第一条可以执行语言
D、包含文件中的第一个函数
12,若有定义:
intaa[8];则以下表达式中不能代表数组元aa[1]的
地址的是(D)。
A、&aa[0]+1
B、aa+1
C、&aa[1]
D、&aa[0]++
13,执行下列语句后的结果为(D)。
intx=3,y;
int*px=&x;
y=*px++;
A、x=3,y=4
B、x=3,y不知
C、x=4,y=4
D、x=3,y=3
14,当说明一个结构体变量时系统分配给它的内存是(A)。
A、各成员所需内存量的总和
B、成员中占内存量最大者所需的容量
C、结构中最后一个成员所需内存量
D、结构中第一个成员所需内存量
15,应用缓冲文件系统对文件进行读写操作,打开文件的函数名为(B)。
A、close
B、fopen
C、fclose
D、open
二,填空
1,以下程序运行后的输出结果是_b____。
main()
{charm;
m='B'+32;printf("%c\n",m);
}
2,以下程序的执行结果是___9__。
main()
{
intk=8;
switch(k)
{
case9:
k+=1;
case10:
k+=1;
case11:
k+=1;break;
default:
k+=1;
}
printf("%d\n",k);
}
3,dowhile循环结构初始条件为False时循环体被执行__1___次
4,若有以下数组a,数组元素:
a[0]~a[9],其值为941282107513该数组的元素中,数值最大的元素的下标是_2____.
5,C语言源程序的基本单位是__函数___.
6,与指针引用有关的两个运算符是*和__&___
7,结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体_类型____,再说明结构体变量
8,调用fopen函数打开一文本文件,在"使用方式"这一项中,以“追加”方式打开需填入_a/a+____.
9,已知a=13,b=6,a/b的十进制数值为__2___.
10,设w=5;w+=-2;则w的值为__3___.
三,【程序设计】
功能:
用函数求N个整数中能被5整除的最大的数,如存在,
则返回这个最大值,如果不存在则返回0。
voidTestFunc();
intfind(intarr[],intn)
{
intm=0;
/**********Begin**********/
inti;
for(i=0;iif(arr[i]%5==0&&arr[i]>m)
m=arr[i];
/**********End**********/
return(m);
}
#defineN10
#include"stdlib.h"
#include"stdio.h"
voidmain()
{
inta[N],i,k;
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{
printf("%5d",a[i]);
if((i+1)%5==0)printf("\n");
}
k=find(a,N);
if(k==0)
printf("0\n");
else
printf("themaxis:
%d\n",k);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
intn;
inti[5];
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%d",&i[n]);
}
o=find(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);]
四,【程序改错】【参考答案】
功能:
根据整型形参m,计算如下公式的值:
doubley=0;
y=1/2+1/8+1/18+...+1/2m*mwhile(i<=m)while(i#include"stdio.h"
doublefun(intm)
{
/**********ERROR**********/
doubley=0
doublex;
inti=1;
/**********ERROR**********/
while(i{
x=1.0/(2*i*i);
/**********ERROR**********/
y=+x;
i++;
}
return(y);
}
voidmain()
{
intn;
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));}
五,【程序填空】
功能:
产生并输出杨辉三角的前七行。
1
11
121
1331
14641
15101051
1615201561
注:
填空时,请使用下标法引用数组元素
#include
voidmain()
{
inta[7][7];
inti,j,k;
for(i=0;i<7;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<7;i++)
/**********FILL**********/
for(j=1;j<__=i___;j++)
/**********FILL**********/a[i][j]=_j
for(i=0;i<7;i++)
{
/**********FILL**********/for(j=0;j-1printf("\n");
}
}