字符串转化为整数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串转化为整数相关的知识,希望对你有一定的参考价值。

7、字符串转化为整数程序
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 编制程序实现将一个数字字符串转化为整数。
输入: 一个数字字符串。
输出: 对应整数。
输入样例: 1234
输出样例: 1234
提示: 要求用函数int Atoi(char str[])实现

正如二楼所说

这个题是考察 字符串转数字

用自定义函数 就是要你自己实现

你现在调用系统的atoi 不管你是在main函数调还是在自定义函数调

都是不会得分的

看看我写的
1234
Press any key to continue

#include "stdio.h"
int Atoi(char str[])

int j=1,i=0,nLen=0,n=0;
if (str[0]=='-') //判断正负
j=-1;
while (str[i++]!='\0') //计算长度

nLen++;

i=0;
while (i<nLen) //计算长度

n=10*n + str[i++] - '0';

return n*j;

main()

char ch[]="1234";
printf("%d\n",Atoi(ch));

有问题请追问 满意记得采纳哦
参考技术A 他们这个题目是要求自己实现atoi函数功能的意思吧?

按位取得字符,判断是不是数字,到不是数字的字符为止。
然后按取到的字符数得到最后的整数值。
"1234x"->'1','2','3','4'

('1' - '0') * pow(10,3) + ...

这样就可以了吧。
参考技术B /*2 编写自定义函数int ctoi(char s[]),将字符串转换为对应的整数。其中
s是一个只包含数字的字符数组,函数返值为转换后所得整数。在main函数中验证结果。
例如,字符串"512"转换后得到整数512。*/

#include<stdio.h>
#include<stdlib.h>
int ctoi(char s[]);
int main()

char a[100];
int b;
gets(a);
puts(a);
b=ctoi(a);
printf("%d\n",b);
system("pause");
return 0;

int ctoi(char s[])

char *p;
p=s;
int a=0,j=0;
for(;*p!='\0';p++)

j=(*p-'0');
a=a*10+j;
printf("%d\t",a);



return a;


这是用指针做的
参考技术C #include <stdio.h>
#include <stdlib.h>
#define MAX 100
void main()

char *p = new char[MAX+1];
gets(p);
long out = atoi(p);
printf("%ld",out);

有问题请追问,满意请采纳追问

我们要求用int Atio呢

追答

atoi(p); //这就是atoi函数哇

追问

#include
#include

int Atoi(char str[]);

int main()

int str[10];
scanf ("%s",str);
printf ("%d\n",str);
printf ("\n");

return 0;
指导下我这个把 实在不会~

追答

#include
#include

int Atoi(char str[]); //定义,后面是函数方法实现

int main()

int str[10];
scanf ("%s",str);
printf ("%d\n",Atoi(str)); //函数调用
printf ("\n");
return 0;



int Atoi(char str[])

int n = atoi(str);
return n;

追问

#include
#include

int Atoi(char str[])

int main()

int str[10];
scanf ("%s",str);
printf ("%d\n",Atoi(str));
printf("\n");
return 0;


int Atoi(char str[])


int n=atoi(str);
return n;


对么?

追答

脑壳到底想干嘛?!
#include
#include

int Atoi(char str[]) //语句没有分号是你故意的呢?还是干嘛呢?

int main()

int str[10];
scanf ("%s",str);
printf ("%d\n",Atoi(str));
printf("\n");
return 0;


int Atoi(char str[])


int n=atoi(str);
return n;

本回答被提问者采纳

C语言,整数数组转化为字符串

如题,我想将一个整数数组,改写成一个字符串输出,该如何写呢?
例如,整数数组为int data[5] = 4, 5, 3, 2, 5
改成:字符串:data:["4", "5","3","2","5"]
希望能给出大概函数的代码~
谢啦

C有“整数数组转化为字符串”的专用库函数char *itoa(int num,char *str,int radix)。声明一个存放转换后的字符串的二维字符数组,将整型数组的元素作为num来调用itoa函数,将结束存入二维数组即可。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void)
    int a[8]=123,234,345,10,787,743891,123456789,0,i;
    char x[8][11]="",;
    for(i=0;i<8;i++)
        itoa(a[i],x[i],10);//将整数a[i]按十进制转换成字符串存入字符数组x[i]
        printf("%s ",x[i]);//打出来看看......
    
    printf("\\n");
    return 0;

参考技术A 先把输出内容放入一个字符数组里,再输出。
字符数组的内容,用sprintf,strcat 等逐步建成:

#include <stdio.h>
#include <stdlib.h>
int main()

char str[80];
int data[5]=4, 5, 3, 2, 5;
int i,L;
sprintf(str,"data:");
strcat(str,"[");

for (i=0;i<5;i++)
L = strlen(str);
if (i<4) sprintf(str+L,"\"%d\",",data[i]);
else sprintf(str+L,"\"%d\" ",data[i]);
;
strcat(str,"]");
printf("%s",str);
return 0;



输出:data:["4","5","3","2","5"]本回答被提问者和网友采纳
参考技术B #include <stdio.h>
void main()

int d[5]=4,5,3,2,5;
char a[80];
int i;
for(i=0;i<5;i++)
a[i]=d[i]+'0';
a[i]='\0'; //这个很重要,是字符串结束符
printf("%s\n",a);
参考技术C 写个循环 拼接起来 参考技术D 数组输出和字符输出有什么不同?为什么需要转换?

以上是关于字符串转化为整数的主要内容,如果未能解决你的问题,请参考以下文章

数组转化为整数的方法

算法: 把字字符串转化为整数;

在C语言中怎么把一个整数转化为字符串

将字符串转化为整数

剑指offer 把字符串转化为整数

C语言输入一个整数转化为字符串