|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:从键盘输入一个字符串,然后提取其中的数字字符,将其排列在其他字符之后。列如输入字符串this7is#@hg,排列后的结果为thisis$@hg789。要求字符串的操作有指针法实现。
这个是我的源代码不知道哪里错了或者逻辑错误
#include<stdio.h>
int main()
{
char a[100];
char *j;
void swap(char *p,int n); // 定义一个让数字交换的函数
int b ,k;
gets(a); //获得a数组的字符
j = a;
b = 0;
for(k = 0 ; *(j + k) != '\0';k++)
{
b++; //计算a数组输入的长度
}
swap(j , b);
for(k = 0 ; k <=b ; k++)
{
printf("%c",*(j + k)); //将交换的字符数组进行输出
}
}
void swap(char *p, int n)
{
char temp;
int j ,k ;
for(j = 0 ; j < n; j++)
{
for(k = 0 ; k < n - j; k++) //利用类似气泡式的求法进行交换
{
if(*(p + k)>'0' && *(p + k)<'9')
{
temp = *(p + k);
*(p + k ) = *(p + k + 1); //一个一个往后挪动
*(p + k + 1 ) = temp;
}
}
}
}
这个是运行结果:
this7is89@#hg
thisis@#hg 987
Process returned 0 (0x0) execution time : 11.617 s
Press any key to continue.
该如何进行改进将那个9前面的空格去掉 求各位大佬指点指点
本帖最后由 bin554385863 于 2019-11-16 13:24 编辑
- #include <stdio.h>
- #include <ctype.h>
- #include <string.h>
- char *strswap(char *str, char *ptr) //str是要处理的字符串, ptr用来保存最终结果
- {
- char dstr[100] = {'\0'}; //保存数字字符
- char cstr[255] = {'\0'}; //保存其他字符
- int count_d = 0, count_s = 0;
- for (char *i = str; *i != '\0'; i++)
- {
- if (isdigit(*i))
- {
- dstr[count_d] = *i;
- dstr[count_d+1] = '\0';
- count_d++;
- }
- if (!isdigit(*i))
- {
- cstr[count_s] = *i;
- count_s++;
- }
- }
- strcpy(ptr, cstr);
- strcat(ptr, dstr);
- return ptr;
- }
- int main()
- {
- char str[100] = {'\0'};
- char ptr[100];
- scanf("%s", str);
- printf("%s", strswap(str, ptr));
- }
复制代码
----------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。
E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-g4zw5ubg.qdp --stdout=Microsoft-MIEngine-Out-p5vusv2z.1x2 --stderr=Microsoft-MIEngine-Error-jnieekme.vlc --pid=Microsoft-MIEngine-Pid-sg2lylo3.inu --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
@#6a5$^5@8456fa5g
@#a$^@fag65584565
E:\Users\admin\Documents\VScode>cmd /C "c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-ze5m2hay.0jj --stdout=Microsoft-MIEngine-Out-ynus4vyd.gme --stderr=Microsoft-MIEngine-Error-k1ialc05.5si --pid=Microsoft-MIEngine-Pid-1rvgxj0s.znz --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi "
a5f45a45s4fdsd6f46
afasfdsdf545454646
E:\Users\admin\Documents\VScode>
|
|