嵌入式学习第五天(强化练习)

1.猴子吃桃问题

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

for(day=1;day<10;day++)  //为主要代码,定义未写出          
{
		n=(n+1)*2;  //输出n即可
}

2.输入年月,判断这个月有多少天

思路:先判断输入的月份是否为2月,,再判断年份是否为闰年和平年,然后判断大小年

if(month==2)  //month为输入的月份
	{
			if(age%4==0 && age%100!=0 || age%400==0)  //age为输入的年
				printf("该月有28天");
			else
				printf("该月有29天");
	}
	else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
				printf("该月有31天");
		else
				printf("该月有30天");

3.兔子繁衍问题 

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

思路:第一第二个月兔子对数都为1,从第三个月开始依次为 2  3  5  8......后一个数等于前两个数相加,因此可得:

#include <stdio.h>
int main(void)
{
	int i =0,n,item=0,n1=1,n2=1;
	scanf("%d",&n);
	if(n==1 || n==2) //兔子第一第二个月都为1对 
		item=1;
		
	for(i=3;i<=n;i++)
	{
		item=n1+n2; 
		printf("第%d个月: %d\n",i,item);
		n2=n1;
		n1=item;
	}	
		
	return 0;
}

 输出结果:

4.百钱白鸡问题

我有1000块钱我想买100只鸡,市场上公鸡50块一只,母鸡30块一只,小鸡10块钱3只,问题我该如何去购买?列出所有购买方案--------利用穷举法


int m,g,x,n=1;
	 for(m=0; m<=33;m++){
 		
 		
 		for(g=0; g<=20;g++){
		 	
		 	x=100-m-g;
		 	if((g*50 + m*30 + x/3*10) == 1000 && x%3==0)
		 	{	
		 		printf("方案%d:\n" ,n);
	 			printf("母鸡数量为:%d\n",m);
	 			printf("公鸡数量为:%d\n",g);
	 			printf("小鸡数量为:%d\n",x);
	 			printf("\n");
	 			n++;
	 		}
		 }
 	}

输出结果: 有68种方案

5.下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出

    int i;  //1-1/2+1/3-1/4+……+1/99-1/100
	double sum = 0.0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 0)
			sum -= 1.0 / i;
		else
			sum += 1.0 / i;
			
	}
	printf("%lf", sum);

6.求1!+2!+3!+……+10!

int i,j,sum=0,num=0;  //1!+2!+3!+……+10!  1x1 1x1x2 1x1x2x3
	
	for(i=1;i<=10;i++){
		
		num=1;
		for(j=1;j<=i;j++){
			num*=j;	
		}
		sum+=num;
	}
	printf("%d\n",sum);

7.水仙花问题

打印出100~999之间的所有水仙花数。水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)

	for(i=100;i<=999;i++)
	{
		x=i/100;
		y=i/10%10;
		z=i%10;
		if((x*x*x+y*y*y+z*z*z)==i)
			printf("%d\n",i);
	}

 8.打印菱形

//打印菱形,没有空格版
#include <stdio.h>
int main()
{
	int n = 0,i,j;
	scanf("%d", &n);
	//打印上半部分 n
	for (i = 0; i < n; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j < n - 1 - i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	//打印下半部分 n-1
	for (i = 0; i < n - 1; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

9.打印金字塔

#include <stdio.h>
int main(void)
{
	int i,j,a,n;  // 层数控制  空格打印
	printf("请输入层数:");
	scanf("%d",&a);
	
	for(i=1;i<=a;i++)
	{
		for(j=0;j<a-i;j++)
		{
			printf(" ");	
		}
		for(n=1;n<=i;n++){
			printf(" *");
		}
		printf("\n");
	
	}
	 
	return 0;
}

输出结果:

9.打印杨辉三角

思考:三角形的两边都是 1 ,每一行的数的个数等于该行行数。(从第三行开始)被两边的 1 包围着的数据中,每个数等于它上一行前一列的数和上一行本列数之和

#include <stdio.h>
int main()
{
    int i, j, n, k, t; 
	long Buf[21]={0,1};    //用于保存一行数据
	printf("请输入杨辉三角形的行数(1 ~ 20):");
	scanf("%d",&n);
    for( i = 1; i <= n; i++)	//输出n行
    {
		for( j = 0; j < n - i; j++)	//每行前面补空格,形成等腰三角图案	
			printf("   ");
		t = 0;
        for( j = 1; j <= i; j++)//计算并输出杨辉三角形
        {
			k = Buf[j];
			Buf[j] = t + k;		//每个数是上面两数之和(三角计算)
			t = k;
            printf("%6d", Buf[j]);	
        }
        printf("\n");
    }
	return 0;
}

打印结果:

 10.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是小写字母,则把它变成大写字母;其它字符不变

char a;
	printf("请输入一个字符:"); 
	scanf("%c",&a);
	if(a >= 65 && a <=90)  // a~z  ASCII值
		printf("%c\n",a+32);
	else if(a >=97 && a <= 122)  //A~Z
			printf("%c\n",a-32);
	else
		printf("%c\n",a);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值