《明解C语言》第4章 程序的循环控制练习题答案.docx
《《明解C语言》第4章 程序的循环控制练习题答案.docx》由会员分享,可在线阅读,更多相关《《明解C语言》第4章 程序的循环控制练习题答案.docx(15页珍藏版)》请在冰豆网上搜索。
《明解C语言》第4章程序的循环控制练习题答案
【个人观点】
练习4-1
#include
#include
intmain(void)
{
intnum;
intdig;
do
{
printf("请输入一个非负整数:
");
scanf("%d",&num);
if(num<0)
puts("\a\a请不要输入负整数");
}while(num<0);
printf("%d的逆向显示的结果是",num);
do
{
printf("%d",num%10);
num/=10;
}while(num>0);
puts("。
");
return(0);
}
【注】这样更能很好地理解num的变化
练习4-2
#include
#include
intmain(void)
{
intnum;
intdig;
inttemp;
do
{
printf("请输入一个非负整数:
");
scanf("%d",&num);
if(num<0)
puts("\a\a请不要输入负整数");
}while(num<0);
temp=num;
dig=0;
do
{
num=num/10;
dig=dig+1;
}while(num>0);
printf("%d的位数是%d.\n",temp,dig);
return(0);
}
练习4-3
#include
#include
intmain(void)
{
intmin,max,A,B,temp1,temp2;
intsum=0;
printf("请输入两个整数:
\n");
scanf("%d%d",&A,&B);
A
(min=A,max=B):
(min=B,max=A);
temp1=min;
temp2=max;
do
{
sum=sum+min;
min++;
}while(min<=max);
printf("大于等于%d小于等于%d的所有整数的和是%d.\n",temp1,temp2,sum);
puts("\n");
return(0);
}
练习4-4
#include
#include
intmain(void)
{
intnum;
intdig;
do
{
printf("请输入一个非负整数:
");
scanf("%d",&num);
if(num<0)
puts("\a\a请不要输入负整数");
}while(num<0);
printf("该整数逆向显示的结果是");
do
{
printf("%d",num%10);
num/=10;
}while(num>0);
puts("。
");
return(0);
}
练习4-5
#include
#include
intmain(void)
{
intnum;
intdig;
do
{
printf("请输入一个非负整数:
");
scanf("%d",&num);
if(num<0)
puts("\a\a请不要输入负整数");
}while(num<0);
dig=0;
do
{
num/=10;
dig++;
}while(num>0);
printf("该整数的位数是%d.\n",dig);
return(0);
}
练习4-6
#include
#include
intmain(void)
{
intno;
printf("请输入一个整数:
");
scanf("%d",&no);
while(no<0)
{
printf("输入错误!
");
exit(0);
}
while(no>=0)
{
printf("%d",no);
no--;
}
putchar('\n');
}
练习4-7
#include
intmain(void)
{
intno;
printf("请输入一个正整数:
");
scanf("%d",&no);
while(no>0)
printf("%d",no--);
putchar('\n');
return(0);
}
练习4-8
#include
#include
intmain(void)
{
inti,no;
printf("请输入一个正整数:
");
scanf("%d",&no);
while(no<0)
{
printf("Inputerror!
");
exit(0);
}
i=1;
while(i<=no)
printf("%d",i++);
putchar('\n');
return(0);
}
练习4-9
#include
#include
intmain(void)
{
inttemp,no,i;
printf("请输入一个正整数:
");
scanf("%d",&no);
while(no<=0)
{
printf("Inputerror!
");
exit(0);
}
no%2?
(temp=(no-1)):
(temp=no);
i=2;
while(i<=temp)
{
printf("%d",i);
i+=2;
}
putchar('\n');
return(0);
}
【注意】
(1)条件运算符中要有括号,不出错;
(2)引入i,将temp仅仅作为上限。
若是输出为18……2,则不需要引入i,直接用temp即可
练习4-10
#include
#include
intmain(void)
{
inttemp,no,i;
printf("请输入一个正整数:
");
scanf("%d",&no);
while(no<=0)
{
printf("Inputerror!
");
exit(0);
}
no%2?
(temp=(no-1)):
(temp=no);
i=2;
while(i<=temp)
{
printf("%d",i);
i*=2;
}
putchar('\n');
return(0);
}
练习4-11
#include
intmain(void)
{
intno;
printf("请输入一个整数:
");
scanf("%d",&no);
while(no-->0)
printf("*\n");
putchar('\n');
return(0);
}
【注意】只要限制no-->0,输入0以下的整数,自然什么也不执行
练习4-12
#include
intmain(void)
{
inti;
intsum=0;
for(i=1;i<=5;i++){
sum+=i;
}
printf("1到的合计值是:
%d\n",sum);
putchar('\n');
return(0);
}
练习4-13
#include
intmain(void)
{
inti;
intnum;
printf("请输入一个正整数:
");
scanf("%d",&num);
for(i=1;i<=num;i++){
printf("%d",i%10);
}
putchar('\n');
return(0);
}
【注】
(1)i%10是关键
练习4-14
#include
intmain(void)
{
inti;
intstart,end,interval;
printf("开始数值(cm)\n",start);
scanf("%d",&start);
printf("结束数值(cm)\n",end);
scanf("%d",&end);
printf("间隔数值(cm)\n",interval);
scanf("%d",&interval);
for(i=150;i<=end;i+=5){
printf("%d%.2f\n",i,(double)(i-100)*0.9);
}
putchar('\n');
return(0);
}
练习4-15
#include
intmain(void)
{
inti,j;
printf("|");
for(i=1;i<=9;i++)
printf("%3d",i);
putchar('\n');
for(i=1;i<=32;i++)
printf("-");
printf("\n");
for(i=1;i<=9;i++){
printf("%d|",i);
for(j=1;j<=9;j++)
printf("%3d",i*j);
putchar('\n');
}
return(0);
}
练习4-16
#include
intmain(void)
{
inti,j;
intside,another;
puts("让我们来画一个长方形。
");
printf("一边:
");scanf("%d",&side);
printf("另一边:
");scanf("%d",&another);
for(i=1;i<=side;i++){
for(j=1;j<=another;j++)
putchar('*');
putchar('\n');
}
return(0);
}
练习4-17
【1】
#include
intmain(void)
{
inti,j,ln;
printf("三角形有几层:
");
scanf("%d",&ln);
for(i=1;i<=ln;i++){
for(j=ln;j>=i;j--)
putchar('*');
putchar('\n');
}
return(0);
}
【注】
(1)for(j=ln;j>=i;j--)是重点
【2】教材上的4-19不是右下三角,现在输出右下三角
#include
intmain(void)
{
inti,j,ln;
printf("三角形有几层:
");
scanf("%d",&ln);
for(i=1;i<=ln;i++){
for(j=ln-1;j>=i;j--)
putchar('');
for(j=1;j<=i;j++)
putchar('*');
putchar('\n');
}
return(0);
}
【3】右上三角
#include
intmain(void)
{
inti,j,ln;
printf("三角形有几层:
");
scanf("%d",&ln);
for(i=1;i<=ln;i++){
for(j=1;j<=i;j++)
putchar('');
for(j=ln;j>=i;j--)
putchar('*');
putchar('\n');
}
return(0);
}
练习4-18
第1次j=1,j小于等于4输出4个空格k=1,k小于等于1输出1个*
第2次j=1,j小于等于3输出3个空格k=1,k小于等于(2*2-1)=3输出3个*
第3次j=1,j小于等于2输出2个空格k=1,k小于等于(2*3-1)=5输出5个*
第4次j=1,j小于等于1输出1个空格k=1,k小于等于(2*4-1)=7输出7个*
第5次j=1,j小于等于0输出0个空格k=1,k小于等于(2*5-1)=9输出9个*
#include
voidmain()
{
inti,j,k,ln;
printf("让我们来描绘一个金字塔。
\n");
printf("金字塔有几层:
");
scanf("%d",&ln);
for(i=1;i<=ln;i++){
for(j=1;j<=ln-i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
return(0);
}
【注】注意第二个循环