填空题
1. 请补充函数proc(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。
例如,若输入“abc12def”,则新字符串为abcdef,字符串长度为6。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#define M 20
int proc(char*str)
{
int i=0,j=0,k=0,m=0;
char t;
char *p=str;
while(*p)
{
if((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z'))
______;
p++;
}
*(str+i)='\0';
______;
while(*(p+j))
{
k=j;
______;
while(*(p+k))
{
if(*(p+k)<*(str+m))
{
t=*(str+m);
*(str+m)=*(p+k);
*(p+k)=t;
}
k++;
}
j++;
}
return i;
{
void main()
{
char str[81];
int n;
system("CLS");
printf("Input the original string");
gets(str);
prinrf("***The Original string***\n");
puts(str);
printf("***The new string ***\n”);
n=proc(str);
puts(str);
printf("***The length of new string is:%d***\n",n);
}
【正确答案】
1、*(str+i++)=*p
p=str
m=j
【答案解析】 题目中要求将一个字符串的字母字符按从小到大的顺序排序。首先,要将字符串中的所有字母字符选择出来放在原来的字符串中,因此,空一处填“*(str+i++)=*p”。由后面的代码可知,变量p指向新的字符串str,因此其初始值为字符串str的首地址。因此,空二处填“p=str”。然后将得到的新的字符串排序,因此,空三处填“m=j”。