问题 填空题

请补充函数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;
【1】 ;
for(i=0; i<n; i++)

if (i>1)
s [k++] =s [i];
flag=I;
for( 【2】 ; j<i&&flag; j++)
if (i%j==0)

flag=0;
【3】


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]k=0 [2]j=2 [3]k--

解析: 填空1:变量k声明时没有初始化,所以要在使用前初始化为0。填空2:如果一个数能被除了1和其自身之外的数整除,即余数为0,则这个数不是素数。所以除数j从2开始取数。填空3:如果当前字符的下标为非素数,则应将此字符删除,所以变量k减1,使下一个字符覆盖它,达到删除的目的。

单项选择题 案例分析题
单项选择题