C语言定义一个函数将一个整数(做为参数)变成字符串,每个字符之间加一个空格,并将字符串输出

如:将整数2013变成字符串"2 0 1 3",编写主函数调用该函数.
高手速度.小弟急用啊!!!!!!!!!!
#include<stdio.h>
#include "stdlib.h"
char *aq(char *ch,int a)
{
int i,a_copy,j;
i = 0;
j = 0;
a_copy = a;
while(a_copy)
{
i++;
a_copy=a_copy/10;
}
j = 2*i;
if (2*i-1<30)
{
while(a)
{
ch[2*i-1]=' ';
ch[2*i-2]=a%10+'0';
i--;
a/=10;
}
for (i=j;i<30;i++)
{
ch[i]=NULL;
}
}

return(ch);
}
void main()
{
int a,i;
char *ch;
ch = (char *)malloc(30*sizeof(char));
scanf("%d",&a);
ch=aq(ch,a);
for (i = 0; i < 10 ; i++)
{
printf("%c",ch[i]);
}

}
这个是对的。你们的都不行。

#include"stdio.h"
void main()
{
int a;
char ch[10]={0};
scanf("%d",&a);
int c=a,i=0;
while(c)
{
i++;
c=c/10;
}
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
}
for(i=0;ch[i]!='\0';i++)
printf("%c ",ch[i]);
}
不知道这样可以不。

补充:
#include<stdio.h>
int aq(int c,int a)//这个函数也有很大的问题。
{
int i;
char ch[10];
c=a;i=0;
while(c)
{
i++;
c=c/10;
return c;
}
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
return a;
}
}
main()
{
int a,i;
char ch[10]={0};
scanf("%d",&a);
for(i=0;ch[10]!='\0';i++) //这句毫无意义,或者你写错了,并且后面也缺少了大括号。
ch[i]=aq(a); //函数定义时有两个参数,这里调用却只有一个,不错才怪了
printf("%c",ch[i]);
}

劝你还是要不重新做,要不看懂答案后再自己做,反正你写的实在问题太大
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-12
#include "stdio.h"

char s[20]={0};
int i=19;

/*方法一:用全局变量和数组*/
void fun(int n)
{ if(n>0)
{
s[--i]=n%10+'0';
s[--i]=' ';
fun(n/10);
}
}
/*方法二,用静态变量和指针形参*/
void fun2(int n,char *str)
{
static int k=0;
if(n>0)
{
fun2(n/10,str);
str[k++]=n%10+'0';
str[k++]=' ';
}
}

int main( )
{ char str[20]={0};
/*方法一测试*/
fun(1234567);
/*方法二测试*/
fun2(1234567,str);
printf("%s\n\n",s+i);
printf("%s\n",str);
return 1;
}
超简单的程序,呵呵本回答被网友采纳
第2个回答  2010-05-13
我用你的程序(思路)改了一下,就可以了,你要注意二个问题:一是函数里的
局部变量在函数结束后都自动释放了,所以需要定义一个全局数组;二是要注意return 的用法,renturn 语句执行到 函数就返回结束了,所以while循环里用return是不妥的,不过我懂你的意思,你想得到下一个c的值,完全没有必要,你处理过循环变量以后,执行完循环体后,会自动跳到while语句处,若条件成立则继续执行循环体语句,不成立就填出循环体向下执行了。
说了这么多,希望多你的有帮助。。。。
#include<stdio.h>
char ch[10];
int aq(int a)
{
int i;
int c;
c=a;
i=0;
while(c)
{
i++;
c=c/10;
}
ch[i]='\0';
while(a)
{
i--;
ch[i]=a%10+'0';
a/=10;
}
}
main()
{
int a,i;
i=0;
scanf("%d",&a);
aq(a);
while(ch[i]!='\0')
{
printf("%c",ch[i]);
i++;
}
printf("\n");

}
第3个回答  2010-05-12
你的代码就不去改了,建议你先把基础教材先看透。
下面是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define max 100
void change(long n,char* p);
int main ()
{
long n;
char result[max];
scanf("%ld",&n);
change(n,result);
puts(result);
system("pause");
return 0;
}
void change(long n,char *p)
{
int len=0,temp=n;
while(temp)
{
temp/=10;
len++;
}
p=p+len;
*p='\0';

p--;
while(n)
{
*p=n%10+48;
n/=10;
p--;
}
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网