填空题 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、
【正确答案】 1、*(str+i++)=*p
   p=str
   m=j    
【答案解析】 题目中要求将一个字符串的字母字符按从小到大的顺序排序。首先,要将字符串中的所有字母字符选择出来放在原来的字符串中,因此,空一处填“*(str+i++)=*p”。由后面的代码可知,变量p指向新的字符串str,因此其初始值为字符串str的首地址。因此,空二处填“p=str”。然后将得到的新的字符串排序,因此,空三处填“m=j”。