52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/*----------------------------------------------------------------------
|
||
【程序设计】
|
||
------------------------------------------------------------------------
|
||
程序功能:输入带有数字和字母的字符串,使用指针,将数字放置在字母前面(按输入顺序)。
|
||
样例1:
|
||
输入字符串:jngk2025hello
|
||
排序后的字符串: 2025jngkhello
|
||
|
||
样例2:
|
||
输入字符串:123abc666def
|
||
排序后的字符串: 123666abcdef
|
||
------------------------------------------------------------------------
|
||
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
|
||
Program-End之间填入若干语句。
|
||
不要删除标志否则不得分。
|
||
不要修改或删除Program-End之外的内容否则不得分。
|
||
----------------------------------------------------------------------*/
|
||
#include <stdio.h>
|
||
void fn(char* str){
|
||
char *p,*q,ch;
|
||
p = str;
|
||
q = str;
|
||
/**********Program**********/
|
||
while(*p != '\0'){//p用来遍历所有元素
|
||
if(*p >= '0' && *p <= '9'){//当前位置指针的元素为数字
|
||
ch = *p;//备份当前的数字
|
||
q = p;//q存储当前这个数位置的地址
|
||
while(q != str){//将p地址前所有的字母整体后移一位
|
||
//到下一个元素地址为数组首地址或下一个元素为数字时停止
|
||
if(*(q-1) >='0' && *(q-1) <= '9'){
|
||
break;
|
||
}
|
||
*q = *(q-1);
|
||
q--;
|
||
}
|
||
*q = ch;
|
||
}
|
||
p++;
|
||
}
|
||
/********** End **********/
|
||
}
|
||
int main()
|
||
{
|
||
char s[100];
|
||
printf("输入字符串:");
|
||
gets(s);
|
||
fn(s);
|
||
printf("排序后的字符串: %s\n",s);
|
||
|
||
return 0;
|
||
}
|