共有 5 个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。2.
程序源代码:
main(){
int a,n,count=1;
long int sn=0,tn=0;
printf("please input a and n\n");
scanf("%d,%d",amp;a,amp;n);
printf("a=%d,n=%d\n",a,n);
while(count<=n){
tn=tn+a; sn=sn+tn; a=a*10; ++count;}
printf("a+aa+...=%ld\n",sn);}
【程序 19】题目:一个数如果恰好等于它
的因子之和,这个数就称为“完数”。例如
6=1+2+3.编程找出 1000 以内的所有完数。
1. 程序分析:请参照程序<--上页程序 14.
2.程序源代码:
main(){
static int k[10];
int i,j,n,s;
for(j=2;j<1000;j++){
n=-1; s=j;
for(i=1;i {
if((j%i)==0)
{ n++; s=s-i; k[n]=i;}
}
if(s==0){
printf("%d is a wanshu",j);
for(i=0;i printf("%d,",k[i]);
printf("%d\n",k[n]);
}}}
【程序 20】题目:一球从 100 米高度自由
落下,每次落地后反跳回原高度的一半;
再落下,求它在第 10 次落地时,共经过多
少米?第 10 次反弹多高 2.程序源代码:
main(){
float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++){
sn=sn+2*hn;/*第 n 次落地时共经过的
米数*/
hn=hn/2; /*第 n 次反跳高度*/}
printf("the total of road is %f\n",sn);
printf("the tenth is %f meter\n",hn);
}
【程序 21】题目:猴子吃桃问题:猴子第
一天摘下若干个桃子,当即吃了一半,还
不瘾,又多吃了一个第二天早上又将剩下
的桃子吃掉一半,又多吃了一个。以后每
天早上都吃了前一天剩下的一半零一个。
到第 10 天早上想再吃时,见只剩下一个桃
子了。求第一天共摘了多少。1.程序分析:
采取逆向思维的方法,从后往前推断。2.程
序源代码:
main(){
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子数是第 2 天
桃子数加 1 后的 2 倍*/
x2=x1;
day--;}
printf("the total is %d\n",x1); }
【程序 22】题目:两个乒乓球队进行比赛,
各出三人。甲队为 a,b,c 三人,乙队为 x,y,z
三人。已抽签决定比赛名单。有人向队员
打听比赛的名单。a 说他不和 x 比,c 说他
不和 x,z 比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数
分别去除 2 到 sqrt(这个数),如果能被整除,
则 表 明 此 数 不 是 素 数 , 反 之 是 素 数 。
2.程序源代码:
main(){
char i,j,k;/*i 是 a 的对手,j 是 b 的对手,k
是 c 的对手*/
for(i='x';ilt;='z';i++)
for(j='x';jlt;='z';j++){
if(i!=j)
for(k='x';klt;='z';k++){
if(i!=k&&j!=k) {
if(i!='x'amp;amp;k!='x'amp;amp;k!='z')
printf("order is a--%c\tb--%c\tc--%c\
n",i,j,k);
}}}}
【程序 23】 题目:打印出如下图案(菱
形)
*