编程作业答案循环结构2次.docx
《编程作业答案循环结构2次.docx》由会员分享,可在线阅读,更多相关《编程作业答案循环结构2次.docx(11页珍藏版)》请在冰豆网上搜索。
![编程作业答案循环结构2次.docx](https://file1.bdocx.com/fileroot1/2023-1/31/e0cb3566-bc8d-4cac-a5c4-b7ef8e5fe501/e0cb3566-bc8d-4cac-a5c4-b7ef8e5fe5011.gif)
编程作业答案循环结构2次
循环结构程序设计作业答案
1、题目:
求1!
+2!
+3!
+……+n!
的和。
由键盘输入n值,并输出运算结果。
例如:
若n值为10,则结果为4037913。
#include
longfun(intn)
{/**********Program**********/
inti;
longf=1,s=0;
for(i=1;i<=n;i++)
{f=f*i;
s=s+f;
}
returns;
/**********End**********/
}
main()
{inti,n;
longintresult;
scanf("%d",&n);
result=fun(n);
printf("%ld\n",result);
}
2、素数问题:
(1)从键盘输入一个大于3的整数,判断其是否素数,然后输出相应的结论信息。
例如:
7是素数,8不是素数。
素数是仅能被1和自身整除的数。
main()
{intm,flag;
printf("inputaninteger:
");
scanf("%d",&m);
flag=fun(m);
if(flag)
printf("%disaprime.\n",m);
else
printf("%disnotaprime.\n",m);
}
intfun(intn)
{/**********Program**********/
inti;
intj;
j=1;
for(i=2;iif(n%i==0)
{j=0;
break;
}
returnj;
/**********End**********/
}
(2)求给定正整数m以内的素数之和。
例如:
当m=20时,函数值为77。
intfun(intm)
{/**********Program**********/
inti,k,s=0;
for(i=2;i<=m;i++)
{for(k=2;k
if(i%k==0)break;
if(k==i)s=s+i;
}
returns;
/**********End**********/
}
main()
{inty;
y=fun(20);
printf("y=%d\n",y);
}
(3)求出100到200之间的素数的个数。
main()
{intm,k=0;
for(m=100;m<200;m++)
if(fun(m))
{printf("%4d",m);
k++;
if(k%5==0)
printf("\n");
}
printf("k=%d\n",k);
}
intfun(intm)
{/**********Program**********/
inti,k=1;
if(m<=1)k=0;
for(i=2;iif(m%i==0)k=0;
returnk;
/**********End**********/
}
(4)用随机函数产生20个[15,70]上的整数,求其中的素数。
#include"stdlib.h"
#include"stdio.h"
intprime(intn)
{/**********Program**********/
inti,t=1;
for(i=2;iif(n%i==0)t=0;
return(t);
/**********End**********/
}
main()
{inta[20],i,s;
clrscr();
for(i=0;i<20;i++)
{a[i]=random(56)+15;
if(prime(a[i]))printf("%4d",a[i]);
}
}
3、计算并输出给定整数n的所有因子之和(不包括1与自身)。
规定n的值不大于1000。
例如:
n的值为855时,应输出704。
intfun(intn)
{/**********Program**********/
ints=0,i;
for(i=2;iif(n%i==0)
s=s+i;
returns;
/**********End**********/
}
main()
{
printf("s=%d\n",fun(855));
}
4、求一个四位数的各位数字的立方和。
intfun(intn)
{/**********Program**********/
intd,k,s=0;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
returns;
/**********End**********/
}
main()
{intk;
k=fun(1234);
printf("k=%d\n",k);
}
5、求1到100之间的偶数之积。
doublefun(intm)
{/**********Program**********/
doubley=1;
inti;
for(i=1;i<=m;i++)
if(i%2==0)
y*=i;
returny;
/**********End**********/
}
main()
{
printf("ji=%e\n",fun(100));
}
6、求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和
每一分数的分子是前两项的分子之和
例如:
求前20项之和的值为32.660259。
floatfun(intn)
{/**********Program**********/
inti;
floatf1=1,f2=1,f3,s=0;
for(i=1;i<=n;i++)
{f3=f1+f2;
f1=f2;
f2=f3;
s=s+f2/f1;
}
returns;
/**********End**********/
}
main()
{floaty;
y=fun(20);
printf("y=%f\n",y);
}
7、求任意两个整数m和n的最大公因子。
例如,m=21,n=7,则输出结果为7。
main()
{intm,n,r;
printf("请输入整数m和n:
\n");
scanf("%d%d",&m,&n);
r=fun(m,n);
printf("最大公因子是:
%d\n",r);
}
intfun(intx,inty)
{/**********Program**********/
intq;
if(x{
q=x;x=y;y=q;
}
while(y)
{q=x%y;
x=y;
y=q;
}
returnx;
/**********End**********/
}
8、题目:
编写程序求无理数e的值并输出。
e=1+1/1!
+1/2!
+1/3!
+......+1/n!
直到1/n!
<0.000001时e=2.718254。
main()
{floatfun();
printf("无理数e的值是:
%f\n",fun());
}
floatfun()
{/**********Program**********/
inti,j,k;
floate,jc;
i=1;
e=0.0;
jc=1.0;
while(jc>=0.000001)
{
e=e+jc;
j=1;
for(k=1;k<=i;k++)
j=j*k;
jc=1.0/(float)j;
i++;
}
returne;
/**********End**********/
}
9、求任一整数m的n次方。
main()
{intm,n;
longs;
longfun(int,int);
printf("输入m和n的值:
");
scanf("%d,%d",&m,&n);
s=fun(m,n);
printf("s=%ld\n",s);
}
longfun(intm,intn)
{/**********Program**********/
longintx=1;
inti;
for(i=1;i<=n;i++)
x=x*m;
returnx;
/**********End**********/
}
10、求1000以内所有7的倍数之和。
#defineN1000
main()
{intsum;
sum=fun(7);
printf("%d以内所有%d的倍数之和为:
%d\n",N,7,sum);
}
fun(intm)
{/**********Program**********/
ints=0,i;
for(i=1;iif(i%m==0)
s+=i;
returns;
/**********End**********/
}
11、求满足条件:
个、十、百三位数字之积为42,个、十、百三位数字之和为12的所有三位整数。
main()
{printf("满足条件的三位整数分别是:
\n");
fun();
}
fun()
{/**********Program**********/
inti,j,k;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(i*j*k==42&&i+j+k==12)
printf("%d%d%d\t",i,j,k);
/**********End**********/
}
12、将一个正整数的各位数字颠倒后输出。
例如原数为12345,应输出54321。
main()
{inti;
printf("输入一个正整数:
");
scanf("%d",&i);
fun(i);
}
fun(intn)
{/**********Program**********/
intr;
do{
r=n%10;
printf("%d",r);
}while((n=n/10)!
=0);
printf("\n");
/**********End**********/
}
13、求sum=d+dd+ddd+……+dd...d(n个d),
其中d为1-9的数字。
例如3+33+333+3333+33333(此时d=3,n=5)。
main()
{intd,n;
longsum,fun();
printf("d=");
scanf("%d",&d);
printf("n=");
scanf("%d",&n);
sum=fun(d,n);
printf("sum=%ld\n",sum);
}
longintfun(intd,intn)
{/**********Program**********/
longints=0,t=0;
inti;
for(i=1;i<=n;i++)
{t=t+d;
s=s+t;
d=d*10;
}
returns;
/**********End**********/
}