3、输入一个以回车结束的字符串(不超过10个字符),将其中的数字字符取出组成一个整数后输出,其余字符组成一个新的字符串输出。例如:输入“5ab3c4d8h2”,则输出整数53482和字符串“abcdh”。 (10分)
你可以创建三个字符数组,比如A、B、C,A读取输入的字符串,然后遍历A,如果是数字就存到B,如果是字母就存到C,最后输出B、C
或者你按照字符读取输入,一次读取一个字符,如果是数字就存B,如果是字母就存C,最后输出B和C
#include <stdio.h>
#include <string.h>
/*
3、输入一个以回车结束的字符串(不超过10个字符),
将其中的数字字符取出组成一个整数后输出,
其余字符组成一个新的字符串输出。
例如:输入“5ab3c4d8h2”,则输出整数53482和字符串“abcdh”
*/
int main(){
char a[10];
char b[10];
char c[10];
int i = 0;
int j = 0;
int s = 0;
while((a[i] = getchar()) != '\n'){
i++;
}
for (int k = 0; k < strlen(a); k++)
{
char bb = a[k];
if(bb-'0'>=0 && bb-'9'<=0){//bb>='a'&&bb<='z'||bb>='A'&&bb<='Z'
b[j] = a[k];
j++;
}
else{
c[s] = a[k];
s++;
}
}
if(strlen(b)>0){
printf("%s\n",b);
}
if(strlen(c)>0){
printf("%s\n",c);
}
}
说一下思路,要把字符串中数字和字母分开,说白了就是处理字符串。
而字符串又是多个字符组成,无非就是对每个字符(字符串从头到尾),做一次判断,如果是数字,就放一边,如果是字符,就放在另一边。(要注意给内存)
而接下来,就是如何判断是字符还是数字(c语言中字符是char类型,一个字节)==》数字在字符串中,其实也是字符得形式,0其实是单个字符'0'
我们判断字符串中一个字符c是数字(c>='0' && c<=‘9’),判断是字母就是(c>='a'&&c<='z' ||(c>=''A)&&c<='Z').
int main()
{
const char* str = "ab12yxY6 8";
char data[10] = { 0 }; //注意一定要满足能存的下,不要数组越界
//存是字符的数组
char num[10] = {0}; //存数字字符得数组
int n = 0, m = 0;
//其实就是按每个字符取字符串 做判断处理
for (int i = 0; i < strlen(str); i++)
{
//单个字符在计算机底层还是01字符 可以算法比较的 ASSII码表了解一下
if (str[i] >= '0' && str[i] <= '9') //判断是数字
{
num[n++] = str[i];
}
if (str[i] >= 'a' && str[i] <= 'z' || (str[i] >= 'A' && str[i] <= 'Z')) //判断是字符
{
data[m++] = str[i];
}
}
printf("%s \n", data);
printf("%s \n", num);
return 0;
}