第4章循环 习题答案.docx
- 文档编号:2413282
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:13
- 大小:17.59KB
第4章循环 习题答案.docx
《第4章循环 习题答案.docx》由会员分享,可在线阅读,更多相关《第4章循环 习题答案.docx(13页珍藏版)》请在冰豆网上搜索。
第4章循环习题答案
1:
/*编写程序,实现从键盘输入学生的平时成绩、期中成绩、期末成绩,计算学生的学期总成绩。
学生的学期总成绩=平时成绩*15%+期中成绩*25%+期末成绩*60%。
*/
#include
voidmain()
{
floata,b,c,sum;
printf("输入同学的成绩\n");
scanf("%f,%f,%f",&a,&b,&c);
sum=a*0.15+b*0.25+c*0.6;
printf("同学的总成绩是%4.2f",sum);
}
2:
/*编写程序,输入一个数,判断该数是奇数还是偶数。
*/
#include
voidmain()
{
inta;
printf("输入个数:
");
scanf("%d",&a);
if(a%2==0)
printf("是偶数!
");
else
printf("是奇数!
");
}
3:
/*编写程序,从键盘输入三个数,输出其中最小的数。
*/
#include"stdio.h"
voidmain()
{
intmin,a,b,c;
printf("请输入三个整数用逗号分开:
");
scanf("%d,%d,%d",&a,&b,&c);
min=a;//给min初始化一个值之后才可进行比较
if(min>b)
{
min=b;
if(min>c)
min=c;
}
elseif(min>c)
{
min=c;
}
printf("最小的数为%d\n",min);
}
4:
/*编写程序,接受用户通过键盘输入的1~13之类的整数,将其转换成扑克牌张输出,1转
换为字符A,2~9转换为对应的字符,10转换为T,11转换为J,12转换为Q,13转换为K,
要求使用switch语句实现。
*/
#include
voidmain()
{
chara;
printf("输入一个数字\n");
scanf("%d",&a);
switch(a)
{
case1:
printf("A\n");
break;
case2:
printf("%d\n",a);
break;
case3:
printf("%d\n",a);
break;
case4:
printf("%d\n",a);
break;
case5:
printf("%d\n",a);
break;
case6:
printf("%d\n",a);
break;
case7:
printf("%d\n",a);
break;
case8:
printf("%d\n",a);
break;
case9:
printf("%d\n",a);
break;
case10:
printf("T");
break;
case11:
printf("J");
break;
case12:
printf("Q");
break;
case13:
printf("K");
break;
default:
printf("error\n");
}
}
5:
/*编写程序,接收用户输入的年份和月份,输出该月天数*/
#include
voidmain()
{
inta,b,c;
printf("输入年份,月份\n");
scanf("%d,%d",&b,&a);
c=b%4;
if(a==1||a==3||a==5||a==7||a==8||a==10||a==12)
printf("这个月有31天\n");
if(a==4||a==6||a==9||a==11)
printf("这个月有30天\n");
if(a==2&&c==0)
printf("这个月有28天\n");
if(a==2&&c!
=0)
printf("这个月有29天\n");
if(a>12)
printf("只有12个月\n");
}
6:
/*编写程序,计算s的近似值,使其误差小于10^-6
*s=1+1/x^1+1/x^2+1/x^3^……(x>1)
*/
#include
#defineep1.0e-6
voidmain()
{
doublex,s,a;
s=1.0;
a=1.0;
printf("输入一个数x=");
scanf("%lf",&x);
do
{
a=a/x;
s=s+a;
}
while(a>1.0e-6);
printf("s的近似值=%lf",s);
}
7:
/*编写程序,当x=0.5时,按下面的公式计算e^x的近似值,使其误差小于10^-6
*e^x=1+x/1!
+x^2/2!
+x^3/3!
+……
*/
#include
#include
voidmain()
#defineM_E2.71828182845904523536
#defineep1.0e-6
{
doublefact,sum,a;
inti=1;
sum=1;
a=1;
fact=pow(M_E,0.5);
do
{
a=a*0.5/i;
sum=sum+a;
i++;
}
while(fabs(sum-fact)>ep);
printf("%lf\n",sum);
}
8:
/*编写程序,输出所有大写英文字母及它们的ASCII码,代码值分别用八进制、十六进制、
十进制的形式输出。
*/
#include
voidmain()
{
chara='A',i;
for(i=1;i<27;i++)
{
printf("%c:
Octal:
%o\tHex:
%x\tDecimal:
%d\n",a,a,a,a);
a=a+1;
}
}
9:
/*编写程序,实现输入n个整数,输出其中最小的数,并指出其是第几个数。
*/
#include
voidmain()
{
intmin;
intcount=0,min_count;
inta;
intflag=1;
charb;
printf("以a,b,c.这样的形式输入任意n个数:
");
do
{
scanf("%d%c",&a,&b);
count++;
if(flag)//这个选择语句就是为了给min赋一个初始值方便后面比较
{
min=a;
min_count=count;
flag=0;
}
if(min>a)
{
min=a;
min_count=count;
}
}
while(b!
='.');
printf("最小的数为第%d个,值为%d",min_count,min);
}
10:
/*回文整数是指正读和反读相同的整数,编写一个程序,输入一个整数判断是否为回文整数
*/
#include
voidmain()
{
inti=0,num,fact;
printf("输入你想判断的数字\n");
scanf("%d",&num);
fact=num;
while(0!
=num)
{
i=i*10+num%10;
num=num/10;
}
if(fact==i)
printf("%d是回文整数\n",fact);
else
printf("%d不是回文整数\n",fact);
}
11:
/*编写程序,找出所有三位的升序数。
所谓升序数,是指其个位数大于十位数,且十位数又
大于百位数的数。
例如,279就是一个三位升序数*/
#include
voidmain()
{
inta=100,h,t,g;
do
{
h=a/100;
t=a/10%10;
g=a%10;
if(g>t&&t>h)
printf("%d\t",a);
a++;
}
while(a<=999);
12:
/*如果一个数的各因子之和正好等于该数本身,则该数称为完数。
如6的影子为1、2、3,
其和为6,则6完数。
编写程序,找出2~100之间的所有完数。
*/
#include
voidmain()
{
inti,j,sum;
sum=0;
for(i=2;i<=100;i++)
{
for(j=1;j
{
if(i%j==0)
sum=j+sum;
}
if(sum==i)
{
printf("%d\t",i);
}
sum=0;
}
}
13:
/*输入n值,打印下列高为n的直角三角形。
*
***
*****
*******
*/
#include
voidmain()
{
intn,i,j;
printf("输入高");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=2*n-2*i;j++)
{
printf("");
}
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
}
14:
/*猴子吃桃问题。
猴子第一天摘下若干桃子,当即吃了一半,又多吃了一个,第二天早上又
将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半多一个。
到
第十天早上想再吃时,就只剩下一个桃子了。
求一天一个摘了多少个桃子。
*/
#include
voidmain()
{
inti,x;
i=1;
x=1;
do
{
x=(x+1)*2;
i++;
}
while(i<10);
printf("有%d个桃子",x);
}
15:
/*已知大鱼5元一条,中鱼3元一条,小鱼1元三条,现用100元买100条鱼,求能买大鱼、
中鱼、小鱼各多少条。
*/
#include
voidmain()
{
inti,j,k;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
for(k=0;k<100;k++)
if(i*5+j*3+k/3==100&&k%3==0&&i+j+k==100)printf("%d,%d,%d\n",i,j,k);
}
1、用二分法求方程在区间[0,1]上的一个实根。
#include“stdio.h”
#include“math.h”
Voidmain()
{
floata1,b1,x,y,y1,y2;
a1=0;b1=1;//搜索区间
//f(a)和f(b)的值必须为异号才行!
y1=a*a*a–a*a*a*a+4*a*a-1;
y2=b*b*b–b*b*b*b+4*b*b-1;
if(y1*y2<0)
{
while
(1)
{
x=(a+b)/2;
y=x*x*x–x*x*x*x+4*x*x-1;
if(fabs(y)<=1e-6)//|y|<0.0000
{
break;
}
y1=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章循环 习题答案 循环 习题 答案