填空题 1.  请补充函数proc(),该函数的功能是:把字符下标为非素数的字符从字符串str中删除,把字符下标为素数的字符重新保存在字符串str中。字符串str从键盘输入,其长度作为参数传入函数proc()。
    例如,输入“helloeverybody”,则输出“lleeoy”。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
    试题程序:
    #include<stdlib.h>
    #include<stdio.h>
    #define M 80
    void proc(char str[],int n)
    {
    int i,j,k,flag;
    ______;
    for(i=0;i<n;i++)
    {
    if(i>1)
    str[k++]=str[i];
    flag=1;
    for(______;j<i&&flag;j++)
    if(i%j==0)
    {
    flag=0;
    ______;
    }
    }
    str[k]='\0';
    }
    void main()
    {
    int i=0,strlen=0;
    char str[M];
    system("CLS");
    printf("\n Input a string: \n");
    gets(str);
    while(str[i]!='\0')
    {
    strlen++;
    i++;
    }
    proc(str, strlen);
    printf("\n***display string***\n");
    puts(str);
    }
  • 1、
【正确答案】 1、k=0
   j=2
   k--    
【答案解析】 由“str[k++]=str[i]”可知,k是数组str的下标,因此,其初始值应为0,第一空处填“k=0”;第二个for循环的作用是判断其下标是否为素数,由于j的初始值为2,因此,第二空处填“j=2”;未判断下标为素数之前,变量k的值已经加1,当确定其下标不是素数时,变量k的值要减1,因此,第三空处填“k--”。