输入字符串型数字,将字符串型数字转化为整型数字,再将整型数字转化为字符串数字的数组
写此函数的原因:
很多题目都是对字符串的操作,特别是若能将字符串和数字相互转化,那么解题就会方便很多。
直接上代码(有注释):
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char* toLetter(int num){ //将数字转化为字符数组,默认数字为正数
char *str; //声明字符数组
int i=0; //数组下标
while(num!=0){ //对数字进行除10
str[i]=num%10+'0'; //余数作为字符数组中的一项
num=num/10;
i++;
}
str[i]='\0'; //最后一位的下一位设置为NULL
i--; //将数组下标调整到最后一位的位置
char temp;
for(int j=0;j<i;j++,i--){ //将得到的字符数组进行反转
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
return str; //返回字符数组
}
int toNumber(char* str){ //将字符数组转化为数字,默认字符串中都是数字
int w=0,k=0; //w保存计算得来的数值,k用于临时变量通过-'0'的方式将字符转化为数字
int len=strlen(str); //strlen()是string.h头文件下面的一个函数,用于计算数组的实际长度
for(int i=0;i<len;++i){ //转化
k=str[i]-'0';
w=w*10+k;
}
return w;
}
int main(){ //输入一个字符串型数字,将其转化为整型数字,再将数字转化为字符串数组
char str[1000];
while(gets(str)){ //这里gets()函数是stdio头文件下的,不需要额外扩入头文件,是从标准输入流中读取一串字符
int x=toNumber(str);
cout<<"数字的形式是:"<<endl<<x<<endl;
char* s=toLetter(x); //转化为字符数组
int len=strlen(s); //得到字符数组的长度
cout<<"字符数组的形式是:"<<endl;
for(int i=0;i<len;++i){ //输出字符数组
cout<<s[i]<<" ";
}
cout<<endl;
}
return 0;
}