c语言比较麻烦一道题,求解答

问题描述

c语言比较麻烦一道题,求解答

用c语言实现将输入的一个整型数字(含正负数)转化为字符串存入数组并输出该字符串
例如:-123存入数组为‘-’ ‘1’ ‘2’ ‘3’ ‘/0’

解决方案

1、先判断是否大于0,确定字符串第一位是否为'-'
2、然后取各个位上的数

解决方案二:

不是有snprintf吗?

解决方案三:

代码如下:

#include<stdio.h>
#include<string.h>

void inttostring(int figure,char str[])
{
    int i,j;
    for(i=1000000;figure/i==0;i/=10);
    if(figure<0)
    {
        int temp=-1*figure;
        str[0]='-';
        j=1;
        while(i>0)
        {
        str[j]=(temp/i)%10+'0';
        i/=10;
        j++;
        }
    }
    else if(figure>0)
    {
        int temp=figure;
        j=0;
        while(i>0)
        {
        str[j]=(temp/i)%10+'0';
        i/=10;
        j++;
        }
    }
    str[j]='';
}
int main()
{
    int a;
    char str[10];
    scanf("%d",&a);
    inttostring(a,str);
    printf("str=%sn",str);
    return 0;
}

解决方案四:

进行递归处理
x=(x-(x%10))/10;

解决方案五:

使用itoa函数。不过linux下的编译器不支持这个函数。
char * itoa(int value,char* string, int radix);
附:放上源码

char* itoa(intnum,char*str,intradix)
{
/*索引表*/
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum;/*中间变量*/
int i=0,j,k;
/*确定unum的值*/
if(radix==10&&num<0)/*十进制负数*/
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num;/*其他情况*/
/*转换*/
do{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='';
/*逆序*/
if(str[0]=='-')k=1;/*十进制负数*/
else k=0;
char temp;
for(j=k;j<=(i-1)/2;j++)
{
temp=str[j];
str[j]=str[i-1+k-j];
str[i-1+k-j]=temp;
}
return str;
}

解决方案六:

使用itoa函数。不过linux下的编译器不支持这个函数。
char * itoa(int value,char* string, int radix);
附:放上源码

char* itoa(intnum,char*str,intradix)
{
/*索引表*/
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum;/*中间变量*/
int i=0,j,k;
/*确定unum的值*/
if(radix==10&&num<0)/*十进制负数*/
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num;/*其他情况*/
/*转换*/
do{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='';
/*逆序*/
if(str[0]=='-')k=1;/*十进制负数*/
else k=0;
char temp;
for(j=k;j<=(i-1)/2;j++)
{
temp=str[j];
str[j]=str[i-1+k-j];
str[i-1+k-j]=temp;
}
return str;
}

解决方案七:

使用itoa函数。不过linux下的编译器不支持这个函数。
char * itoa(int value,char* string, int radix);
附:放上源码

char* itoa(intnum,char*str,intradix)
{
/*索引表*/
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum;/*中间变量*/
int i=0,j,k;
/*确定unum的值*/
if(radix==10&&num<0)/*十进制负数*/
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num;/*其他情况*/
/*转换*/
do{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='';
/*逆序*/
if(str[0]=='-')k=1;/*十进制负数*/
else k=0;
char temp;
for(j=k;j<=(i-1)/2;j++)
{
temp=str[j];
str[j]=str[i-1+k-j];
str[i-1+k-j]=temp;
}
return str;
}

解决方案八:

使用itoa函数确实可以,c语言编程中有讲到。

时间: 2024-08-31 05:03:58

c语言比较麻烦一道题,求解答的相关文章

c语言-C语言的一个小问题 求解答

问题描述 C语言的一个小问题 求解答 计算机问题求解答">如题 我的代码是这样 #includeint main(){ double xy; printf(""输入数据:""); scanf(""%lf""&x); if(x<1) y=x;else if(x>=1&&x<=10) y=2*x-1;else if(x>10) y=3*x-11;printf(&quo

对象-C语言新手学习文件,求解答putc 、getc和fputc、fgetc的区别?

问题描述 C语言新手学习文件,求解答putc .getc和fputc.fgetc的区别? fputc.fgetc和putc.getc同为对文件读写的操作函数,他们之间有何不同,具体用法是什么?是不是对象是不是文件的区别? 解决方案 int fputc(int c, FILE *stream); fputc() writes the character c, cast to an unsigned char, to stream. int putc(int c, FILE *stream); pu

c语言-c return 出错。求解答

问题描述 c return 出错.求解答 感觉是不是我眼龊了哪里没看清楚,mid最后一次的值时2,然后return mid,result得到的却是1,为什么? #include<stdio.h> int binary_Search(int a[],int low,int high,int key){ if(low>high) return -1; else{ int mid=low+(high-low)/2; printf("low=%d,mid=%d,high=%dn&quo

c语言-count++的问题,++求解答

问题描述 count++的问题,++求解答 #include int main() { int count=0; printf("%d%d%d ",count++,count++,count++); } 为什么结果是210?这个++到底是什么时候执行? 另外我将上面输出语句改成count=count++;然后再输出count,结果是0... 感觉好混乱,求真正明白的大神讲解 解决方案 首先,这个问题并没有一个标准的答案,依赖于编译器,不同的编译器结果很可能不同 但一般来说有一点是一样的

一道c语言的题目,求解答

问题描述 一道c语言的题目,求解答 有函数原型为void f(int,int *);主函数中有变量定义:int a,*p=&a,b[10];则下列几种调用错误的是: A·f(a,p) B·f(*p,b) C·f(b,&a) D·f(*p,p) 我的想法是:子函数要接收一个整形变量,一个指针变量,那么B选项中b不是指针常量么? 求助大神们解答!谢谢! 答案是C 解决方案 C B中 b 是数组名,可以看作 const 的指针 C中第一个参数是b,但实际参数是 int 解决方案二: B 选项中的

C语言基础问题求解答,运算符

问题描述 C语言基础问题求解答,运算符 if((b[i]=='a')||(b[i]=='e')||(b[i]=='i')||(b[i]=='o')||(b[i]=='u')) 可以写成下面的形式吗? if(b[i]==('a'||'e'||'i'||'0'||'u')) 解决方案 不可以的,会先判断括号里面的.你用switch语句 解决方案二: 可以这么写 if (strstr("aeiou", b[i]) != null) ... 解决方案三: 参考http://blog.sina.

磁盘-新手学习C语言文件,问题已经在程序中备注,求解答!

问题描述 新手学习C语言文件,问题已经在程序中备注,求解答! //怎样向文件读写字符 #include #include int main() { FILE * fp; char ch,filename[10]: printf("请输入所用的文件名:"); scanf("%s",filename); if((fp = fopen(filename,"w")) == NULL)//为什么这里的filename没有双引号引起来: { printf(&

文件-c语言 火车票管理系统 求解答

问题描述 c语言 火车票管理系统 求解答 运行后不能添加,删除,修改,查询班次到文件 可是文件是已经建好有数据的,查询时只显示一条然后就非正常退出了,我怀疑是最后链表做的有问题函数read()可是就是找不到哪错了,希望有哪位朋友可以解答一下, #include #include #include #include #include #include typedef struct Tickets { char num; char time[8]; char starts[8]; char ends

strcpy-c语言比较细致的问题.求大神帮我解答.

问题描述 c语言比较细致的问题.求大神帮我解答. #include#includeint main(){ int sum=0; char array[20][200]={""""}; int m=0n; float k=0; int k1=0i; scanf(""%d""&n); for(i=0;i { scanf(""%d""&sum); scanf("&qu