为什么这个程序没有结果解决方法
为什么这个程序没有结果
一个将数字转化为字符串的程序,但是运行没有结果。
#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;
}
------解决方案--------------------
你的这个程序有两个地方错误:(在下面程序中给你修改了)
一个将数字转化为字符串的程序,但是运行没有结果。
#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; }