数组是s[i]='0'+d;s[i]等于多少
发布网友
发布时间:2022-04-28 17:07
我来回答
共2个回答
热心网友
时间:2022-06-19 21:31
#include<stdio.h>
void main()
{int i,d,m,n;
char s[8];
scanf("%d",&n);
i=0;
do
{m=n/8;
d=n%8;
s[i]='0'+d;//'0'的ASCII值为48,也就是加上48的意思,数字转换成字符,输出字符。
printf("%c\n",s[i]);
i++;
n=m;
}
while(n!=0);
for(i--;i>=0;i--)
putchar(s[i]);
}
热心网友
时间:2022-06-19 21:31
s[i]是char型的,那这个型的字符在存储的时候是以ASCII码来存储的。
s[0]='0'+d,就是说在0的ASCII码基础上再增加d;
而d是3291对8求余得来的,不难得知,d=3,那么s[0]的值就是3的ASCII码的值。这个题目是把一个十进制数转换为八进制数输出。
对3291求余得八进制数的倒数第一位;
除以八再求余就得倒数第二位;
如此,可得全部位数,计入数组的时候是由后向前,输出的时候则由前向后。