7.23练习

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值