【题目41】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加使用键盘控制。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int s=0,a,n,t;
printf("请输入a和n:\n");
scanf("%d%d",&a,&n);
t=a;
while(n>0)
{
s=s+t;
a=a*10;
t=t+a;
n--;
}
printf("a+aa+...=%d\n",s);
return 0;
}
【题目42】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#define N 1000
int main()
{
int i,j,k,n,sum;
int a[256];
for(i=2;i<=N;i++)
{
sum=a[0]=1;
k=0;
for(j=2;j<=(i/2);j++)
{
if(i%j == 0)
{
sum=sum+j;
a[++k]=j;
}
}
if(i==sum)
{
printf("%d=%d",i,a[0]);
for(n=1;n<=k;n++)
{
printf("+%d",a[n]);
}
printf("\n");
}
}
return 0;
}
【题目43】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
float h,s;
h=s=100;
h=h/2; //第一次反弹的高度
for(int i=2;i<=10;i++)
{
s=s+2*h;
h=h/2;
}
printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h);
return 0;
}
【题目44】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.题目分析:采取逆向思维的方法,从后往前推断。
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
int main()
{
int day=9,x1=0,x2=1;
while(day>0)
{
x1=(x2+1)*2; //第1天的桃子数是第2天桃子数加1后的两倍
x2=x1;
day--;
}
printf("第一天共摘了:%d \n",x1);
return 0;
}
【题目45】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。
有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
int main()
{
char i,j,k;
for(i='x';i<='z';i++)
{
for(j='x';j<='z';j++)
{
if(i!=j)
{
for(k='x';k<='z';k++)
{
if(i!=k && j!=k)
{
if(i!='x' && k!='x' && k!='z')
{
printf("顺序为:a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
}
}
}
【题目46】
题目:打印出如下图案(菱形)
✲
✲✲✲
✲✲✲✲✲
✲✲✲✲✲✲✲
✲✲✲✲✲
✲✲✲
✲
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
{
printf(" ");
}
for(k=0;k<=2*i;k++)
{
printf("*");
}
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
{
printf(" ");
}
for(k=0;k<=4-2*i;k++)
{
printf("*");
}
printf("\n");
}
}
【题目47】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
1.题目分析:
2.题目源代码如下:
##include "stdio.h"
int main()
{
int i,t;
float sum=0,a=2,b=1;
for(i=1;i<=20;i++)
{
sum=sum+a/b;
t=a;
a=a+b;
b=t;
}
printf("%9.5f\n",sum);
return 0;
}
【题目48】
题目:求1+2!+3!+…+20!的和。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int i;
double sum,mix;
sum=0;mix=1;
for(i=1;i<=20;i++)
{
mix=mix*i;
sum=sum+mix;
}
printf("%lf\n",sum);
return 0;
}
【题目49】
题目:利用递归方法求5的阶乘。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int i;
int fact(int j);
for(i=0;i<6;i++)
{
printf("%d!=%d\n",i,fact(i));
}
}
int fact(int j)
{
int sum;
if(j==0)
{
sum=1;
}
else
{
sum=j*fact(j-1);
}
return sum;
}
【题目50】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int i=5;
void palin(int n);
printf("请输入5个字符:");
palin(i);
printf("\n");
}
void palin(int n)
{
char next;
if(n<=1)
{
next=getchar();
printf("相反的顺序输出的结果是:");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}