请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 6
typedef struct node {
int data;
struct node *next;
} NODE;
void fun(NODE *h)
{NODE *p, *q; int t;
/**********found**********/
p = __1__ ;
while (p) {
/**********found**********/
q = __2__ ;
while (q) {
/**********found**********/
if (p->data __3__ q->data)
{t = p->data; p->data = q->data; q->data = t;}
q = q->next;
}
p = p->next;
}
}
NODE *creatlist(int a[])
{NODE *h,*p,*q; int i;
h = (NODE *)malloc(sizeof(NODE));
h->next = NULL;
for(i=0; i {q=(NODE *)malloc(sizeof(NODE)); q->data=a[i]; q->next = NULL; if (h->next == NULL) h->next = p = q; else {p->next = q; p = q;} } return h; } void outlist(NODE *h) {NODE *p; p = h->next; if (p==NULL) printf("The list is NULL!\n"); else {printf("\nHead "); do {printf("->%d", p->data); p=p->next;} while(p!=NULL); printf("->End\n"); } } 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 sorting :\n"); outlist(head); } 解题答案: /**********第一空**********/ p = h->next ; /**********第二空**********/ q = p->next ; /**********第三空**********/ if (p->data >= q->data) ****************************************** [NextPage] 二、改错题:给定程序MODI1.C是建立一个带头结点的单向链表, 并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值, 并且作为函数值返回。 请改正函数fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include #include typedef struct aa {int data; struct aa *next; } NODE; int fun (NODE *h) {int max=-1; NODE *p; /***********found**********/ p=h ; while(p) {if(p->data>max) max=p->data; /***********found**********/ p=h->next ; } return max; } outresult(int s, FILE *pf) {fprintf(pf,"\nThe max in link : %d\n",s);} NODE *creatlink(int n, int m) {NODE *h, *p, *s; int i; h=p=(NODE *)malloc(sizeof(NODE));h->data=9999; for(i=1; i<=n; i++) {s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } p->next=NULL; return h; } outlink(NODE *h, FILE *pf) {NODE *p; p=h->next; fprintf(pf,"\nTHE LIST :\n\n HEAD "); while(p) {fprintf(pf,"->%d ",p->data); p=p->next;} fprintf(pf,"\n"); } main() {NODE *head; int m; head=creatlink(12, 100); outlink(head , stdout); m=fun(head); printf("\nTHE RESULT :\n"); outresult(m, stdout); } 解题答案: /***********found**********/ p=h->next; /***********found**********/ p=p->next; ****************************************** [NextPage] 三、程序题:请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中, 一维数组中数据的个数存放在形参n所指的存储单元中。 例如, 二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 33 33 33 44 44 44 44 55 55 55 55。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include void fun(int (*s)[10], int *b, int *n, int mm, int nn) { } main() {int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55, 55,55}},i,j ; int a[100] = {0}, n = 0 ;void NONO (); printf("The matrix:\n"); for(i = 0 ; i < 3 ; i++) {for(j = 0 ; j < 4 ; j++) printf("=",w[i][j]); printf("\n"); } fun(w, a, &n, 3, 4); printf("The A array:\n"); for(i = 0 ; i < n ; i++) printf("=",a[i]);printf("\n\n"); NONO(); } void NONO () {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/ FILE *rf, *wf ; int i, j, k ; int w[10][10], a[100], n = 0, mm, nn ; rf = fopen("in.dat","r"); wf = fopen("out.dat","w"); for(k = 0 ; k < 5 ; k++) { fscanf(rf, "%d %d", &mm, &nn); for(i = 0 ; i < mm ; i++) for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]); fun(w, a, &n, mm, nn); for(i = 0 ; i < n ; i++) fprintf(wf, "=", a[i]); fprintf(wf, "\n"); } fclose(rf); fclose(wf); } 参考答案: void fun(int (*s)[10], int *b, int *n, int mm, int nn) { int i, j, k ; for(i = 0 ; i < mm ; i++) for(j = 0 ; j < nn ; j++) { k = i * nn + j ; b[k] = s[i][j] ; } *n = mm * nn ; } main() { int w[10][10] = {{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j ; int a[100] = {0}, n = 0 ; printf("The matrix:\n") ; for(i = 0 ; i < 3 ; i++) { for(j = 0 ; j < 4 ; j++) printf("=",w[i][j]) ; printf("\n") ; } fun(w, a, &n, 3, 4) ; printf("The A array:\n") ; for(i = 0 ; i < n ; i++) printf("=",a[i]);printf("\n\n") ; NONO() ; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|