给定一段正整数范围,统计9(或者1~9任意一个数)的个数

问题描述:

给定一段正整数的范围,统计其中某个数(1~9)的范围

大部分人的代码如下:

/*
*********************************************
编写程序数一下1到100的所有整数中出现多少次数字9
*****************************************
*/
#include<stdio.h>

int main()
{
	int count = 0;

	for(int i = 0; i <= 100; i++)
	{
		if((i % 10) == 9 || (i / 10) == 9) //前者判断个位是否等于9,后者判断十位是否等于9
		{
			printf("%d\n",i);
			count++;
		}
	}
	printf("%d\n",count);
	return 0;
}

结果是正确,可是如果给定范围是1~1000,说夸张一点1~100亿,你得“||”上多少条件

那该怎么解决呢?

下面的代码边解决了这个问题:

#include<stdio.h>

int main()
{
	int i;          //循环因子
	int n;          //将i的值赋给n,对n的操作不会改变i的值,因为如果该数值含有9得将其打印出来
	int count = 0;  //统计个数

	for(i=1;i<=10000;++i)      //此处的10000可根据需要指定
	{
		n = i;               //将i的值赋给n,对n的操作不会改变i的值
		while(n)
		{
			if(n%10 == 9)    //首先判断n的个位是否含有9,
			{
				count++;     //如果有,count++,并打印该数值,退出循环
				printf("%d\n",i);
				n = 0;       //count已经+1不必再判断,任务完成,退出循环
			}
			else
			{
				n = n/10;   //上一位非9,所以判断下一位(依次判断个位,十位,百位。。。)
			}
		}
	}
	printf("the total number of 9 is %d\n",count);
	return 0;
}

时间: 2024-10-14 00:45:43

给定一段正整数范围,统计9(或者1~9任意一个数)的个数的相关文章

给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。

ccf认证考试2013年12月第一题 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10

c语言代码编程题汇总 :统计字符串中的大写和小写字母的个数

统计字符串中的大写和小写字母的个数 程序代码如下: 1 /* 2 2017年3月6日19:42:21 3 功能:统计字符串中的大写和小写字母的个数 4 */ 5 6 #include "stdio.h" 7 void fun (char *,int *,int *); 8 9 int main (void) 10 { 11 int m = 0,n = 0; 12 int *Pm = &m, *Pn = &n; 13 char s[100]; 14 printf (&qu

C语言K&R习题系列——统计文档中每个单词所占字母个数,以直方图形式输出

原题: Write a program to print a histogram of the lengths of words in its input. It is easy to draw the histogram with the bars horizontal; a vertical orientation is more challenging. 这也是我第一个过百行的代码(带注释,空格什么的) 主要分两个部分:输入和输出 #include < stdio.h > #define

统计整型数据二进制形式中1的个数

统计整型数据二进制形式中1的个数可以通过如下方式达到: int cnt1bits(int x) { int count = 0; while (x) { ++count; x = x & (x - 1); } return count; }

给定正整数N,统计1-N的连续整数中1的个数

int CountNumOf1(int digital){int num = 0;while(digital){num += (digital % 10 == 1) ? 1: 0;digital /= 10;}return num;}int CountTotalNumOf1(int N){int sum=0;printf("前N个连续数是:\n");for(int i=1;i<=N;++i){printf("%d ",i);sum += CountNumOf1

段的性能统计信息v$segment_statistics

v$segment_statistics视图记录了段的统计信息 简单的几个字段就不说了,就说最后三个吧 STATISTIC_NAME,STATISTIC#,VALUE记录了发生在表上的操作 SYS @testdb> select object_name,STATISTIC_NAME,STATISTIC#,VALUE from v$segment_statistics where object_name='OBJECT_TEST'; 具体记录多长时间的?      value值的意义:比如logi

给定地址段为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为____到____

此题解题背景默认为8080型CPU,地址总线为16根.(8080-16,8086-20,8088-20,80286-24,80386-32) 16根地址总线寻址能力:(2 ** 16) / 1024 = 65536(B) = 64(KB), 可以表示的存储单元个数为 0 ~ 2^n-1 个, 即 0 ~ 65535. 这里的 65535 为十进制数,转换为十六进制数为 0xffff (或 ffffH),具体转换方法可以用 Python3 函数 hex(65535). 再来看CPU内存单元物理地址

给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成. Output 对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和.你可以认为32位整数足以保存结果. 思路:从小到大,每个遍历判断奇偶,进行乘和加,其中注意判断大小 #include <stdio.h>#include <stdlib.h> int main(){int a,b,i,t,c,d;while(~scanf("%d%d

统计字符串中数字,字母,空格的个数

这是C语言课后的一道习题,网上可以找到很多相关的代码,都可以很好的基本完成题目要求 但是,我发现很多的代码都无法实现统计字符串中大于10的数字(只局限于统计0-9之间的数字) 此程序可以改进具有十位,百位,千位,甚至更大的数字的统计: #include<stdio.h> int main() { char a[50] ="1 2 3 a b c d @ 15 21 19 88 r 78 100 189 1598 46"; int i,j; int d = 0, c = 0,