#include<stdio.h>
#include<string.h>
void fun(int a,char str[100])
{
int i=0;
do
{
str[i]=a%10+'0';
a=a/10;
i++;
}
while (a);
str[i]='\0';
}
int main()
{
int a;
char str[100];
printf("请输入一个正整数:\n");
scanf("%d",&a);
fun(a,str);
printf("字符串:\n");
for(int i=strlen(str)-1;i>=0;i--)
printf("%c",str[i]);
}
上面的代码前面的do while语句和后面的for语句是怎么运行的,为什么是这样写
用c语言把正整数转换成字符串
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 树下等苹果 2022-05-08 09:55关注
注释写在代码相应位置,请查看
#include<stdio.h> #include<string.h> void fun(int a, char str[100]) { int i = 0; do { str[i] = a % 10 + '0'; //把a的个位转换成字符类型,并放入str字符数组中 a = a / 10; //把a/10,这样a的十位变成个位,支持下一次循环.如a=123,之前已经把3存入字符数组中,a=a/10=12(取整),下一次存入2,然后继续/10,存入1,最后1/10=0,结束循环 i++; } while (a); //循环条件a不等于0 str[i] = '\0'; //数组后接一个'\0',作为停止符 } int main() { int a; char str[100]; printf("请输入一个正整数:\n"); scanf("%d", &a); fun(a, str); printf("字符串:\n"); for (int i = strlen(str) - 1; i >= 0; i--) //strlen统计str数组的'\0'之前的元素数量,然后一个一个输出 printf("%c", str[i]); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示