试题一 (15分) 阅读以下C代码,将应填人 __(n)__ 处的字句写在答卷的对应栏内。 [程序1.1] #include <stdio.h> void nextS(int *h, int *m, int *s) { if (++*s < 60) return; *s = O; if (++*m < 60) return; *m = O; *h = (*h + t) % 24; } void main 0 int hour = 23, minute = 59, second = 59; nextS(&hour, &minute, &second); printf("%d %d %d
", hour, minute, second); 程序1.1的输出结果是 __(1)__ 。
[程序1.2] #include <stdio. h> int digit( long n, int k ) { while ( n != 0 && k-- > 1 ) n / = 10; return n%lO; } main() { printf ( "%d,%d
",digit( 123456789L, 2 ), digit( 123.456789L, 9 )); } 程序1.2的输出结果是 __(2)__ , __(3)__ 。
[程序1.3] #include <stdio.h> void s(int a[], int n) { int i, j, t, flg; for(i = O; i < n-1; i++) { for(flg = O, j = O; j < n-i-l: j++) if(a[j] > a[j+l]) { t = a[j]; a[j] = a[j+l]; a[j+i] = t; fig = 1; } if (!fig) return; } ) void main( ) { int i, cji= {15, 3, 8, 9, 6, 2}; s(c, 6); for (i = O; i < 6; i++) printf ("%4d ", c[i]); printf ('
'); } 程序1.3的输出结果是 __(4)__ ;函数s(int[],int h)的功能是 __(5)__ 。
试题二 (15分) 阅读下列程序说明和 C 代码,将应填人 __(n)__ 处的字句写在答卷的对应栏内。 [程序 2 说明) 本程序从键盘输入 n(0<n<100) 个整数,计算并输出其中出现次数最多且数值最大的 元素及其出现次数。 [程序 2] #include <stdio. h> #define N 100 void main ( ) { iht a[N] , n, i, j, ind, cl, c2; do { printf(" 输入 n(O < n < lO0):
"); scanf ("%d", &n); }while (n 4= 0 || __(1)__ ) printf (" 输人数组元素:
"); for(i = O; i < n; i++) scanf ("%d", &a[i]); for(c2 = i = O; i < n; i++) { for(cl = 1, j = i+l; j < n; j++) if(a[j] == a[i]) __(2)__ ; if( __(3)__ I| cl == c2 && a[i] > a[ind]) { c2 = cl; __(4)__ } } printf (" 其中%d出现%d次
", a[ind], __(5)__ ) }
试题三 (15分) 阅读下列程序说明和 C 代码,将应填入 __(n)__ 处的字句写在答卷的对应栏内口 [程序3说明] 幼儿园有 n(<20) 个孩子围成一圈分糖果。老师先随机地发给每个孩子若干颗糖果, 然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友。如共 有 8 个孩子,则第 1 个将原有的一半分给第 2 个,第 2 个将原有的一半分给第3个,......, 第 8 个将原有的一半分给第 1 个,这样的平分动作同时进行。若平分前,某个孩子手中的糖 果是奇数颗,则必须从老师那里要一颗,使他的糖果数变成偶数。小孩人数和每个小孩的初 始糖果数由键盘输入。下面的程序可求出经过多少次上述这 共3页: 1 [2] [3] 下一页
样的调整,使每个孩子手中的糖 果—样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。 [程序3] #include <stdio. h> #define N 20 int allEqual (int a[ ], int n) /* 检查每个孩子手中的糖果是否一样多 */ { iht i; for(i = 1; i < n; i++) if(a[O] != a[i]) return O; return 1; } int a[N], b[N]; void main ( ) { int i, n, addk, loopc; printf("Enter n((20)
"); scanf("%d", &n); printf ("Enter data
"); for(i = O; i (n; i++) scanf("%d", &a[i]); addk = O; __(l)__ ; while ( __(2)__ ) { /* 平分循环 */ loopc++; for ( i = O; i ( n; i++) { /* 为一次调整作准备 */ if(a[i]%2) { a[i]++; __(3)__ ;} if (i < n-l) b[i+l] = a[i]/2; else __(4)__ a[i] /= 2; } for(i = O; i < n; i++) __(5)__ ; /* 完成一次调整 */ } printf ("调整 %d 次
",loopc);printf( "每个孩子有 %d 颗糖果
", a[O]); printf ("调整过程中新增发 %d 颗糖果。
",addk); }
试题四 (15分) 阅读下列程序说明和C代码,将应填人 __(n)__ 处的字句写在答卷的对应栏内。 [程序 4 说明] 本程序用于从键盘读人整数,插入到链表,·或从链表删除一个整数。 [程序 4] #include <stdio. h> #include <malloc. h> typedef struct node { int val; struct node *next; } NODE; NODE *ins(NODE ,list, iht x) /* 将 x 按从小到大的次序插入链表 */ { NODE *u, *v = list, *p; for(; v != NULL && x < v->val; u = v, v = v->next );/* 找插入位置 */ if (v != NULL && x == v->val) return list; /* 已有,被忽略 */ p = (NODE *)malloc(sizeof(NODE)); p->val = x; /* 生成新表元 */ if (v == list) list = p; else __(1)__ ; __(2)__ return 1 ist; } NODE *del (NODE ,1 ist, int x) /* 从链表中删除值为 x 的表元 */ { NODE *u, *v; for(v = list; v != NULL && x < v->val; u = v, v = v->next) if (v != NULL && x == v->val) { /* 找到值为 x 的表元 */ if(v == list) list = list->next; else __(3)__ ; __(4)__ ; /* 释放空间 */ } else printf(" 没有找到!
"); return list; } void main( ) { iht x, ans; NODE *list = NULL, .p; while(l) { printf("
输入1:将整数插入到链表。
输入2:从链表删除一个整数。
"); printf ("其它整数,结束程序。
请输人选择! "); scanf("%d", &ans); if( __(5)__ ) return; printf(" 输入整数 "); scanf ("%d", &x); if(ans == 1) list = ins(list, x); else list = del (list, x); for(p=list; p!=NULL; p=p->next) printf(" %4d", 共3页: 上一页 [1] 2 [3] 下一页
p->val); } }
共3页: 上一页 [1] [2] 3
|