c 语言 输出1 -n位最大整数

/*
1.打印1到最大的n位数。
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。
比如:输入3,则打印出1、2、3一直到最大的3位数999.
[陷阱]:这个题目很容易想到的办法就是先求出最大的数。
然后循环输出就可以了。
*/

#include<stdio.h>//自己想到的方法,从a[0]-a[n]依次输出每一位,一次只输出某一位的某个数字

int main()
{
	int i = 0,j = 0,k = 0,input=3;//i为控制进位  j为每一位输出(个位,十位等)
	//k为循环进位,input 为最大输出数
	char a[] = "100000000";//模拟进位的储存器
	while (j < input)//判断是否结束
	{
		while (j >= 0)//控制输出某位
		{
			printf("%c",a[j]);//输出一位数字
			if (j == 0) //j==0时为个位 依次累加位数
			{
				if (a[j] == ‘9‘)//个位为9进位
				{
					for (k = 0; k < input;)//是否多次进位
					{
						if (a[k+1]<‘9‘)
						{
							a[k + 1]++;
							a[k] = ‘0‘;
							if (a[k + 1] == ‘1‘&&i<k+1)
								i++;//开辟新的位数
							break;
						}
						else
						{
							a[k] = ‘0‘;//个位制零
							k++;
						}
					}
				}
				else
					a[0]++;//个位自加
			}
			j--;//j 从高位 依次减少
		}
		printf(" "); //分割 每个数字
		j = i;//让j为现在的最高位 例如:9 之后 10  j=i=1;
	}
	return 0;
}

#include<stdio.h>
#include<string.h>
#include<assert.h>

int add_num(char *arr,int num,int end)//网上一般逻辑模拟数字累加程序(稍微不同)
{                                     //num  输出位数n  end  模拟空间最大值
	assert(arr);
	int is_carry = 0;//是否进位
	int is_over = 1;//是否超过与溢出
	int i = end-1;
	char *arr1 = arr;
	if (arr1[i] != 9)
	{
		arr1[i]++;
	}
	else
	{
		is_carry = 1;
		arr[i] = 0;
		while (1)
		{
			if (end-1 - (i - 1) >= num || i == 0)
			{
				printf("\n   ****  输出结束! ****\n");
				is_over = 0;
				return is_over;
			}
			if (arr1[--i] != 9)
			{
				arr1[i] += is_carry;
				is_carry = 0;
				break;
			}
			else
			{
				arr1[i] = 0;
			}
		}
	}
}

void show_num(char *arr,int num)//按位输出
{
	int is_high = 0;
	while (num>0)
	{
		if (*arr == 0&&is_high==0)
			arr++;
		else
		{
			printf("%d",(int)*arr++);
			is_high = 1;
		}
		num--;
	}
	printf(" ");
}
int main()
{
	char num[11] = { ‘\0‘ };
	while (add_num(num, 3,11))
	{

		show_num(num,11);
	}

	return 0;
}
时间: 2024-10-11 21:45:30

c 语言 输出1 -n位最大整数的相关文章

输入一个任意位数的的整数, 从个位开始输出每一位的数

题目要求: 输入一个任意位数的的整数, 从个位开始输出每一位的数,  每次输出的一位数可以用%10来取,然后通过把数除10去掉已输出的位 代码如下 #include <stdio.h> int main() { int number; scanf("%d",&number); while(number) { printf("%d ",number%10); number /= 10; } return 0; }

嵌入式linux C语言(一)——位运算的使用

嵌入式linux C语言(一)--位运算的使用 ARM是内存与IO统一编址,SoC中有很多控制寄存器,通过对这些寄存器进行位运算对这些控制寄存器进行设置,进而控制外设功能.在修改寄存器某些位的过程中不能修改其他的位. 一.位运算基础 C语言基本的位操作符有与.或.异或.取反.左移.右移六种位运算符.如下表所示: 符号 描述 运算规则 & 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位

已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。

描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示测试数据组数.接下来M行,每行包含一个测试数据. 输出 输出M行,每行为对应行的n-1位数(忽略前缀0).如果除了最高位外,其余位都为0,则输出0. 样例输入 4 1023 5923 923 1000 样例输出 23 923 23 0我的程序: #include<iostream>#include<vector>#include<cmat

给定两个32位的整数N和M,以及表示比特位置的i和j。编写一个方法,将M插入到N中, * 使得M从N的第j位开始,到第i位结束

1 /* 2 * 给定两个32位的整数N和M,以及表示比特位置的i和j.编写一个方法,将M插入到N中, 3 * 使得M从N的第j位开始,到第i位结束,假定从j位到i位足以容纳M,也即是M=10011 4 * 那么j和i之间至少可以容纳5个数,假如,不可能出现j=3,i=2的情况,因为第三位和第二位之间放不下M 5 * 例如 6 * N=1000000000(1024) 7 * M=10011(19) 8 * i=2,j=6,输出10001001100 9 * 思路如下: 10 * 1.将N中的从

给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。

1 package digitAddTogither; 2 3 /** 4 * Created by ZKY on 2017-08-15 01:00. 5 * 给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数. 6 * 样例 7 * 给出 num = 38. 8 * 相加的过程如下:3 + 8 = 11, 9 * 1 + 1 = 2. 10 * 因为 2 只剩下一个数字,所以返回 2. 11 */ 12 public class DoMain 13 { 14 /**

1.1编程基础之输入输出-05:输出保留12位小数的浮点数

05:输出保留12位小数的浮点数 总时间限制:  1000ms 内存限制:  65536kB 描述 读入一个双精度浮点数,保留12位小数,输出这个浮点数. 输入 只有一行,一个双精度浮点数. 输出 也只有一行,保留12位小数的浮点数. 样例输入 3.1415926535798932 样例输出 3.141592653580 #include<stdio.h> int main() { double i; scanf("%lf",&i); printf("%.

1.1编程基础之输入输出-04:输出保留3位小数的浮点数

04:输出保留3位小数的浮点数 #include<stdio.h> int main() { float i; scanf("%f",&i); printf("%.3f",i); return 0; } 总时间限制:  1000ms 内存限制:  65536kB 描述 读入一个单精度浮点数,保留3位小数输出这个浮点数. 输入 只有一行,一个单精度浮点数. 输出 也只有一行,读入的单精度浮点数. 样例输入 12.34521 样例输出 12.345

05:输出保留12位小数的浮点数

05:输出保留12位小数的浮点数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 读入一个双精度浮点数,保留12位小数,输出这个浮点数. 输入 只有一行,一个双精度浮点数. 输出 也只有一行,保留12位小数的浮点数. 样例输入 3.1415926535798932 样例输出 3.141592653580 来源 习题(2-3) 查看 提交 统计 提问 1 #include<cstdio> 2 #include<iostream> 3 usin

C语言输出单个汉字字符

1 #include "stdio.h" 2 #include "windows.h" 3 4 int main() 5 { 6 char sText[20] = { "多字节字符串!OK!" }; 7 DWORD dwNum = MultiByteToWideChar(CP_ACP, 0, sText, -1, NULL, 0); 8 printf("dwNum = %d", dwNum); 9 for (int i = 0