一个整形十进制数值存放在数组中的形式

本文介绍了一个简单的C++程序,该程序将用户输入的一个整数分解成各个位数,并将其逆序存储到数组中,最后再逆序输出,展示整数各数字位的数组形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下为代码

#include "stdafx.h"
#include<iostream>
using namespace std;
#define SIZE 1000
void main()
{
	int A;
	void InterPutInAarry(int N);
	cout<<"请输入整数A:";
	cin>>A;
	InterPutInAarry(A);
}

void InterPutInAarry(int N)
{
	int Integer;
	int tempvalue;
	int i=0,j,m,size;
	int tempArray[SIZE];
	Integer=N;
	/*
	将个位放在数组第一位,十位放在数组第二位……
	原数据为123456,经while循环变成了654321
	*/
	while(Integer!=0)//
	{
		tempArray[i]=Integer%10;
		Integer=Integer/10;
		i++;
	}
	/*
     将数组中的元素再逆序排列,即654321变成123456
	*/
	size=i;
	m=(size-1)/2;
	for(i=0;i<=m;i++)
	{
	  j=size-i-1;
      tempvalue=tempArray[i];
	  tempArray[i]=tempArray[j];
	  tempArray[j]=tempvalue;
	}
	printf("整数A在数组中存放的形式为:{");
	for(i=0;i<size;i++)
	 {   
		 if(i!=size-1)
		   printf("%d,",tempArray[i]);
		 else
		   printf("%d",tempArray[i]);
	}
	printf("}");
	printf("\n");
}

运行结果如下:


### 编译器中数组初始化与填充的实现方法 在 C 语言中,编译器处理数组初始化的方式依赖于标准的支持以及具体的语法特性。以下是关于如何通过编译器实现数组初始化和填充的具体分析: #### 数组初始化的标准支持 C99 标准引入了更灵活的数组初始化方式,允许开发者指定任意索引位置进行初始化[^1]。这种设计使得程序员可以更加自由地控制哪些元素被显式赋值,其余未初始化的部分则由编译器自动设置为零。 例如,在以下代码片段中: ```c int a[100] = { [10] = 1, [30] = 2 }; ``` 这里仅指定了第 `10` 和第 `30` 的两个元素分别为 `1` 和 `2`,其他所有剩余元素会被隐式初始化为 `0`。 #### 初始化过程中的内存分配机制 当定义一个局部数组时,如果该数组没有完全初始化,则其存储空间通常位于栈上。对于静态变量或者全局变量而言,默认情况下它们会存放在程序的数据段 (Data Segment),其中未明确赋予初值的部分也会被清零[^2]。 具体来说,现代编译器一般采用如下策略来完成这一操作: - **常量传播优化**: 如果某些初始值在整个函数执行期间都不会改变,那么这些值可能会直接嵌入到目标机器码里作为立即数使用。 - **运行时库调用**: 对于较大的数据结构(比如非常大的数组),可能无法简单地将其硬编码至指令序列之中;这时就需要借助启动代码或特定 API 来动态完成必要的准备工作——即所谓的“bss zeroing”。 #### 结构化批量赋值技术 针对连续区域内的相同数值设定需求,有一种常见做法就是利用循环语句手动遍历并逐一修改各个单元的内容。然而这并非唯一途径,还可以考虑运用位域(Bit Field) 或者联合体(Unions) 达成相似效果[^3]。 另外值得注意的是,假如希望快速给定范围内的整型成员统一设为某个固定模式下的二进制串形式表示(如题目提到的例子那样将前十个整形都置成十六进制表达式的 `0x01010101` 即十进制下约等于 `16843009`),可以通过宏定义配合条件判断简化书写复杂度的同时提高效率。 ```c #define INIT_VAL 0x01010101 for(int i=0;i<10;i++) { myArray[i]=INIT_VAL; } ``` 上述例子展示了怎样高效简洁地达成多处重复性任务的目的。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值