第81套
1.程序填空题
给定程序中,函数fun的功能是:将不带头结点的单向链表结点数据域中的数据从小到大排序。即若原链表从头至尾结点数据域依次为:10、4、2、8、6,排序后,从头至尾结点数据域依次为:2、4、6、8、10。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> #include <stdlib.h> #define N 6 typedef struct node { int data; struct node *next; } NODE; void fun(NODE *h) { NODE *p, *q; int t; p = h; while (p) { /**********found**********/ q = __1__ ; /**********found**********/ while (__2__) { if (p->data > q->data) { t=p->data; p->data=q->data; q->data=t; } q = q->next; } /**********found**********/ p = __3__ ; } } NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; h=NULL; for(i=0; i<N; i++) { q=(NODE *)malloc(sizeof(NODE)); q->data=a[i]; q->next = NULL; if (h == NULL) h = p = q; else { p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p=h; if (p==NULL) printf("The list is NULL!n"); else { printf("nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->Endn"); } } int main() { NODE *head; int a[N]= {0, 10, 4, 2, 8, 6 }; head=creatlist(a); printf("nThe original list:n"); outlist(head); fun(head); printf("nThe list after inverting :n"); outlist(head); return 0; }
2.程序修改题
给定程序中,函数fun的功能是:判断字符ch是否与字符串str中的某个字符相同,若相同,什么也不做;若不同,则插在串的最后。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> #include <string.h> /**********found**********/ void fun(char str, char ch ) { while (*str && *str != ch) str++; /**********found**********/ if (*str == ch) { str [ 0 ] = ch; /**********found**********/ str[1] = '0'; } } int main() { char s[81], c ; printf( "nPlease enter a string:n" ); gets ( s ); printf("n Please enter the character to search : "); c = getchar(); fun(s, c) ; printf( "nThe result is %sn", s); return 0; }
3.程序设计题
编写函数fun,它的功能是:把字符串中的内容逆置。
例如,字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <string.h> #include <stdio.h> #define N 81 void NONO(void); void fun(char *s) { } int main() { char a[N]; printf("Enter a string: ");gets(a); printf("The original string is: ");puts(a); fun(a); printf("n"); printf("The string after modified: "); puts(a); NONO( ); return 0; } void NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ int i ; char a[N] ; FILE *rf, *wf ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat", "w") ; for(i = 0 ; i < 9 ; i++) { fscanf(rf, "%s", a) ; fun(a) ; fprintf(wf, "%sn", a) ; } fclose(rf) ; fclose(wf) ; }
1.(1)p->next (2)q (3)p->next 2. void fun(char *str, char ch ) if (*str != ch) str[1] = '