关于循环语句的作业

(1.求1000以内的完数)

1.求 1-----1000以内的完数 示例: 28 1 +4 +7 +14 +2 =28 完数:完美的数 除去本身以外的因子和等于本身 6 1+2+3 = 6

代码演示:

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])

{
    int a,b,sum;
//对变量进行定义,a为被除数,b为除数,sum为其除本身外所有因子的和
    for(a=2;a<1000;a++)
    {
    sum = 0;
//换被除数时,对sum进行格式化处理,以便能正确计算后续值
        for(b=1;b<a;b++)
        {
            if (a%b==0)//判断其因数是哪些
            {
                sum+=b;//对因数进行累加求和
            }
        }
        if(sum==a)//判断其是否是完数(出去本身外的因子之和等于本身)
            printf("%d\n",a);//满足则输出数数

    }
    printf(" \n ");
    return 0;
}

求质数等可以类比求。
结果:ubuntu@ubuntu:assignment$ gcc z1.c 
ubuntu@ubuntu:assignment$ ./a.out
6
28
496
 

2.

2.打印奇数金字塔

& & & *

& & * * *

& * * * * *

* * * * * * *

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])

{
	int a,m=1,n=1;//a为输入的行数
	scanf("%d",&a);
	for(int i=1;i<=a;i++)
	{
		for(int c=a-1;c>=i;c--)
		{
			printf("& ");
		}
		for(int d=1;d<=(2*i-1);d++)
		{
			printf("* ");
		//	n=n+2;

		}
		printf("\n\n");
}	
	printf("\n");
}
结果:
 ubuntu@ubuntu:assignment$ gcc z2.c 
ubuntu@ubuntu:assignment$ ./a.out
4
& & & * 

& & * * * 

& * * * * * 

* * * * * * * 

 

3.3.求和直到超过100:

编写程序,计算从1开始递增的整数之和,直到和首次超过100时停止并输出当前的和以及累加了多少个数。

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])

{
	int a=1,b=0,sum=0;
	while(sum<=100)
	{
		sum=sum+a;
		a++;
		b+=1;
	}
	printf("%d %d\n",sum,b);
	return 0;
}
结果:
ubuntu@ubuntu:assignment$ gcc z3.c 
ubuntu@ubuntu:assignment$ ./a.out
105 14

4.斐波那契数列: 编写程序,输出斐波那契数列的前n项(斐波那契数列指数列中的每一项都是前两项的和,第一和第二项是1)

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])

{
	int  a,b=1,c=1;
	printf("请输入你想要的斐波那契数列多少项\n");
	scanf("%d",&a);
	if(a==1)
	{

		printf("%d\t",b);
	}
	else if (a==2)
	{
		printf("%d\t",b);
		printf("%d\t",c);
	}
	else if (a>=3&&a%2==0)
	{
		printf("%d\t",b);
		printf("%d\t",c);

		for(int i=1;i<=a/2-1;i++)
		{
			b=b+c;
			printf("%d\t",b);
			c=c+b;
			printf("%d\t",c);
		} 
	}
	else if (a>=3&&a%2==1)
	{
		int e=0;
		printf("%d\t",b);
		

		for(int i=1;i<a;i++)
		{

			printf("%d\t",c);
			e=b+c;
			b=c;
			c=e;
		} 
	}
	else 
	{
		printf("你的输入有误");
	}

	return 0;
}

结果:
ubuntu@ubuntu:assignment$ gcc z4.c 
ubuntu@ubuntu:assignment$ ./a.out
请输入你想要的斐波那契数列多少项
6
1	1	2	3	5	8	

请输入你想要的斐波那契数列多少项
10
1	1	2	3	5	8	13	21	34	55	
ubuntu@ubuntu:assignment$ gcc z4.c 
ubuntu@ubuntu:assignment$ ./a.out
请输入你想要的斐波那契数列多少项
17
1	1	2	3	5	8	13	21	34	55	89	144	233	377	610	987	1597	

 5.使用嵌套循环产生下列图案,要求用for嵌套循环

F

_FE

__FED

___FEDC

____FEDCB

_____FEDCBA

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])

{
	int a,b,c;
	for ( a=0;a<=5;a++)
	{

		int d='F';

		for ( b=1;b<=a;b++)
		{
			printf("_");
		}
		for ( c=0;c<=a;c++)
		{
			printf("%c",d);
			d=d-1;
		}
		printf("\n");
	}
	printf("\n");
	return 0;
}
结果:
ubuntu@ubuntu:assignment$ gcc z5.c 
ubuntu@ubuntu:assignment$ ./a.out
F
_FE
__FED
___FEDC
____FEDCB
_____FEDCBA

6.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少

#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])

{
	int a,b=1;
		for (a=1;a<10;a++)
		{
			b=(b+1)*2;
		}
	printf("%d\n",b);
	return 0;
}
结果:
ubuntu@ubuntu:assignment$ gcc z6.c 
ubuntu@ubuntu:assignment$ ./a.out
1534

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值