请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下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;
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 {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("->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 inverting :\n"); outlist(head); } 解题答案: /**********第一空**********/ q = p->next ; /**********第二空**********/ while (q) /**********第三空**********/ p = p->next ; ****************************************** [NextPage] 二、改错题:给定程序MODI1.C中函数fun的功能是: 将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。 请改正函数fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include #include void fun (char *s) { /**********found***********/ while(*s!='@') {if(*s>='A' && *s<='Z' || *s>='a' && *s<='z') {if(*s=='Z') *s='A'; else if(*s=='z') *s='a'; else *s += 1; } /**********found***********/ (*s)++; } } main() {char s[80]; printf("\n Enter a string with length < 80. :\n\n "); gets(s); printf("\n The string : \n\n "); puts(s); fun (s); printf ("\n\n The Cords :\n\n "); puts(s); } 解题答案: /**********found***********/ while(*s) /**********found***********/ s++; ****************************************** [NextPage] 三、程序题:请编写函数fun, 函数的功能是: 移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如, 一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10; p的值为3。移动后, 一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 给定源程序: #include #define N 80 void fun(int *w, int p, int n) { } main() {int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i,p,n=15;void NONO (); printf("The original data:\n"); for(i=0; i printf("\n\nEnter p:");scanf("%d",&p); fun(a,p,n); printf("\nThe data after moving:\n"); for(i=0; i printf("\n\n"); NONO(); } void NONO () {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf,*wf ; int a[N], i, j, p, n ; rf = fopen("in.dat","r"); wf = fopen("out.dat","w"); for(i = 0 ; i < 5 ; i++) { fscanf(rf, "%d %d", &n, &p); for(j = 0 ; j < n ; j++) fscanf(rf, "%d", &a[j]); fun(a, p, n); for(j = 0 ; j < n ; j++) fprintf(wf, "=", a[j]); fprintf(wf, "\n"); } fclose(rf); fclose(wf); } 参考答案: void fun(int *w, int p, int n) { int i, j = 0, b[N] ; for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ; for(i = 0 ; i <= p ; i++) b[j++] = w[i] ; for(i = 0 ; i < n ; i++) w[i]= b[i] ; }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|