知ing

C语言程序设计教程(第2版)

李凤霞 编 / 北京理工大学出版社

拾° 上传

查看本书

一、单项选择题(113
1-4.DCBB 5-8.DABD 

二、填空题(115
1.0 0 2.k==0 
3.if (abs(x)>4) printf("%d",x);else printf("error!"); 
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x); 
5.k=1 (原题最后一行漏了个d,如果认为原题正确,则输出k=%
6. 8! Right!11 7.$$$a=0 8.a=2,b=1 

三、编程题(116
1.有错。正确的程序如下: 
main() 
{int a,b,c; 
scanf("%d,%d,%d",&a,&b,&c); 
printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);} 
2.源程序: 
main() 
{unsigned long a; 
scanf("%ld",&a); 
for(;a;printf("%d",a%10),a/=10);} 
执行结果: 
12345 
54321 
3.(1)源程序: 
main() 
{int x,y; 
scanf("%d",&x); 
if (x>-5&&x<0)y=x; 
if (x>=0&&x<5)y=x-1; 
if (x>=5&&x<10)y=x+1; 
printf("%d\n",y);} 
(2)源程序: 
main() 
{int x,y; 
scanf("%d",&x); 
if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1; 
 else y=x-1; else y=x; 
printf("%d\n",y);} 
(3)源程序: 
main() 
{int x,y; 
scanf("%d",&x); 
if(x<10) if(x>=5)y=x+1; 
 else if(x>=0)y=x-1; 
 else if(x>-5)y=x; 
printf("%d\n",y);} 
(4)源程序: 
main() 
{int x,y; 
scanf("%d",&x); 
switch(x/5) 
{case -1:if(x!=-5)y=x;break; 
 case 0:y=x-1;break; 
 case 1:y=x+1;} 
printf("%d\n",y);} 
4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。 
现给出Delphi源程序和C++ Builder源程序。 
Delphi源程序: 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
edit3.Text:=format('%.0f',[strtodate(edit2.text) -strtodate(edit1.text)]); 
end; 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
Edit2.Text:=datetostr(now); 
button1click(form1) 
end; 
C++ Builder源程序: 
void __fastcall TForm1::Button1Click(TObject *Sender) 

Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+""; 

void __fastcall TForm1::FormCreate(TObject *Sender) 

Edit2->Text=DateToStr(Now()); 
Button1Click(Form1); 

执行结果:(运行于Windowshttp://img378.photo.163.com/nxgt/41463572/1219713927.jpg 
  
5.源程序: 
main() 
{unsigned a,b,c; 
printf("请输入三个整数:"); 
scanf("%d %d %d",&a,&b,&c); 
if(a&&b&&c&&a==b&&a==c)printf("构成等边三角形\n"); 
 else if(a+b>c&&a+c>b&&b+c>a) 
 if(a==b||a==c||b==c)printf("构成等腰三角形\n"); 
 else printf("构成一般三角形\n"); 
 else printf("不能构成三角形\n");} 
执行结果: 
请输入三个整数:5 6 5 
构成等腰三角形 
6.源程序: 
main() 
{int x,y; 
scanf("%d",&x); 
if(x<20)y=1; 
else switch(x/60) 
{case 0:y=x/10;break; 
 default:y=6;} 
printf("x=%d,y=%d\n",x,y);} 
7.源程序: 
main() 
{unsigned m;float n; 
scanf("%d",&m); 
if(m<100)n=0; 
 else if(m>600)n=0.06; 
 else n=(m/100+0.5)/100; 
printf("%d %.2f %.2f\n",m,m*(1-n),m*n);} 
执行结果: 
 450 
450 429.75 20.25 
8. 2171(起始日期和终止日期均算在内
 本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入生日今日栏内,单击实足年龄按钮,将所得到的天数再加上1天即可。 
9.源程序: 
#include "math.h"; 
main() 
{unsigned long i; 
scanf("%ld",&i); 
printf("%ld %d\n",i%10,(int)log10(i)+1);} 
执行结果: 
99887 
7 5 
10.源程序: 
main() 
{unsigned long i;unsigned j[10],m=0; 
scanf("%ld",&i); 
for(;i;){j[m++]=(i+2)%10;i/=10;} 
for(;m;m--)i=i*10+j[m-1]; 
printf("%ld\n",i);} 
执行结果: 
 6987 
 8109 
(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)  


查看更多