题目:编写函数,对于任意输入的一个整数,转换为千分位分隔的字符形式,在主函数中调用并输出。
C语言
#include<stdio.h>
char arr[32];//全局字符串——长度根据数位的长度来写;(这里暂时为32位)
int i = 0;//计数器(下角标)
void zhuan(int x)
{
while (x != 0)
{
arr[i] = x % 10 + '0';//0~9的ASCII码为48~57;
i++, x /= 10; //计数器进行自增,x取余数,
if (x == 0) //x==0相当于上一步的x为个数,如果再次除10就为小数了
break;
if ((i + 1) % 4 == 0)//每三位数后加一个逗号也就是四位一个回合,所以整除4;
{
arr[i] = ',';
i++;
}
}
}
int main()
{
int x;
scanf("%d", &x);
zhuan(x);//进行函数功能,把每一位数赋值到字符串中
for (int j = i - 1; j >= 0; j--)//因为i++在break;前面,所以要减一,并且倒序输出。
printf("%c", arr[j]);
return 0;
}
c++
#include<iostream>
using namespace std;
char str[32];//全局字符串——长度根据数位的长度来写;(这里暂时为32位)
int n = 0;//计数器(下角标)
void zhuan(int x)
{
str[n] = x % 10+48;//0~9的ASCII码为48~57;
x /= 10;
n++;
if ((n + 1) % 4 == 0) { str[n] = ','; n++; }//每三位数后加一个逗号也就是四位一个回合,所以整除4;
if (x < 10) str[n] = x+48;//取余最后小于4了说明该数再次除10就小于0了
else zhuan(x);//递归
}
int main()
{
int x;
cin >> x;
zhuan(x);//开始进行递归功能,使全局字符串赋值。
for (int i = n; i >= 0; i--)//倒序输出字符串
cout << str[i];
return 0;
}