7.23作业

一、1. 寻找有除1和其本身的因数的数

  1. 判断因数的和是否等于其本身
  2. 若判断成立,则输出这个数
#include <stdio.h>
#include <string.h>
#define SWAP(x,y) {int temp;temp = x;x = y;y = temp;}
int main(int argc, const char *argv[])
{
	int i,j;
	int sum;
	for(i=4;i<=1000;i++)
	{
		sum=0;
		for(j=1;j<i;j++)
		{
			if(i%j==0)
			{
				sum=sum+j;
			}
		}
		if(sum==i)
		{
			printf("%d\n",i);
		}
	}
	return 0;
}

二、1. 观察规律,金字塔顶为1颗*下一层为3*,以下依次为5*、7*,可以看出星星规律为2n-1。

  1. 又发现,一至三行都有$补齐
  2. 先用一个for循环打印数列的*,再嵌入一个for循环用2n-1控制打印每行*的数量
  3. 最后,用$给金字塔补齐,在打印行的*之前,并列一个for循环,打印$
  4. 打印$发现无法控制数量,补上参数k,通过k与j(列数)的关系,控制$的每列补齐数量
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(int argc, const char *argv[])
{
	int i=1;
	int j=1;
	int k=0;
	int m=0;
	int c=4;
	for(j=1;j<=c;j++)
	{
		for(m=0;m<c-j;m++)
		{
			printf("$ ");
		}
		k=2*j-1;
		for(i=1;i<=k;i++)
		{
			printf("* ");
		}
		printf("\n");
	}
	
	return 0;
}

三、1. 题干有明显提示“直到”,明确知道要用循环中的do-while结构

  1. 循环结束条件为和超过100,即while(sum<=100)
  2. 循环体中用sum对i累加,用j记次
  3. 输出sum和

#include <stdio.h>
#include <string.h>

int main(int argc, const char *argv[])
{
	int i=1;
	int j=0;
	int sum=0;
	do
	{
		sum+=i;
		i++;
		j++;
	}while(sum<=100);
	printf("当前的和为%d,当前累加个数为 %d\n",sum,j);
	return 0;
} 

四、1. 需要输出第n项,需要scanf输入

  1. 斐波那契数列规律是后一项等于前两项的和,所以设sum为后一项,a,b为前两项(泛指,不确定位置),则有关系sum=a+b
  2. 将sum放入for循环中,从1循环到n,每循环一次,输出一次sum
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	int n;
	int a=0;
	int b=1;
	int i;
	int sum;
	printf("输出斐波那契数列的前  项");
	scanf("%d",&n);
	if(n==1)
	{
		printf("%d\n",a+b);
	}
	for(i=1;i<=n;i++) 
	{
		sum=a+b;
		a=b;
		b=sum;
		printf("%d\n",sum);
	}
	return 0;
}

五、1. 已知用for循环嵌套循环

  1. 字母部分为ascii码递减,下划线部分为依次增加一个
  2. 并排输出下划线和字母,将两个for循环并行嵌入大的for循环即可
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	int i,j,k;
	char m;
	for(i=1;i<=6;i++)
	{
  		m = 70;
		for(j=1;j<=i-1;j++)
		{
			printf("_");
		}
		for(k=1;k<=i;k++)
		{
			printf("%c",m);
			m=m-1;
		}
		printf("\n");
	}
	return 0;
}


六、1. 猴子每天都吃一半零1个,可以通过倒推循环,计算第一天摘了几个桃子

  1. 第十天只剩一个说明第十天没吃,一共经历9次循环
  2. 总数sum=2*(sum+1),循环九次即可得到答案
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	int i;
	int num;
	num = 1;
	for(i=9;i>=1;i--)
	{
		num=num+1;
		num=2*num;
	}
	printf("%d\n",num);
	return 0;
}

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值