填空题
第1题、请补充fun函数,该函数的功能是:将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。[注意]部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。______[试题源程序]#include#include#defineN5typedefStructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q,*r;p=(1);if((2))return;q=P->next;P->next=NULL;while(q){r=q->next;q->next=p;p=q;q=(3);}h->next=p;}NODE*creatlis(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h>next=NULL:for(i=0;idata=a[i];q->next=NULL;if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;}}returnh;}voidoulist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p ……此处隐藏1789个字…… **********************/ifhigh%j==0{yes=0;break;}/**********************found**********************/if(yes==0){sum+=high;n++;}high--;}returnsum;}main(){clrscr();printf("%d\n",fun(100));}
参考答案:
(1)错误:ifhigh%j==0正确:if(high%j==0)(2)错误:if(yes==0)正确:if(yes)
答案解析:
fun函数的功能是:用while循环查找high以内的素数;用for循环判断一个数是否为素数;用变量n记录找到的素数的个数:用return返回素数之和sum。错误1:这个错误比较明显,if语句的两侧要加括号。错误2:yes为1时,说明被判断的数是素数,要累加到sum。
编程题
第3题、编写函数fun(),它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数。[注意]部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。_______[试题源程序]#include#includevoidfun(int*a,int*n){}main(){intaa[1000],n,k;C1rscr();fun(aa,&n);for(k=0;k