C语言 NOI 1.5 编程基础之循环控制 (25~30)

25:求特殊自然数

描述
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示。

输入
无。
输出
三行:
第一行是此自然数的十进制表示;
第二行是此自然数的七进制表示;
第三行是此自然数的九进制表示。
样例输入
(无)
样例输出
(不提供)

#include <stdio.h>
int main()
 {
    int x,y,z;
    int xyz,zyx;
      for(x=1;x<7;x++)
      {
         for(y=0;y<7;y++)
         {
             for(z=1;z<7;z++)
             {
                 xyz=x*7*7+y*7+z;
                 zyx=z*9*9+y*9+x;
                 if(xyz==zyx)
                 {
                     printf("%d\n%d%d%d\n%d%d%d\n",xyz,x,y,z,z,y,x);
                 }
             }
         }
     }
     return 0;
 }

26:统计满足条件的4位数个数

描述
给定若干个四位数,求出其中满足以下条件的数的个数:

个位数上的数字减去千位数上的数字,再减去百位数上的数字, 再减去十位数上的数字的结果大于零。

输入
输入为两行,第一行为四位数的个数n,第二行为n个的四位数,数与数之间以一个空格分开。(n <= 100)
输出
输出为一行,包含一个整数,表示满足条件的四位数的个数。
样例输入
5
1234 1349 6119 2123 5017
样例输出
3

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

27:级数求和

描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。

现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

输入
一个整数K。
输出
一个整数n。
样例输入
1
样例输出
2

#include <stdio.h>
int main()
{
    int k, n = 1;
    double Sn=0;
    scanf("%d", &k);
    while (Sn <= k) {
        Sn += 1.0 / n;  
        n++;
    }
    printf("%d", n-1 );
    return 0;
}

28:分离整数的各个数位

描述
给定一个整数,要求从个位开始分离出它的每一位数字。

输入
输入一个整数,整数在1到100000000之间。
输出
从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。
样例输入
123
样例输出
3 2 1

#include <stdio.h>
int main()
{
    long int n;
    scanf("%d",&n);
    while(n!=0)
    {
    	printf("%d ",n%10);
    	n/=10;
	}
	return 0;
}

29:数字反转

描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

输入
输入共 1 行,一个整数N。

-1,000,000,000 ≤ N≤ 1,000,000,000。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123

样例 #2:
-380
样例输出
样例 #1:
321

样例 #2:
-83

#include<stdio.h>
int main() 
{ 
   int x,y;
   scanf("%d",&x);
    y=0;
    while ( x!=0 )  
    { 
    y*=10;
    y+=x%10;
	x/=10;
    }
   printf("%d\n",y);
   return 0;
}

30:含K个3的数

描述
输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。

例如,输入:
43833 3
满足条件,输出YES。

如果输入:
39331 3
尽管有3个3,但不能被19整除,也不满足条件,应输出NO。

输入
m 和 k 的值,中间用单个空格间隔。
输出
满足条件时输出 YES,不满足时输出 NO。
样例输入
43833 3
样例输出
YES

#include<stdio.h>

int main() {

int m, k, num;

num = 0; //num用于存放k的个数

scanf("%d %d", &m, &k);

if (m % 19 == 0) {

while (m) {

if (m % 10 == 3) num++; //判断最后一位数是否为3,并记录3的个数

m = m / 10; //不断去除最后一位数字,并循环判断3的个数;

}

if (k == num) //当num=k时,则证明输入的数中含k个3

printf("YES");

else

printf("NO");

} else

printf("NO");

return 0;

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值