C语言四套题附答案Word下载.docx
《C语言四套题附答案Word下载.docx》由会员分享,可在线阅读,更多相关《C语言四套题附答案Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
if(‘A’<
=c1&
&
c1<
=’Z’)运行结果:
67,D
printf(“%d,%c”,c1,c1+1);
elseprintf(“%c”,c1);
[程序3]
viodmain()
{inta=0,n=5;
1,5,4,3,2,0
for(;
;
)
{a++;
n--;
printf(“%d,”,a);
a=n;
if(n==0)break;
printf(“%d”,a);
[程序4]
main()
{inti,j;
1,2,4,8,16,32,64,128,256,512
staticinta[10]={1,1,1,1,1,1,1,1,1,1};
for(i=0;
i<
10;
i++)
for(j=0;
j<
i;
j++)
a[i]=a[i]+a[j];
printf(“%d,”,a[i]);
[程序5]
intk=2;
f(intm)运行结果:
6,8
{m+=k;
k+=m;
5,9
printf(“%d,%d\n”,m,k++);
{inti=4;
for(i++);
printf(“%d,%d\n”,i,k);
[程序6]
{staticinta[10],i;
13579
a[i]=i+1;
i=i+2)
printf(“%d”,*(a+i));
三、阅读分析下列程序,在处填上适当的内容使程序(或函数)完整(共21分,每空3分)
(一)
以下程序输出所有大写字母和其对应的ASCII码值。
voidmain()
{intch;
for(ch=’A’;
ch<
=’Z’;
ch++)
printf(“字母%c的ASCII码值是:
%d\n”,ch,1);
答案:
ch
(二)以下函数的功能是将一个字符串S的内容颠倒过来。
voidreserve
(2)答案:
chars[]
{inti,j,k;
for(i=0,j=strlen(s)-1;
3;
i++,j--)答案:
i<
j
{k=s[i];
s[i]=s[j];
s[j]=k;
}
(三)由键盘输入三个数a,b,c,计算以这三个数为边长的三角形面积。
math.h>
{floata,b,c,s,s1;
scanf(“%f%f%f”,4);
&
a,&
b,&
c
if((a+b)>
c&
(a+c)>
b&
(b+c)>
a)
{s=(a+b+c)/2;
s1=s*(s-a)*(s-b)*(s-c);
s=5;
sqrt(s1)
printf(“\n三角形面积为:
%f\n”,s);
else
printf(“\n不是三角!
\n”);
(四)从键盘输入一个字符串,把它输出到文件中,文件名由键盘输入。
{FILE*fp;
charch,*fn;
scanf(“%s”,fn);
if((fp=fopen(fn,6))==NULL)答案:
“w”
{printf(“打开文件出错\n”);
exit
(1);
while((ch=getchar())!
=EOF)
{fputc(7);
ch,fp
putchar(ch);
fclose(fp);
四、编程题(共21分)
1.从键盘输入3个整数,输出其中最大数。
(5分)
{inti=0,x,mx=-32768;
while(i++<
3)
{scanf(“%d”,&
x);
if(x>
mx)mx=x;
printf(“\n%d\n”,mx);
2.编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。
uf(char*s)
{inti;
i=strlen(s);
if(i==0)return;
if(s[0]>
=’a’&
s[0]<
=’z’)
s[0]+=’A’-‘a’;
if(s[i-1]>
s[i-1]<
=‘z’)
s[i-1]+=’A’–‘a’;
{chars[]=”asdfgh”;
uf(s);
printf(“\n%s\n”,s);
3.从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。
#include<
main()
{
floata[10],ave=0;
inti;
scanf(“%f”,&
a[i]);
ave+=a[i];
ave/=10;
if(a[i]<
ave)
printf(“%f\t”,a[i]);
}
习题二
(一)正确的C语言自定义标识符是。
A)file_bakB)abc(10)C)continueD)class+3
(二)设intx=8,y,z;
执行y=z=x++;
x=y==z后,变量x的值是。
A)0B)1C)8D)9
(三)字符串“w\x53\\\np\103q”的长度是。
A)7B)9C)15D)16
(四)设inta=9,b=8,c=7,x=1;
则执行语句
if(a>
7)if(b>
8)if(c>
9)x=2;
elsex=3;
后x的值是。
A)0B)2C)1D)3
(五)有如下程序
main()
{intx=23;
do{printf(“%d”,x--);
while(!
x);
}
该程序的执行结果是。
A)321B)23
C)不输出任何内容D)陷入死循环
(六)定义一个具有8个元素的整型数组,应使用语句。
A)inta[8];
B)inta[2,4];
C)inta[];
D)int*a[8];
(七)设intx[]={4,3,2,1},q,*p=&
x[1];
q=(*--p)++后,变量q的值为。
A)4B)3C)2D)1
(八)函数调用时,下列说法中不正确的是。
实际参数和形式参数可以同名
若用值传递方式,则形式参数
主调函数和被调函数可以不在同一个文件中
函数间传递数据可以使用全局变量
(九)下列数据类型中不属于构造类型的是。
A)数组型B)结构型C)共用型D)枚举型
(十)存储整型数据-7856时,在二进制文件和文本文件中占用的字节数分别是。
A)3,2B)2,5C)5,5D)5,2
二、阅读下列程序,写出运行结果(共20分,每题4分)
【程序1】
#include<
main()
{intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
b++;
printf(“a=%d,b=%d\n”,a,b);
}
运行结果:
【程序2】
space(intm)
{while(m--)printf(“%c”,32);
{inti,j;
printf(“\n”);
for(i=5;
i>
=1;
i--)
{
space(i);
printf(“*”);
for(j=3;
j>
=2*(i/5)+2;
j--)
{
space(4-i);
printf(“*”);
}
printf(“\n”);
}
运行结果:
【程序3】
longff(intn)
{if(n>
3)return(ff(n-1)+ff(n-2));
elsereturn(3);
main()
{printf(“%d\n”,ff(4));
【程序4】
{inti,a[5];
for(i=0;
5;
i++)
a[i]=9*(i-2+4*(i>
2))%5;
for(i=4;
=0;
printf(“%3d”,a[i]);
【程序5】
unionpw
{inti;
charch[2]
}a;
{
a.ch[0]=13;
a.ch[1]=0;
printf(“%d\n”,a.i);
三、阅读下列程序,在处填上适当的内容使程序(或函数)完整。
(共20分,每空2分)
(一)下面程序用于计算n!
的值。
{
inti,s,n;
s=1;
printf(“entern:
”);
scanf(“%d”,&
n);
for(i=1;
=n;
(1);
printf(“s=%d”,s);
}
(二)下面函数pi()的功能是根据以下公式求π值(直到最后一项小于10-5为止)
doublepi()
doubles=0.0,t=1.0;
intn;
for
(2);
t>
=1e-5;
n++)
{
s+=t;
t=3;
return(2.0*4);
(三)从键盘上输入一行字符(不多于40个,以会车换行符作为输入结束标记),将其中的大写字母该为小写字母,其它字符不变,然后逆向输出。
{chara[40];
intn=0;
do{scanf(“%c”,&
a[n]);
if(5)
a[n]+=32;
n++;
}while(6!
=’\n’);
n=n-2;
while(n>
=0)
printf(“%c”,a[n--]);
(四)从终端读入的文本(用@作为文本结束标志)复制到一个名字C.DAT的新文件中。
FILE*fp;
{charch;
if((fp=7)==NULL)exit(0);
while((ch=getchar())!
=’@’)
fpute(8);
fclose(fp);
(五)输入10个整数存入一维数组,从中查找某个整数(该数从键盘上读取),查到则输出其是第几个数,查不到则输出“NotFind!
”。
{inta[10],*p=a,x,n,flag=0;
for(;
p<
a+10;
p++)scanf(“%d”,p);
scanf(“%d”,&
for(n=1,p=a;
9;
p++,n++)
if(10)
{flag=1;
break;
if(!
flag)printf(“NotFind!
\n”);
elseprintf(“%d\n”,n);
四、编程题(共20分)
1、按下列公式s(n)=12+22+......+n2编写计算并输出s值,其中的n值由键盘输入。
(7分)
2、编写一程序,从键盘输入10个实数,计算并输出算术平均值。
3、求两个整数m和n最大公约数。
(6分)
习题二参考答案
一、语言基础
(一)单项选择题
1.A
2.B3.A
4.C5.B
6.A
7.A8.B
9.D10.B
(二)运行程序
【程序1】
a=1,b=1
【程序2】*
***
***
***
【程序3】6
【程序4】400-4-3
【程序5】13
(三)填空
s=s*1
n=1
n*t/(2*n+1)
s
(’A’<
=a[n])&
(a[n]<
=’Z’)
a[n-1]
a+10
*p==x
fopen(”c.dat”,”w”)
ch,fp
(四)编程
{floata();
intn;
printf(“s(%d)=%d\n”,n,s(n));
floats(intn)
{floats=0.0;
if(n==1)return(1.0);
elsereturn(s(n-1)+n*n);
{inti;
floatave=0,a[10];
scanf(“%f”,&
i++)ave+=a[i];
printf(“%10.4f\n”,ave/10);
{intm,n,a,r;
scanf(“%d,%d”,&
m,&
a=m,b=n;
do{r=a%b;
a=b;
b=r;
}while(r!
=0);
printf(“%d,%dis%d\n”,m,n,a);
习题三
一、语言基础(共20分,每题2分)
若a为float类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0
的值为4.68。
(二)设有intx=11,y=10;
则以下表达式的值为10。
x-->
y?
10:
11>
y++?
’a’:
’z’
(三)若所有变量都已正确定义为int型则执行下列程序段后x的值为79。
x=80;
a=10b=16;
y=9;
z=0;
if(a<
b)
if(b!
=15)
if(!
y)x=81;
elseif(!
z)x=79;
(四)i,j为int型的变量,则下面程序中的循环体的执行次数为5。
i=1;
j=0;
while(i+j<
=10)
{if(i>
jj=j+2);
elsei=i+2;
(五)若有数组a[10],类型为int型,元素及值如下所示:
数组元素:
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
元素中的值:
9483267015
则*(a+a[9])的值为6。
(六)以下函数调用语句中实参的个数为3.
Sub((x1,x2),(x3,x4,x5),x6)
(七)若有以下函数定义:
int(*hs)()
……/*函数体*/
则函数hs返回的值是整形。
(八)某C编译程序规定,int型数据存储占2个字节,float型数据存储占4个字节,char型数据存储占1个字节,现有记录描述如下:
structstu
union
{
charbj[5];
intbh[2];
}class;
charxm[8];
floatcj;
}xs;
则sizseof(xs)的值为17。
(九)设有以下定义:
#definea6
#defineba+4
则执行语句c=b*10(c为int型数据)后,c的值为46。
(十)在C中,文件指针变量的类型只能是FILE。
二、阅读下列程序,写出运行结果(共20分,每题4分)
[程序1]
#include<
inti;
i=18,J=29.44
floatj;
i=18;
j=29.4361;
printf(“i=%4d,j=%2.2f”,i,j);
[程序2]
{intk=10;
charc=’b’;
do
swith(c++)运行结果:
12
case‘a’:
k++;
case‘b’:
k--;
case‘c’:
k+=3;
case‘d’:
k=k%4;
while(c!
=’c’);
printf(“%d\n”,k);
[程序3]
chara[]=”computer”;
chart;
inti,j=0;
utrpomec
for(i=0;
I<
8;
I++)
for(j=i+1;
j++)
if(a[i]<
a[j])
t=a[i];
a[i]=a[j];
a[j]=t;
printf(“%s”,a);
[程序4]
char*p,s[]=”abcdefg”;
for(p=s;
*p!
=’\0’);
abcdefg
printf(“%s\n”,p);
p++;
if(*p!
=’\0’)
elsebreak;
三、阅读下列程序,在 线处填上合适的内容使程序(或函数)完整(共18分,每空2分)
1.
下面程序的功能是判断输入的一个年份是否是闰年。
(闰年能够被4整除,但不能被100整除;
或能被400整除)
#include“stdio.h”
intyear,leap;
printf(“inputyear:
scanf(“%d,&
year);
if(year%400==0)leap=1;
elseif(year%4==0)&
(year%100!
=0)leap=1;
elseleap=0;
if(leap!
=0)
printf(“%disaleapyear.\n”,year);
else
printf(“%disnotaleapyear.\n”,year);
2.
以下程序的功能是求三个数的最小公倍数。
max(intx,inty,intz)
if(x>
y&
x>
z)
return(x);
elseif(y>
=x&
y>
z)
return(y);
return(z);
inta,b,c,I=1,j,s;
scanf(“%d%d%d”,&
a,&
b,&
c);
s=max(a,b,c);
while
(1)
j=s*i;
if((j%a==0)&
(j%b==0)&
(j%c==0))
break;
i++;
prinf