读书人

为什么这个程序没有结果解决方法

发布时间: 2012-02-04 15:43:08 作者: rapoo

为什么这个程序没有结果
一个将数字转化为字符串的程序,但是运行没有结果。
#include<stdio.h>
int getlen(char *s)
{
int n;
for(n = 1;*s != '\0';s++)
n++;

return n;
}
void reverse(char s[])
{
int c,i,j;
for(i = 0,j = getlen(s)-1;i < j;i++,j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itoa(int n,char s[])
{
int i,sign;
if((sign = n) < 0)
{
n = -n;
}
i = 0;
do
{
s[i++] = n % 10 +'0';
}while((n/=10)>0);
if(sign < 0)
{
s[i++] = '-';
}
s[i] = '\0';
reverse(s);
}
int main()
{
int n=154;
char s[100];
itoa(n,s);
for(int i=0;s[i]='\0';i++)
{
printf("%c",s[i]);
}
return 0;
}


[解决办法]
你的这个程序有两个地方错误:(在下面程序中给你修改了)

C/C++ code
#include <stdio.h> int getlen(char *s) {     int n;     for(n = 1;*s != '\0';s++)         n++;         return n; } void reverse(char s[]) {     int c,i,j;     for(i = 0,j = getlen(s)-2;i  < j;i++,j--)//数组坐标从0开始的。     {         c = s[i];         s[i] = s[j];         s[j] = c;     } } void itoa(int n,char s[]) {     int i,sign;     if((sign = n)  < 0)     {         n = -n;     }     i = 0;     do     {         s[i++] = n % 10 +'0';     }while((n/=10)>0);     if(sign  < 0)     {         s[i++] = '-';     }     s[i] = '\0';     reverse(s); } int main() {     int n=154;     char s[100];     itoa(n,s);     for(int i=0;s[i]!='\0';i++) //s[i]='\0'改为s[i]!='\0', 这个错误不应该啊。    {         printf("%c",s[i]);     }     printf("\n");    return 0; } 

读书人网 >C语言

热点推荐