例:若输入字符串“1234”,则函数把它转化为整数值1234,输入“-1234”,则转化为整数值-1234.
算法思路:用字符数组存储输入的字符串,定义函数exchange,形参为指针类型(字符数组),对传入的字符串进行处理:
1.若为正数,则从第1个元素开始转化,若为负数,则从第二个元素开始转换。定义1个int型变量存储正负值。
2.转化字符类型为int型:1234可从1开始,每向后一移动一位就将当前元素乘10再加后面一个元素值。
如:int k = 0, i =0;
i = 0 时,字符数组元素s[i]=s[0]=1,k=010+1=1。
i = 1 时,字符数组元素s[i]=s[1]=2,k=110+2=12。
以此类推……
3.转换完成后,返回转换的整数值。
代码如下:
#include <stdio.h>
#include <string.h>
int main() {
long n = 0; //定义长整型变量用来存储转换后的整数
char s[10]; //定义字符数组用来存储输入的字符串
gets(s); //输入字符串
n = exchange(s);
printf("%ld",n);
return 0;
}
long exchange(char *a) {
int c = 1; //定义变量c存储转换后整数的符号
int k = 0; //定义变量k表示转换的入口,若c=1,则从0开始,若c=-1,则从1开始
long x = 0;
int i = 0;
if (a[0] == '-') {
c = -1;
k = 1;
}
for(i=k;i<strlen(a);i++){
x = x * 10 + (a[i] - 48);
}
return x*c; //返回值为转换后的无符号数x与代表符号的整数c的乘积
}