C练习题3.docx
《C练习题3.docx》由会员分享,可在线阅读,更多相关《C练习题3.docx(16页珍藏版)》请在冰豆网上搜索。
![C练习题3.docx](https://file1.bdocx.com/fileroot1/2022-11/27/93a79514-2a11-4aae-8d03-2d605fdfb1ff/93a79514-2a11-4aae-8d03-2d605fdfb1ff1.gif)
C练习题3
一、填充题(每个空格2分)
1、 c语言是一种__________高级程序设计语言。
2、 c语言中规定对所用到的变量要先___________后____________。
3、 设c语言中,int类型占2个字节,则long类型数据占_____个字节;unsignedint类型数据占_____个字节;short类型数据占_____个字节;double类型数据占_____个字节;char类型数据占_____个字节。
二、选择题(每个选择3分)
1、 组成c语言程序的是
A)子程序B)过程C)函数D)主程序和子程序
2、 若有以下定义:
chars=’\092’;则该语句
A)使s的值包含1个字符B)定义不合法,s的值不确定
C)使s的值包含4个字符D)使s的值包含3个字符
3、 已知各变量的类型定义如下:
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则以下两组中不符合c语言语法的表达式分别是
(1)A)k=i++B)(int)x+0.4C)y+=x++D)a=2*a=3
(2)A)x%(–3)B)w+=–2C)k=(a=2,b=3,a+b)D)a+=a–=(b=4)*(a=3)
4、 以下两组中不符合c语言语法的赋值语句分别是
(1)A)a=1,b=2B)++i;C)a=b=5;D)y=(a=3,6*5);
(2)A)i++;B)i=i=5;C)k=2*4,k*4;D)y=float(i);
5、 若a为整型变量,则以下语句
a=-2L;
printf(“%d\n”,a);
A)赋值不合法B)输出为-2C)输出为不确定D)输出为2
6、 找出下列符号中合法的标识符
A.“abc”B.s06C.file.cD.a&bE.10dF.c*7
三、计算题(每题5分)
1、 设inta=12,试写出计算表达式a+=a/=a-=a*a后a的值。
2、 设doublex=12.34567,写出计算x=(int)(x*100+0.5)/100.0后x的值。
3、 设x=3.5,a=8,y=4.3,求y+a%3*(int)((x+y)/4+0.05)/3的值。
四、读程序
1、 写出下列程序的输出结果(6分)
main()
{inta=9;
a+=a-=a+a;
printf(“%d\n”,a);
}
2、 写出下列程序的输出结果(8分)
main()
{inta=4,b=7;
printf(“%d\n”,(a++,b+a,b+1));
printf(“%d\n”,++a,a+b,b+1);
}
3、 写出下列程序的输出结果(8分)
main()
{charc1=’a’,c2=’b’,c3=’c’c4=’\101’,c5=’\102’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t%c%c”,c4,c5);
}
4、若a=1,那么printf(“%d”,a,++a,a--);写出输出的结果(4分)
5、 写出下列程序的功能(8分)
intm(intx,inty)
{intz;
if(x>y)z=y;
elsez=x;
returnz;
}
main()
{inta,b,c,d,x;
scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);
x=m(m(a,b),m(c,d));
printf(‘m=%d”,x);
}
五、填空题(12分)
以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a,b,c的值。
请填空。
main()
{inta,b,c,__
(1)__;
printf(“entera,b,c”);
scanf(“%d%d%d”,______
(2)______);
___(3)___;a=b;b=c;___(4)____;print(“a=%db=%dc=%d\n”,a,b,c);}
练习一答案:
一、结构化定义使用42281 二、C)A)D)A)C)D)B) 三、答:
a=212.354.3
四、
(1)0
(2)85(3)aabbccabcAB(4)1,1,1(5)求a,b,c,d中最大者 五、
(1)t
(2)&a,&b,&c(3)t=a(4)c=t 返回
C语言练习二
学号___________姓名_____________分数_____________
1、 写出下列程序段的输出结果。
(12%)
k=8567;
printf(“/%-6d/\n”,k);
printf(“/%6d/\n”,k);
x=213.82631;
printf(“%-10.2f\n”,x);
printf(“%10.2fd/\n”,x);
printf(“%e\n”,x);
c=’A’;
printf(“%d%c\n”,c,c);
2、 若a=3,b=4,x=1.2,y=2.4,z=-3.6,c1=’a’,c2=’b’,要得到以下输出格式,请编写程序。
(10%)
a=3b=4
a+b=72a=6
x=1.200000,y=2.4
c1=’a’or97(ASCII)
c2=’b’or97(ASCII)
3、 编写程序计算1/2(ax+x3/4a),其中a为常数,x为实型变量(运行时输入)。
(10%)
4、 编写程序完成从键盘输入一个小写字母转化为大写字母输出。
(10%)
5、 写出下列程序的输出结果。
(10%)
main()
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;
j=a++;k=b;
printf(“i=%d,j=%d,k=%d\n”,i,j,k);
}
6、 计算以下表达式的值。
设inta=1,b=2,c=3;(10%)
(1) !
(a<0||b<=0)&&!
(a+b!
=c)
(2) !
a<=0||c&&!
(a+b)+c-1
(3) b-c&&1/2*(a+b+c)
(4) b%2&&c>b&&b>a
(5) !
(x=a)&&(y=b)&&1+a==b
7、 把以下语句改写成switch语句。
(10%)
if(s<60)m=1;
elseif(s<70)m=2;
elseif(s<80)m=3;
elseif(s<90)m=4;
elseif(s<=100)m=5;
8、 把以下语句改写成不嵌套的switch语句。
(12%)
if(s>0&&s<=10)
if(s>=3&&s<=6)x=2;
elseif(s>1||s>8)x=3
elsex=1;
elsex=0;
9、 编写程序,将键盘输入的任意三个整数a,b,c,按小到大的次序存放在a,b,c中。
(16%)
练习二答案:
(1)/8567//8567/213.83213.832.138263e+00265A
(2)答案见书上习题解答
(3)#definea10
main()
{floatx,y;
scanf(“%f”,&x);
y=1.0/2*(a*x+(a+x)/(4*a));
printf(“%f”,y);
}
(4)答案见书上习题解答(5)I=1,j=1,k=3(6)11000(7)答案略(8)答案略
(9)答案见书上习题解答
返回
C语言程序设计练习三
学号姓名成绩________
一、读程写结果
1.main()(5分)
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d\n”,a,b);
}
写出其输出结果:
________
2.main()(5分)
{intx=2,y=5,z;
z=3%4/(float)x+x/y*y;
printf(“%d\n”,z);
}
写出其输出结果:
________
3.main()(5分)
{
inta=4,b=3,c=1,d=2,x=0;
if(a>b)
{if(c>d)x=1;}
elsex=2;
printf(“%d\n”,x);
}
写出其输出结果:
_________
4.inttest(intx,inty)(6分)
{x=x+5;
y=y+2;
returnx;
}
main()
{intx,y,z;
x=1;y=2;
z=test(x,y);
printf(“%d,%d,%d”,x,y,z);
}
写出其输出结果:
_________
5.voidfunc(inta[],intn)(8分)
{intj,temp;
for(j=0;j<=n/2;j++)
{temp=a[j];a[j]=a[n-1-j];a[n-1-j]=temp;}
}
main()
{intx[5]={2,5,1,7,8},len=5,k;
func(x,len);
for(k=0;kprintf(“%2d”,x[k]);
}
写出其输出结果:
_____________________
6.intsearch(ints[],intn,intkey)(12分)
{intlow,hig,mid;
low=0;hig=n-1;
while(low<=hig)
{mid=(low+hig)/2;
if(s[mid]==key)break;
elseif(s[mid]elsehig=mid-1;
}
if(low<=hig)returnmid;
elsereturn–1;
}
main()
{intkey,result;
inta[8]={10,13,15,17,19,21,25,28};
scanf(“%d”,&key);
result=search(a,8,key);
printf(“%d\n”,result);
}
当输入数据为25↙时,程序的输出结果为________.
当输入数据为11↙时,程序的输出结果为________.
7.main()(6分)
{inta[3][3]={1,2,3,4,5,6,7,8,9};
intj,s=0;
for(j=0;j<3;j++)
s=s+a[j][j];
printf(“s=%d”,s);
}
写出其输出结果:
_____________________
8.intcount(charc[])(6分)
{intI=0;
while(c[I++]!
=’\0’);
returnI-1;
}
main()
{charstr[]=”LanguageProgramming”;
printf(“length=%d”,count(str));
}
写出其输出结果:
_____________________
9.#include(10分)
intf(intn)
{staticints=1;
while(n)s*=n--;
returns;
}
main()
{inti,j;
i=f(3);j=f(4);
printf("\nTheoutputis:
\n\n");
printf("i=%dj=%d\n",i,j);
}
写出其输出结果:
_____________________
10、main()(10分)
{intI,j,k,temp;
inta[6]={7,5,9,3,6,2},n=6;
for(I=0;I{k=I;
for(j=I+1;jif(a[j]if(I!
=k){temp=a[k];a[k]=a[I];a[I]=temp;}
}
for(j=0;j}
写出其输出结果:
_____________________
二、完成下列冒泡排序程序(每个空格3分)
voidbubblesort(intr[],intn)
{intI,j,temp;
for(I=0;Ifor(j=
(1);j>=I+1;j--)
if(
(2))
{temp=r[j];r[j]=r[j-1];(3);}
}
main()
{inta[6]={3,5,2,4,1};
intj,n=6;
bubblesort((4));/*函数调用*/
for(j=0;j}
三、编写程序从键盘输入20个学生的成绩,求最高分,最低分和平均分。
(15分)
练习三答案:
一、
(1)2,1
(2)1(3)0(4)1,2,6(5)87152(6)6-1(7)s=15(8)length=20(9)Theoutputis:
_i=6j=144(10)235679
二、
(1)n-1
(2)r[j]三、答案略
返回
C语言程序设计练习四
学号_________姓名_____________分数______________
一.单项选择题(在下列每小题四个备选答案中选出一个正确答案,并将其字母号填入题目后面的括号内。
每小题2分)
1.已知a=2,b=3,执行下面条件语句后,b的值是()。
if(a<0)if(b<0)b++;elseb--;
A.3B.2C.4D.0
2.下面()是C语言的有效实数。
A.+3.14B.47C.1,234.00
3.a和b是实数变量,c和d是整数变量,下面()赋值语句是正确的。
A.a=a%c/b;B.c+1=b+d;C.a=c/d;D.c=”a”;
4.以下运算符中优先级最高的是()。
A.?
:
B.==C.%D.++
5.阅读以下程序:
main()
{intcount;floatsum=0.0;
for(count=1;count<8;count++)
switch(count)
{case1:
case4:
case5:
sum+=count;break;
case2:
case3:
case7:
sum=1.0;
}
printf(“%4.1f”,sum);
}
程序的执行结果为()
A.23.0B.10.0C.11.0D.1.0
6.阅读以下程序:
main()
{intx=3,p=1,I,sum=0;
for(I=1;I<=x;I++)
p*=x;
sum+=p;
printf(“%d”,sum);
}
程序的执行结果为()
A.6B.27C.9D.28
7.以下叙述正确的是()
A.while语句的循环体至少执行一次B.do-while语句的循环体至少执行一次
C.for语句的循环体至少执行一次D.while语句用于循环次数已知的循环
8.for(j=-1;j<2;j++){循环体},则循环执行()次。
A.2B.3C.4D.5
二.改错题(指出所给程序中的错误,在错误位置处打上横线标记,并注明错误原因。
每题6分)
1.#definePI3.14; 去掉;
main()
{ints;floatr; 应是float
scanf(“%d”,r); %f, &
s=PI*r*r;
printf(“s=%6.2f”,s);
}
2.#define“stdio.h”
main()
{charc1=”a”;c; 单引号,逗号
c=getchar; 加函数括号
if(c1=c)printf(“c1==c\n”); 双等号
elseprintf(“c1!
=c\n”);
}
3.程序功能:
求n以内的偶数之和。
main()
{intsum=0,n=100;
for(j=2;j<=n;j++);去除
{sum=0;去除
sum=sum+j:
j++;
}
printf(sum=%d,&sum);加双引号,去掉&
}
4.输入x(|x|<1),计算S,S=x+x2/2+x3/3+x4/4+…,直到最后一项的绝对值小于10-6为止。
main()
{floatx,s,term;
intn;
scanf(“%f”,&x);term=x;
s=0;n=1; 应为s=term
do
{n++;
term=term*x/n; 改为term=term*x
s=s+term; 改为s=s+(float)term/n;
}whilefabs(term)printf(“s=%6.3f”,s);
}
三.读程序(阅读给出的程序,将其运行结果写在横线上。
每题6分)
1. main()
{inta=5,b=4,c=9;
printf(“***%d”,a++<=5&&b--<=2&&c++);
}
程序的运行结果为_。
2.main()
{inta=5;
a+=a+=a-=a+a;
printf(“%d\n”,a);
}
程序的运行结果为_______。
3.main()
{intI,k,n,s=0;
scanf(“%d”,&n);
for(I=1;I<=n;I++)
{scanf(“%d”,&k);
if(k%2==0)s+=k;elses+=k/2;
}
printf(“%d”,s);
}
执行该程序,当输入81526133428172522↙
时,输出为___________________。
4.main()
{inta,b,c;
a=2;b=3;c=-1;
if(a>b)
if(a>c)
printf(“%d\n”,a);
else
printf(“%d\n”,b);
printf(“%d%o%x%u\n”,c,c,c,c);
}
程序的运行结果为____________。
四.编程题(阅读给出的程序,在横线上填入适当的语句、表达式或其他成分,以完善程序。
每个空格3分)
1. 输入任意一整数,计算其各位数字之和与各位数字之积。
main()
{inta,n,m,s,p;
scanf(“%d”,&n);
(1);
(2);m=n;
while((3))
{(4);m/=10;
s+=a;p*=a;
}
printf(“s=%d,p=%d”,s,p);
}
2. 从输入的整数中,统计大于零的整数个数和小于零的整数个数。
用输入零来结束输入。
main()
{
(1)n,i,j;
i=j=0;
scanf(“%d”,&n);
while(
(2))
{if(n>0)i=(3);
if(n<0)j=(4);
(5);
}
printf(“i=%4dj=%4d\n”,i,j);
}
3. π的近似值可用以下公式求得:
当n取值10000时结束。
#include“math.h”
main()
{longi;
(1)pi;
pi=0.0;
for(i=1;i<10000;i++)pi+=
(2);
pi=sqrt(6.0*pi);
printf(“(3)“,pi);
}
练习四答案:
一、
(1)A
(2)A(3)C(4)D(5)D(6)B(7)B(8)B
二、见题目中红色处三、
(1)***0
(2)-20(3)143(4)-1,177777,ffff,65535,
四、1、
(1)s=0
(2)p=1(3)m!
=0(4)a=m%10
2、
(1)int
(2)n(3)i+1(4)j+1(5)scanf(“%d”,&n);
3、
(1)double
(2)1.0/(i*i)(3)%f