gsl9527 发表于 2020-4-29 17:58:31

c语言程序😉这是给整数添加千分位分隔符的,结果...变成问号了。

#include<stdio.h>
int i;int j;
void f(char a[],int n)
{
      for(;n!=0;n=n/10)
      {
      i++;
      if(i%4!=0)
                a=n%10+'0';
      else {
                a=',';
                a[++j]=n%10+'0';
                i++;}
      j++;
      }
}
int main()
{
      char a;
      int t,n;
      scanf("%d",&n);
      f(a,n);
      for(;j>=0;j--)
                printf("%c",a);
      return 0;      
}

liuzhengyuan 发表于 2020-4-29 18:00:35

你用传址参数了吗???

gsl9527 发表于 2020-4-29 18:08:40

liuzhengyuan 发表于 2020-4-29 18:00
你用传址参数了吗???

用了吧?我输入“26556”出来的结果是“?6,556”,就无论怎么第一个数都变成了“?”

liuzhengyuan 发表于 2020-4-29 18:23:26

gsl9527 发表于 2020-4-29 18:08
用了吧?我输入“26556”出来的结果是“?6,556”,就无论怎么第一个数都变成了“?”

首先你的 a[] 是局部变量吧。。。
那么 f() 函数如何把 a[] 正确值返回给主函数呢?
我这里运行乱码

gsl9527 发表于 2020-4-29 18:31:59

liuzhengyuan 发表于 2020-4-29 18:23
首先你的 a[] 是局部变量吧。。。
那么 f() 函数如何把 a[] 正确值返回给主函数呢?
我这里运行乱码

我用的vc++6.0没有乱码哦

liuzhengyuan 发表于 2020-4-29 18:35:25

本帖最后由 liuzhengyuan 于 2020-4-29 18:39 编辑

gsl9527 发表于 2020-4-29 18:31
我用的vc++6.0没有乱码哦

你可以把 ch[] 变成全局变量,我这里就没有问题了

还有:
6个你不应该再继续使用VC++ 6.0的理由!
https://fishc.com.cn/thread-121313-1-1.html
(出处: 鱼C论坛)

gsl9527 发表于 2020-4-29 18:50:23

liuzhengyuan 发表于 2020-4-29 18:35
你可以把 ch[] 变成全局变量,我这里就没有问题了

还有:


可以了谢谢

liuzhengyuan 发表于 2020-4-29 19:03:05

gsl9527 发表于 2020-4-29 18:50
可以了谢谢

可以了就设一个最佳答案吧{:10_257:}

gsl9527 发表于 2020-4-29 19:05:06

liuzhengyuan 发表于 2020-4-29 19:03
可以了就设一个最佳答案吧

&#127383;

页: [1]
查看完整版本: c语言程序&#128521;这是给整数添加千分位分隔符的,结果...变成问号了。