如题所述
{
uchar i=0;
suint a=10000;
do
{
*p=num/a+48;
num=num-(suint)(num/a)*a;
a=a/10;
i++;
}while((*p==48)&&(i<4));//等待第一个非零位
if((*p!=48)||(i<4)) p++;
for(;i<4;i++)
{
*p=num/a+48;
num=num-(suint)(num/a)*a;
a=a/10;
p++;
}
*p=num+48;
p++;
*p='\0';//最后补零
}
调用这条函数把短整形,变为字符串,
然后printf("%s",p);显示字符串就行追问
完全调试不出来
追答void int_to_char(short unsigned int num,char *p) //把短整型数据转化为字符串
{
unsigned char i=0;
short unsigned int a=10000;
do
{
*p=num/a+48;
num=num-(short unsigned int)(num/a)*a;
a=a/10;
i++;
}while((*p==48)&&(i<4));//等待第一个非零位
if((*p!=48)||(i<4)) p++;
for(;i<4;i++)
{
*p=num/a+48;
num=num-(short unsigned int)(num/a)*a;
a=a/10;
p++;
}
*p=num+48;
p++;
*p='\0';//最后补零
}
不好意思,我把宏定义的都删了,现在应该可以,不行请追问
2.scanf("%[1-9]",str); for(i - strlen(str)) printf("%c ",str[i]);追问
我是初学的,所以看不懂,而且请给予标准格式,谢谢
追答首先过程在这,其次这么点东西直接给代码就不好了是吧,你总得有个动手的过程。
虽然我觉得也跟直接给代码无异了
1.
输入 sum
while(sum != 0){
输出 sum%10; //向10求余获取位数
sum /= 10; //自除10除去最低位
}
2.
输入 sum 以字符串的形式
用库函数strlen获取字符串长度,当然你也可以
while( sum[i] != '\0')
输出sum[i];
诶,你写的很好,可是我等级太低,怎么都调试不成功,算咯,懒得做题咯
int main()
{
int digit;
printf("input a digit:");
scanf("%d",&digit);
while(digit)
{
printf(" %d\n",digit%10);
digit/=10;
}
return 0;
}本回答被提问者和网友采纳
int main(void)
{
unsigned short number;
unsigned short sub_num[5];
int count = 0;
scanf("%d", &number);
while(number)
{
sub_num[count++] = number % 10;
number /= 10;
}
while(count)
{
printf("%d", sub_num[count-1]);
--count;
}
return 0;
}
这里只是简单的给了个例子,按原来的顺序输出的,建议最后以函数的形式来表现这个功能追问
不对,输出还是32767,中间应该有逗号隔开的,,,,
追答#include
int main(void)
{
unsigned short number;
unsigned short sub_num[5];
int count = 0;
scanf("%d", &number);
while(number)
{
sub_num[count++] = number % 10;
number /= 10;
}
while(count)
{
printf("%d,", sub_num[count-1]);
--count;
}
return 0;
}