1. 已知 a, b, c 都是 1 位整数,求当三位数 abc+cba 的和为 1333 时 a,b,c 的值.
#include <stdio.h>
int main()
{
int a,b,c,num1,num2;
for(a=1;a<=9;a++)//a=1
{
for(b=0;b<=9;b++)
{
for(c=1;c<=9;c++)//c=1
{
num1=100*a+10*b+c;
num2=100*c+10*b+a;
if(num1+num2==1333)
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
}
}
}
/*
a=4,b=1,c=9
a=5,b=1,c=8
a=6,b=1,c=7
a=7,b=1,c=6
a=8,b=1,c=5
a=9,b=1,c=4
*/
2. 计算并输出 200—400 之间不能被 3 整除的整数的和。
#include <stdio.h>
int main()
{
int i,sum=0;
for(i=200;i<=400;i++)
{
if(i%3!=0)
sum+=i;
}
printf("整数和为:%d\n",sum);
}
/*
整数和为:40200
*/
3. 编程计算1*2*3+3*4*5+5*6*7+7*8*9+9*10*11....+99*100*101的值。
#include <stdio.h>
int main()
{
int a,b,c,sum=0;
for(a=1,b=2,c=3;a<=99;a+=2,b+=2,c+=2)
sum+=a*b*c;
printf("方程的和为:%d\n",sum);
}
/*
方程的和为:13002450
*/
/*
代码优化
for(i=1;i<=99;i+=2)
sum+=i*(i+1)*(i+2)
*/
4. 输出所有200-400以内能被3整除且个位数字为7的整数。
#include <stdio.h>
int main()
{
int i;
for(i=200;i<=400;i++)
{
if(i%3==0 && i%10==7)//i%10==0
printf("目标整数为:%d\n",i);
}
}
/*
目标整数为:207
目标整数为:237
目标整数为:267
目标整数为:297
目标整数为:327
目标整数为:357
目标整数为:387
*/
5. 打印所有水仙花数。所谓水仙花是指一个三位数,其各位数字的立方和等于该数。例:153=1*1*1+5*5*5+3*3*3=1+125+27
#include <stdio.h>
int main()
{
int i;
for(i=100;i<=999;i++)
{
int a,b,c;
a=i/100;
b=i%100/10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("水仙花数为:%d\n",i);
}
}
/*
水仙花数为:153
水仙花数为:370
水仙花数为:371
水仙花数为:407
*/
6. 编程计算1/1-1/2+1/3-1/4+1/5-1/6+1/7-1/8.....+1/99-1/100的值。 1
#include <stdio.h>
int main()
{
int i;
float sum=0;
for(i=1;i<=100;i++)
{
if(i%2==1)
sum+=1.0/i;
else
sum-=1.0/i;
}
printf("方程的值为:%f\n",sum);
}
/*
方程的值为:。。。。。
*/
7. 用1元人民币兑换5分,2分,1分的硬币共50枚,每种硬币至少1枚,问共有多少种兑换方案,输出每一种方案三种硬币的数量。
#include <stdio.h>
int main()
{
int a,b,c,num=0;
for(a=1;a<=48;a++)//1-18
for(b=1;b<=48;b++)//1-48
for(c=1;c<=48;c++)//1-48
{
if(a+b+c!=50)
continue;
else if(a*5+b*2+c!=100)
continue;
else
{
printf("5分的个数为:%d,2分的个数为:%d,1分的个数为:%d\n",a,b,c);
num++;
}
}
printf("一共%d种方法",num);
}
/*
5分的个数为:1,2分的个数为:46,1分的个数为:3
5分的个数为:2,2分的个数为:42,1分的个数为:6
5分的个数为:3,2分的个数为:38,1分的个数为:9
5分的个数为:4,2分的个数为:34,1分的个数为:12
5分的个数为:5,2分的个数为:30,1分的个数为:15
5分的个数为:6,2分的个数为:26,1分的个数为:18
5分的个数为:7,2分的个数为:22,1分的个数为:21
5分的个数为:8,2分的个数为:18,1分的个数为:24
5分的个数为:9,2分的个数为:14,1分的个数为:27
5分的个数为:10,2分的个数为:10,1分的个数为:30
5分的个数为:11,2分的个数为:6,1分的个数为:33
5分的个数为:12,2分的个数为:2,1分的个数为:36
一共12种方法
*/
8. 输入正整数,将正整数分解质因数。质因数要满足两个条件
1) 是这个数的因数;
2) 是质数(素数)如:6=2*3 12=2*2*3。
#include <stdio.h>
int main()
{
int i,j=0,num,num1;
int a[j];
printf("输入一个正整数:");
scanf("%d",&num);
num1=num;
again:
for(i=2;i<num;i++)//i<num
{
if(num%i==0)
{
a[j++]=i;
if(num/i==1) break;
num=num/i;
goto again;
}
}
printf("结果为:%d=",num1);
for(i=0;i<j;i++)
printf("%d*",a[i]);
printf("1\n");
}
/*
更优代码
int main()
{
int num;
scanf("%d",&num);
printf("%d=",num);
for(i=2;i<num;i++)
{
if(num%i==0)
{
printf("%d*",i);
num/=i;
}
i=1;
}
printf("%d",num)
}
*/
/*
输入一个正整数:12
结果为:
12=2*2*3*1
*/
9. 输出10000以内的所有完全数,若一个数的所有因子(不包括该数本身)相加等于这个数本身,则称其为完全数。
6 = 1 + 2 + 3
因数:能整除的数
#include <stdio.h>
int main()
{
int i,num,sum;
for(num=6;num<10000;num++)
{
sum=0;
for(i=1;i<num;i++)
if(num%i==0)
sum+=i;
if(sum==num)
printf("%d为完全数\n",num);
}
}
/*
6为完全数
28为完全数
496为完全数
8128为完全数
*/