c++实现数字的补0成定长

作者&投稿:滑吉 (若有异议请与网页底部的电邮联系)
用c语言如何在数字前自动补0~

#include
usingnamespacestd;
voidmain()
{
inthour=9;
characHour[8]={0};
sprintf(acHour,"%02d",hour);
cout<<acHour;
}

扩展资料
C语言基本语法
在C程序中,分号是语句终止符,也就是说,每个单独的语句必须以分号结束。它表示一个逻辑实体的结束。以下是两个不同的陈述printf("Hello,World!
");return0;
注释就像帮助C程序中的文本一样,编译器会忽略它们。它们以/*开头并以字符*/结尾,如下所示/*myfirstprograminC*/,不能在注释中添加注释,也不会在字符串或字符文字中出现。

printf("%.2d%.2d", 2, 28) 格式化输出用C库要方便得多

思路大概是这样子:

void montageString(char *target, char *source, size_t targetLen){

if (strlen(source) == targetLen) return;

int i = 0,j=0,_dotN = 0;

for (i = strlen(source); i-- >0;){
if (*(source + i) == '.') break;
_dotN++;
}

if (_dotN < 2 && i >= 0){

if (target==NULL) target = (char *)malloc(targetLen + 1);

strcpy(target, source);
strcat(target, "0");
  
if (strlen(target) < targetLen){
if (*(target + 0) != '-') {
char *temp = (char*)malloc(targetLen+2);
 *(temp + 0) = '\0';

int k = strlen(target);
int _size1 = strlen(temp);
while (k<targetLen)
{
strcat(temp, "0");
strcat(temp, target);
target =(char*)malloc(strlen(temp)+1);
_size1 = strlen(target);
*(target + 0) = '\0';
strcat(target, temp);
*(temp + 0) = '\0';
k++;
}

free(temp);
}
else{

char *temp = (char*)malloc(targetLen + 2);
for (j = 0; j < targetLen + 2;j++) *(temp + j) = '\0';

for (j = 1; j < strlen(target);j++)
{
*(temp + (j - 1)) = *(target + j);
}

//  
char *temp2 = (char*)malloc(strlen(temp) + 2);
*(temp2 + 0) = '\0';

int k = strlen(target);

while (k <=targetLen-1)
{
strcat(temp2, "0");
strcat(temp2, temp);
target = (char*)malloc(strlen(temp2) + 1);
*(target + 0) = '\0';
strcat(target, temp2);
*(temp2 + 0) = '\0';
k++;
}

temp2 = (char*)malloc(strlen(target) + 2);
for (j = 0; j < strlen(target) + 2; j++) *(temp2 + j) = '\0';
strcat(temp2, "-");
strcat(temp2, target);
target = (char*)malloc(strlen(temp2) + 1);
*(target + 0) = '\0';
strcat(target, temp2);

free(temp);
free(temp2);
}

}

}

printf("
target=%s
", target);

}


偷懒的方法,先转成数字,再格式化字串,不知道可不可以:
#include "stdlib.h"
#include "stdio.h"
#include "memory.h"
#include "string.h"

void convert( char* target , char* source , int n )
{

float a ;
char fstr[20] ;

a = (float)atof( source ) ;

sprintf( fstr, "%%0%d.2f" , n ) ;
sprintf( target , fstr , a ) ;
}

main()
{
char target[100] ;
char source[] = "-105.2" ;
convert( target , source , 9 ) ;
}


在C++编程里,怎么让不足十的数前补0
printf("%.2d%.2d", 2, 28) 格式化输出用C库要方便得多

js 如何把小于10的数字前面补“0”
var h = 1;h = \/^\\d$\/.test(h) ? '0' + h : h;

EXCEL提升效率100招-04数字前面补0
详情请查看视频回答

excel数字前加0
1.如果我们需要在A列输入数据,那么先将A列全部选中,在其上右键单击——设置单元格格式 2.在设置单元格格式界面数字中选择文本,点击确定 3.A列格式全部修改成文本型,此时在A列输入前面是0的数字试试,可以添加了吧。4.这是二种方法,就是在输入单元格时前面加一个半角状态下的',我们输人'01...

Excel 单元格A1内容数字不满12位,用什么函数可以使它自动在第一位数前面...
解决方法一 =Text(A1,Rept(0,12))解决方法二 设置单元格格式>>>数字>>>自定义,“类型”框中输入12个0,如下图 知识扩展:方法一:直接把数据转换为12位数字,不足12位的以前导0补足。方法二:改变单元格的显示(包括打印出来的),但单元格里真正的值还是原来的数据。

php数组转换,数字前补0,如何处理,请指点,但不是指指点点,呵呵
可以使用php内置函数str_pad() 函数把字符串填充为新的长度。str_pad(string,length,pad_string,pad_type)参数 string \/\/必需。规定要填充的字符串。length \/\/必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。pad_string \/\/可选。规定供填充使用的字符串。默认是...

wps数字前补0
设置单元格格式——数字——自定义——右边类型里输入:00000000 即输入8个0,确定即可

C语言数字前补0
fopen可以用来创建文件。sprintf(s,"d:\\\\%04d.txt",i);FILE *fp = fopen(s,"w");fwrite(...);\/\/写入数据 fclose(fp);

Excel中如何使单元格内输入的数字控制在两位数字,并自动补0?
1.自动补0 选中要这样设置的单元格 格式-单元格-分类-数字-自定义,在里面输入00 2.控制在两位数 数据-有效性-设置,在"允许"下选整数,最小值输入1,最大值输入99

php 数组里的数字前补0,应该如果写?
思路给你提供一下 循环一下 然后strlen 如果为1则补0 补的方法有两种 所有的值写入新数组 或者 &$value

察隅县13884779102: C++ 如何定义一个定长字符串, 若内容不够位数,就补十六进制0x00, 汉字内容采用GBK编码
席璧帅克: char szText[256]; for(int i = 0; i &lt; sizeof(szText0; i++) { szText[i] = 0x00; } char* szComment = "我是一个学生"; sprintf(szText,"%s", szComment);

察隅县13884779102: C++字符串数字前补0 -
席璧帅克: CString str ="53 10 30 1 0 ffffff84 0 0 ffffffd0 0 45"; str.Remove('f'); while (str.Find(" 1 ") != -1) { str.Replace(" 1 ", " 01 "); } while(str.Find(" 0 ") != -1) { str.Replace(" 0 ", " 00 "); } cout << (LPCTSTR)str << endl;// 运行结果 53 10 30 01 00 84 00 00 d0 00 45 Press any key to continue

察隅县13884779102: C++怎样输出定长字符 -
席璧帅克: 使用(io manipulate)头文件中的库函数:如cout 结果就是:**1(空格我用*表示) 或者cout.width(3),但这个不怎么方便,虽然和setw一样只对下一句输入或输出起作用但其不可以在输入/输出语句中拼接,如:cout.width(6); cout 打印:*hello1 用sew:cout 打印:*hello*****1; 默认是右对其,你可以使用 cout.setf(ios_base::left); cout 别忘了cout.unsetf(ios_base::left); 或者 cout cout cout

察隅县13884779102: 如何将数字格式化为固定长度的字符串 -
席璧帅克: c/c++ 语言 数值 转化为字符串 可以用 sprintf 函数实现.例如:int k=12; float f=34.567; double d=9.87654; char sk[20],sf[20],sd[20]; sprintf(sk,"%d",k); sprintf(sf,"%f",f); sprintf(sd,"%lf",d); 当然,你愿意 给定场宽, 小数点位数,左对齐还是右对齐,也可以用格式设定.

察隅县13884779102: C++ 如何处理小数位按指定长度输出? -
席璧帅克: b=((int)(a*10000))/10000; 按这个思路写个小函数 double myRound(double a,int digi) { int mult=10^digi; return (double)((int)(a*mult))/mult; }

察隅县13884779102: 在C++编程里,怎么让不足十的数前补0 -
席璧帅克: if( ((n%4)==0)&&(n%100)!=0)||(n%400==0) )这个是闰年的条件. 你可以考虑用A[2][12]这个数组来存放闰年和非闰年的 每个月的天数...例如A[0][1]=31;代表非闰年的1月有31天...那么你在做日期比较的时候会很有条理..关于不足10补零的问题..这个可以先判断一下如果小于10就先打一个0然后输出数字 如果不是的话就 直接输出那个数

察隅县13884779102: C++里补零一般人是用printf还是cout补? -
席璧帅克: 1. 在#include下面加上using namespace std; 应该就好了还有一点2. endl结尾应该是小写字母l,你是不是打成数字1了.3. c++和c语言不一样,有名称空间这个概念,一般用到的库函数都在std这个名称空间里,所以除了要包含头文件之外,还要使用std这个名称空间.

察隅县13884779102: 在C++中,我想实现小于10000的数字到字符串的转化,而小于10000 的数字前面补0,有没有简单的方法? -
席璧帅克: 最简单的方法:char szBuffer[20]; int number = 1; sprintf_s(szBuffer, _countof(szBuffer), "%05d", number);// 这时szBuffer里面就是00001

察隅县13884779102: C++怎样输出定长字符
席璧帅克: 使用&lt;iomanip&gt;(io manipulate)头文件中的库函数: 如cout &lt;&lt; setw(3) &lt;&lt; 1; 结果就是: **1(空格我用*表示) 或者cout.width(3),但这个不怎么方便,虽然和setw一样只对下一句输入或输出起作用但其不可以在输入/输出语句中拼接...

察隅县13884779102: vc++6.0补零 -
席璧帅克: 展开全部123输出为00123的话,就是 int x; scanf("%d",&x); printf("%05d", x); 在中间加空格是不能用格式字符串直接输出的,只能自己转:int x,i; char buffer[10]; buffer[9]=0; scanf("%d",&x); sprintf(buffer,"%05d",x); for (i = 4; i >= 1; i--) { buffer[i*2-1] = ' '; buffer[i*2] = buffer[i]; } buffer[1] = ' '; printf(buffer);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网