习题5 循环-提升

1、判断回文数

【问题描述】

有这样一类数,它们顺着看和倒着看是相同的数,例如:121、656、2332等,这样的数字叫做回文数字。编写一个程序,判断从键盘输入的数字是否为回文数字。 提示:可以通过将一个十进制数“倒置”的办法来判断它是否是回文数。所谓倒置,就是计算该十进制数倒过来后的结果。如123->321,因为123不等于321,所以不是回文数;121->121,倒置后相同,所以是回文数。

【输入形式】

一个十进制整数
【输出形式】

判断该数是否为回文数的结果
【样例输入】

121

【样例输出】

121 is palindrome number

【样例说明】

第2组测试样例

输入:123

输出:123 is not palindrome number

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int x,y,z,a=0;
	scanf("%d",&x);
	y=x;
	while(x!=0)
	{
		z=x%10;
		a=a*10+z;
		x=x/10;
	}
	if(y==a)
	{
		printf("%d is palindrome number\n",y);
	}
	else
	{
		printf("%d is not palindrome number\n",y);
	}
	return 0;
}

2、寻找满足条件的数

【问题描述】

编写程序找出m到n之间所有整数中满足如下条件的数:该数的高端两位数字的和与低端两位数字的和值相等,如1001, 1120。程序能输出所有满足条件的数以及它们的总个数。
【输入形式】

m和n的值,m和n均为4四位整数,并且m<n。
【输出形式】

两行,第一行:找到的所有满足条件的数,第二行:找到的数据个数。
【样例输入】

1000 1100

【样例输出】

1001 1010

2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int m,n,a,b,c,d,i,sum=0;
	scanf("%d %d",&m,&n);
	for(i=m;i<=n;i++)
	{
		a=i%10;
		b=i/10%10;
		c=i/100%10;
		d=i/1000%10;
		if(a+b==c+d)
		{
			sum++;
			printf("%d ",i);
		}
	}
	printf("\n");
	printf("%d\n",sum);
	return 0;
}

3、细菌繁殖

【问题描述】

编程求解问题:有一种细菌,从其产生的第4分钟后,每分钟都产生一个同种细菌。若某初始时刻仅有一个这种细菌,那么此后第n分钟时共有多少种这种细菌? 

提示:

初始时刻(第t=0分钟),a(0)=1, b(0)=c(0)=d(0)=0

细菌总数为s(0)=a(0)+b(0)+c(0)+d(0)=1。

下一时刻  d(t+1)=c(t)+d(t)    

       c(t+1)=b(t)   

       b(t+1)=a(t)

       a(t+1)=d(t)(即迭代关系)
【输入形式】

输入正整数n
【输出形式】

输出n+1个数,表示从开始时刻(第0分钟)到第n分钟(共n+1个时刻),每个时刻所产生的细菌数的总数,数据之间用一个空格隔开
【样例输入】

10
【样例输出】

1 1 1 1 2 3 4 5 7 10 14

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int a=1,b=0,c=0,d=0,s=1,n,t,i;
	scanf("%d",&n);
	for(t=0;t<=n;t++)
	{
		printf("%d ",s);
		i=d;
		d=c+d; 
		c=b;
		b=a;
		a=i;
		s=a+b+c+d;
	}
	printf("\n");
	return 0;
}

4、求6整数中非0偶数的积

【问题描述】

输入6个整数,求其中非0的偶数积。(用循环完成) 

说明:假设输入的6个数中至少有一个是非0的偶数。
【输入形式】

输入数据为6个整数

【输出形式】

输出偶数的积
【样例输入】

13 12 2 0 3 1

【样例输出】

24

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int i;
	int a[6],s=1;
	for(i=0;i<6;i++)
	{
	scanf("%d",&a[i]);
	}
	for(i=0;i<6;i++)
	{
	if(a[i]%2==0&&a[i]!=0)
	{
		s*=a[i];
	}
	}
	printf("%d\n",s);
	return 0;
}

