C语言-习题5循环2

1. (10分) n的最大值

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

输入描述
m的值(输入的m是一个大于22的值)

输出描述
满足条件的n的最大值。

输入样例
150

输出样例
6

用户代码

#include<stdio.h>
int main()
{
int m,n=0,sum=0;
scanf("%d",&m);
while(sum<m)
{
n=n+2;
sum=sum+n*10+2;
}
printf("%d",n-2);
  

    return 0;
}

2. (10分) 寻找满足条件的数

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

输入描述
m和n的值,m和n均为4四位整数,并且m<n。

输出描述
两行,第一行为找到的所有满足条件的数,第二行为找到的数据个数。

输入样例
1000 1100

输出样例
1001 1010
2

用户代码

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

3. (10分) 细菌繁殖

题目描述
编程求解问题:有一种细菌,从其产生的第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

用户代码

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

4. (10分) 求6整数中非0偶数的积

题目描述
输入6个整数,求其中非0的偶数积。(用循环完成)
说明:假设输入的6个数中至少有一个是非0的偶数。

输入描述
输入数据为6个整数

输出描述
在一行上输出偶数积。

输入样例
13 12 2 0 3 1

输出样例
24

用户代码

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

5. (10分) 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

用户代码


#include<stdio.h>
#include<math.h>
int main()
{
  int a,t,n,s=0,i;
  scanf("%d%d",&a,&n);
  t=a;
  for(i=1;i<=n;i++)
  {  if(i>=2)
	  a=a+t*pow(10,(double)i-1);
	  s=s+a;	 
  }
  printf("%d",s);
	return 0;
}

6. (10分) 求奇数的乘积

题目描述
给你n个整数,求他们中所有奇数的乘积。

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

输出描述
输出每组数中的所有奇数的乘积,对于测试实例,输出一行。

输入样例
3 1 2 3

输出样例
3

用户代码

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

7. (10分) 下落的球

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

输入描述
整数h0,表示球最开始的高度。

输出描述
两个数据s和h,分别表示第5次落地时共经过s米,第5次反弹高度为h米,s和h用空格隔开。

输入样例
10

输出样例
28.75 0.3125

用户代码

#include<stdio.h>
int main()
{
    double a,s,h,i;
	scanf("%lf",&a);
	s=a;
	for(i=1;i<=4;i++)
	{
		a=a/2;
		s=s+a*2;
	}
	h=a/2;
	printf("%.2f %.4f",s,h);
	return 0;
}

8. (10分) 输出加1秒后的新时间

题目描述
输入一个时间,时间格式为:小时:分:秒,要求加一秒后,输出新的时间。

输入描述
输入数据含3个整数,分别表示小时、分、秒。数据之间用“:”分隔

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

输入样例
5:38:59

输出样例
05:39:00

用户代码

#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d:%d:%d",&a,&b,&c);
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",a,b,c);
	return 0;
}

9. (10分) 打印三角形

题目描述
打印三角形,输入n的值,输出对应形状的三角形

输入描述
输入一个整数N(2<N<20)

输出描述
输出对应形状的三角形

输入样例
3

输出样例
//本行不输出,为控制题目样例输出格式用
*



用户代码


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

10. (10分) 判断回文数字

题目描述
有这样一类数,它们顺着看和倒着看是相同的数,例如:121、656、2332等,这样的数字叫做回文数字。编写一个程序,判断从键盘输入的数字是否为回文数字。

提示:可能通过将一个十进制数“倒置”的办法来判断它是否是回文数字。所谓倒置,就是计算该十进制数倒过来后的结果。如123->321,因为123不等于321,所以不是回文数;121->121,倒置后相同,所以是回文数。

输入描述
一个十进制整数

输出描述
判断该数是否为回文数字的结果

输入样例
121
123

输出样例
121是回文数
123不是回文数

用户代码


#include<stdio.h>
int main()
{int a,b,c;
 scanf("%d",&a);
 b=0;
 c=a;
while(a!=0)
	{
b=b*10+a%10,
a=a/10;}
if (b==c)
	printf("%d是回文数",c);
else
printf("%d不是回文数",c);
 return 0;
}

发布了37 篇原创文章 · 获赞 10 · 访问量 745

猜你喜欢

转载自blog.csdn.net/qq_43608850/article/details/104320605
今日推荐