填空题 请补充函数fun(),该函数的功能是:把字符下标为非素数的字符从字符串sb中删除,把字符下标为素数的字符重新保存在字符串e口中。字符串sb从键盘输入,其长度作为参数传入函数fun()。 例如,输入“abcdefghijkl”,输出“cdfhl”。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include <stdio.h> #define N 80 void fun(char s[],int n) { int i, j, k, flag; {{U}}【1】 {{/U}}; for(i=0; i<n; i++) { if (i>1) s [k++] =s [i]; flag=I; for({{U}} 【2】 {{/U}}; j<i&&flag; j++) if (i%j==0) { flag=0; {{U}} 【3】 {{/U}} } } s [k]='/0'; } main() { int i=0, strlen=0; char str[N]; clrscr (); printf("/n Input a string:/n"); gets (str); while (str [i] !='/0') { strlen++; i++; } fun (str, strlen); printf("/n*** display string ***/n"); puts (str); }
  • 1、
【正确答案】 1、[1]k=0 [2]j=2 [3]k--    
【答案解析】[解析] 填空1:变量k声明时没有初始化,所以要在使用前初始化为0。填空2:如果一个数能被除了1和其自身之外的数整除,即余数为0,则这个数不是素数。所以除数j从2开始取数。填空3:如果当前字符的下标为非素数,则应将此字符删除,所以变量k减1,使下一个字符覆盖它,达到删除的目的。