5、求2+22+222+...

【问题描述】

求Sn=a+aa+aaa+...+a...a(n个a)之值,其中a是一个数字,n表示a的个数
【输入形式】

例如2+22+222,此时n=3,a=2,因此在输入时只需输入:2 3 注意:a的值是0~9
【输出形式】

输出Sn的值
【样例输入】

2 3
【样例输出】

246

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int a,b,n,i,Sn=0;
	scanf("%d %d",&a,&n);
	b=a;
	for(i=1;i<=n;i++)
	{
		Sn+=a;
		a=a*10+b;
	}
	printf("%d\n",Sn);
	return 0;
}

6、求奇数的乘积

【问题描述】

给你n个整数,求他们中所有奇数的乘积
【输入形式】

每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数
【输出形式】

输出每组数中的所有奇数的乘积,对于测试实例,输出一行
【样例输入】

3 1 2 3

【样例输出】

3

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int a[10],i,n,m=1;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=0;i<n;i++)
	{
		if(a[i]%2!=0)
		{
			m*=a[i];
		}
	}
	printf("%d\n",m);
	return 0;
}

7、下落的球

【问题描述】一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算球在第5次落地时,共经过多少米? 第5次反弹多高?
【输入形式】

整数h0,表示球最开始的高度
【输出形式】

两个数据s和h,分别表示第5次落地时共经过s米,第5次反弹高度为h米,s和h用空格隔开。(按样例保留相应的小数位数)
【样例输入】

10

【样例输出】

28.75 0.3125

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int h0,i;
	double s=0,h,h1;
	scanf("%d",&h0);
	h1=h0;
	for(i=2;i<=5;i++)
	{
		s+=h1;
		h1=h1/2.0;
	}
	h=h1/2.0;
	s+=h0;
	printf("%.2f %.4f\n",s,h);
	return 0;
}

8、输出加1秒后的新时间

【问题描述】

输入一个时间,时间格式为:小时:分:秒,要求加一秒后,输出新的时间。(24小时制)
【输入形式】

输入数据含3个整数,分别表示小时、分、秒。数据之间用“:”分隔(英文冒号)
【输出形式】

在一行上输出加1秒后的新时间。每个数据占2位,不足2位,在数据左边补0。
【样例输入】

5:38:59

【样例输出】

05:39:00

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int a,b,c;
	scanf("%d:%d:%d",&a,&b,&c);
	c+=1;
	if(c==60)
	{
		c=0;
		b++;
		if(b==60)
		{
			b=0;
			a++;
			if(a==24)
			{
				a=0;
				b=0;
				c=0;
			}
		}
	}
	printf("%02d:%02d:%02d\n",a,b,c);
	return 0;
}

9、打印三角形

【问题描述】打印三角形,输入n的值,输出对应形状的三角形
【输入形式】输入一个整数N(2<N<20)
【输出形式】输出对应形状的三角形
【样例输入】3
【样例输出】

  *
 ***
*****
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int N,i,j,a;
	scanf("%d",&N);
	for(i=1;i<=N;i++)
	{	
		for(a=N;a>i;a--)
		{
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++)
		{
			printf("*");
		}
		
		printf("\n");
	}
	printf("\n");
	return 0;
}

10、求n的最大值

【问题描述】

编写程序求出下式中n的最大值:22+42+62+…+n2<m。式子左边是求和的过程,每个加数的十位数是从2开始,偶数递增的,个位数固定为2。m由用户输入。
【输入形式】

m的值(输入的m是一个大于22的值)
【输出形式】

满足条件的n的最大值
【样例输入】

150

【样例输出】

6

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
	int m,n,s=0,a=22;
	scanf("%d",&m);
	while(1)
	{
		s+=a;
		if(s>m)
		{
			break;
		}
		a+=20;
	}
	n=(a-20)/10;
	printf("%d\n",n);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺❀氯ྀൢ躅ྀൢ❀༻꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值