1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。
#include
#include
int main()
{
int bai_wei,shi_wei,ge_wei,i,sum=0;
for(i=100;i<1000;i++)
{
bai_wei=i/100;
shi_wei=(i%100)/10;
ge_wei=i%10;
if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))
{
printf("%d ",i);
sum++;
if(sum%5==0)
printf("\n");
}
}
printf("\n");
return 0;
}
2.请输入任意两个整数x和y,求其最大公约数和最小公倍数。
#include
int main()
{
int x,y,min,max,i;
printf("请输入任意两个整数:");
scanf("%d%d",&x,&y);
min=x>y?y:x;
max=x>y?x:y;
for(i=min;i>0;i--)
if(x%i==0&&y%i==0)
{
printf("这两个整数的最大公约数为:%d\n",i);
break;
}
for(i=max;i<=x*y;i++)
if(i%x==0&&i%y==0)
{
printf("这两个整数的最小公倍数为:%d\n",i);
break;
}
return 0;
}
3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include
#include
#define N 50
int main()
{
int sum1=0,sum2=0,sum3=0,sum4,i=0;
char str[N];
printf("请输入一串字符串:");
scanf("%s",str);
for(i=0;i { if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) sum1++; if(str[i]==' ') sum2++; if(str[i]>='0'&&str[i]<='9') sum3++; } sum4=strlen(str)-sum1-sum2-sum3; printf("英文字母的个数:%d\n",sum1); printf("空格的个数:%d\n",sum2); printf("数字的个数:%d\n",sum3); printf("其他符号的个数:%d\n",sum4); return 0; } 4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 #include #include int main() { int a,n,s=0,i,x=0,y=0; printf("请输入整数a的值:"); scanf("%d",&a); printf("请输入相加的个数n:"); scanf("%d",&n); for(i=0;i { x=y+2*pow(10,i); y=x; s=s+x; } printf("s=%d\n",s); return 0; } 5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。 #include int main() { int sum=0,i,j; printf("在1000以内的完数有:"); for(i=2;i<=1000;i++) { for(j=1;j if(i%j==0) sum=sum+j; if(sum==i) printf("%d ",i); sum=0; } printf("\n"); return 0; } 6.输入一个不多于5位的正整数,要求:1、求它是几位数;2、逆序打印出个位数字。 #include int pows(int a,int n) { int sum=1,i; for(i=0;i sum=sum*a; return sum; } int main() { int n,i,k,x; printf("n="); scanf("%d",&n); for(i=1;i<6;i++) if(n/pows(10,i)==0) { printf("%d\n",i); k=i; break; } for(i=0;i { x=n/pows(10,i)%10; printf("%d",x); } printf("\n"); return 0; } 7.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 #include int main() { int n,a[5],i=0; printf("请输入一个5位数:"); scanf("%d",&n); while(n!=0) { a[i]=n%10; n=n/10; i++; } if(a[0]==a[4]&&a[1]==a[3]) printf("这个数是回文数\n"); else printf("这个数不是回文数\n"); return 0; } 8.利用递归算法,将所输入的5个字符,以相反顺序打印出来。 #include void digui(char a[],int n) { if(n==1) printf("%c",a[0]); else { printf("%c",a[n-1]); digui(a,n-1); } } int main() { char str[5]; printf("请输入5个字符:"); scanf("%s",str); digui(str,5); printf("\n"); return 0; } 9.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…球出这个序列的前20项之和。 #include int main() { int i,a=1,b=1; float sum=0.0; for(i=1;i<=20;i++) { sum=sum+(float)(a+i)/b; b=a+i; a=i; } printf("sum=%f\n",sum); return 0; } 10.利用递归算法求5!。 #include int digui(int n) { if(n==1) return 1; else return n*digui(n-1); } int main() { int n,sum; printf("n:"); scanf("%d",&n); sum=digui(n); printf("sum=%d\n",sum); return 0; }