#include<
stdio.h>
int main()
{
char str[100];
char str1[100];
memset(str,0,100);
memset(str1,0,100);
int a = 12345;
int c = 0;
int i;
while(1) {
str[c] = (a % 10) + '0'; // 模10得到最低位,+‘0’变成字符
c++;
a = a / 10; // 除以10去掉已求出的最后低位,再循环计算
if (a == 0) {
break;
}
}
for(i = 0, c= c-1 ; c >= 0; i++,c--) {
str1[i] = str[c];
}
printf("%s\n",str1);
return 0;
}
这只是示例思路,实际编写时你要考虑动态分配字符串空间以容纳合适的字符长度以及优化效率的问题。
追问memset没申明?还是编译器问题?
追答前面加一行:
#include
追问你能告诉我为什么要这样做吗??没看懂程序是什么意思。主要的思想能大致说下吗??先谢谢了。
追答int main()
{
char str[100]; // 声明字符数组
char str1[100];
memset(str,0,100); // 初始化数组内容全部为0,
memset(str1,0,100); // 同上
int a = 12345;
int c = 0;
int i;
while(1) {
// 模10得到最低位的数值,例如12345%10得到5
// 5 + 字符 '0' 得到字符 '5' ,放入数组
str[c] = (a % 10) + '0'; // 模10得到最低位,+‘0’变成字符
c++; // 数组下标+1,下一个字符放入下一位置
// 算出最低位后去掉,准备计算下一位
// 如 12345 / 10 得到 1234,然后循环继续处理
a = a / 10; // 除以10去掉已求出的最后低位,再循环计算
// 如果除以10后得到0,证明全部数位都处理了,退出循环
if (a == 0) {
break;
}
}
// 上面循环结束后,str得到的是 "54321"的倒序
// 所以循环处理将12345放入另外一个数组
for(i = 0, c= c-1 ; c >= 0; i++,c--) {
str1[i] = str[c];
}
printf("%s\n",str1);
return 0;
}