1.求1——1000内的完数
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数。
示例:
6
1+2+3 = 6
28
1 +4 +7 +14 +2 =28
详细代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
int num = 0;
for(int i=1;i<=1000;i++){
for(int j=1;j<i;j++){
if(i%j == 0){//求因数
num = num+j;//计算因数相加
}
}
if(num == i){
printf("%d ",i);//输出 6 28 496
}
num = 0;
}
return 0;
}
结果:
6 28 496
2.打印奇数金字塔
如下所示:
& & & *
& & * * *
& * * * * *
详细代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
int h;
printf("请输入图形高度:");
scanf("%d",&h);
for(int i=1;i<=h;i++)
{
/* for(int j=h;j>i;j--){//
printf(" ");
}*/
for(int j=1;j<=h-i;j++){
printf(" ");
}
for(int k=1;k<=2*i-1;k++){
printf("* ");
}
printf("\n");
}
return 0;
}
结果:
请输入图形高度:5
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
3.求和直到超过100
编写程序,计算从1开始递增的整数之和,直到和首次超过100时停止并输出当前的和以及累加了多少个数。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
int sum=0;//加和数
int i=1;//从1开始相加
while(sum<=100){
sum = sum + i;
i++;
}
printf("%d %d\n",sum,i);//105 15
return 0;
}
结果:
105 15
4.斐波那契数列
编写程序,输出斐波那契数列的前n项(斐波那契数列指数列中的每一项都是前两项的和,第一和第二项是1)。
斐波那契数列(Fibonacci sequence)是一个非常著名的数列,在数学、计算机科学以及自然界中都有广泛的应用。数列的前两个数字通常是0和1,之后的每一个数字都是前两个数字的和。数列的前几项如下:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
斐波那契数列可以用递归公式来定义:
F(n) = F(n-1) + F(n-2)
其中,F(0) = 0,F(1) = 1。
详细代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
int f[100];//定义数组用于储存斐波那契数列
f[0]=0;//初始化数列
f[1]=1;
int num=0;
printf("请输入想要查看的斐波那契位数:");
scanf("%d",&num);
for(int i=2;i<num+2;i++){//循环计算斐波那契数列
f[i]= f[i-1]+f[i-2];
printf("%d ",f[i-2]);
}
printf("\n");
return 0;
}
结果:
10
0 1 1 2 3 5 8 13 21 34
5.使用嵌套循环产生下列图案,要求用for嵌套循环
F
_FE
__FED
___FEDC
____FEDCB
_____FEDCBA
详细代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
for(int i=1;i<=6;i++){
for(int j=1;j<=i-1;j++){
printf("_");
}
for(int h=0;h<i;h++){
printf("%c",('F'-h));
}
printf("\n");
}
return 0;
}
结果:
F
_FE
__FED
___FEDC
____FEDCB
_____FEDCBA
6.猴子吃桃问题
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
详细代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
int peach = 1;
int day;
for(day=10;day>1;day--){
peach = (peach+1)*2;
}
printf("第一天猴子摘了:%d颗桃\n",peach);
return 0;
}
结果:
第一天猴子摘了:1534颗桃
7.逆序输出
编写程序,输入一个正整数 n,将其逆序输出,例如输入 12345,输出 54321。
详细代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char *argv[])
{
/*
*逆序输出:
*编写程序,输入一个正整数 n,
*将其逆序输出,例如输入 12345,输出 54321。
*/
int n;
scanf("%d",&n);
while(n>0){
printf("%d",n%10);//n%10将低位输出
n=n/10;//n/10将低位抹去
}
printf("\n");
return 0;
}
结果:
12345
54321