填空题(C语言) 下载本文

填空题(C) 9

___2___ = 0; } }

main( )

{ char s[81], c ;

printf( \

printf (\

统计,各段的人数存到b数组中:工资为1000元以下的人数存到b[0]中,工资为1000到1999元的人数存到b[1],工资为2000到2999元的人数存到b[2],工资为3000到3999元的人数存到b[3],工资为4000到4999元的人数存到b[4]。工资为5000到5999元的人数存到b[5]中。 例如,当a数组中的数据为:900、1800、2700、3800、5900、3300、2400、7500、3800,调用该函数后,b中存放的数据应是:1、l、2、3、0、2。 c = getchar();

/**********found**********/ fun(___3___) ;

printf( \}

答案:【1】!= 【2】str[1] 【3】s, c

25.给定程序的功能是根据形参m(2≤m≤9),在二维数组中存放一张m行m列的表格,由main()函数输出。 例如,若输入2 | 若输入4

则输出: | 则输出:

l 2 | l 2 3 4 2 4 | 2 4 6 8 | 3 6 9 12 | 4 8 12 16 #include #define M 10 int a[M][M] = {0} ;

fun(int a[][M], int m) { int j, k ;

for (j = 0 ; j < m ; j++ ) for (k = 0 ; k < m ; k++ ) /**************found**************/ ___1___ = (k+1)*(j+1); }

main ( )

{ int i, j, n ;

printf ( \/**************found**************/ fun ( ___2___ ) ;

for ( i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) /**************found**************/ printf ( \ printf ( \ }

}

答案:【1】a[j][k] 【2】a, n 【3】a[i][j] 26.给定程序的功能是对a数组中n个人员的工资进行分段

#include

void fun(int a[], int b[], int n) { int i;

/**************found**************/ for (i=0; i<6; i++) b[i] = ___1___; for (i=0; i

if (a[i] >= 5000) b[5]++; /**************found**************/ ___2___ b[a[i]/1000]++; }

main()

{ int i, a[100]={ 900, 1800, 2700, 3800, 5900, 3300, 2400, 7500, 3800}, b[6]; fun(a, b, 9);

printf(\

/**************found**************/

for (i=0; i<6; i++) printf(\ printf(\}

答案:【1】0 【2】else 【3】b[i]

27.给定程序的功能是将n个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分段的人数存到b数组申;成绩为60到69的人数存到b[0]中,成绩为70到79的人数存到b[1],成绩为80到89的人数存到b[2],成绩为90到99的人数存到b[3],成绩为100的人数存到b[4],成绩为60分以下的人数存到b[5]中。例如,当a数组中的数据是:93、85、77、68、59、43、94、75、98。调用该函数后,b数组中存放的数据应是:1、2、l、3、0、2。 #include

void fun(int a[], int b[], int n) {

int i;

for (i=0; i<6; i++) b[i] = 0; /**************found**************/ for (i=0; i< ___1___; i++) if (a[i] < 60) b[5]++;

/**************found**************/ ___2___ b[(a[i]- 60)/10]++;

填空题(C) 10

}

main()

{ int i, a[100]={ 93, 85, 77, 68, 59, 43, 94, 75, 98}, b[6]; /**************found**************/ fun(___3___, 9);

printf(\

for (i=0; i<6; i++) printf(\ printf(\

}

答案:【1】n 【2】else 【3】a, b

28.给定程序的功能是求出1到1000之内能被7或11整除但不能同时被7和ll整除的所有整数放在数组a中,通过n返回这些数的个数。 #include void fun(int *a, int *n) {

int i, j = 0 ;

for(i = 1 ; i <= 1000 ; i++) {

/**************found**************/

if(((i % 7 == 0) || (i % 11 == 0)) && i % 77 != 0) a[j++] = ___1___ ; }

/**************found**************/ *n = ___2___ ; }

main()

{ int aa[1000], n, k ;

/**************found**************/ fun ( ___3___ ) ;

for ( k = 0 ; k < n ; k++ )

if((k + 1) % 10 == 0) printf(\ else printf(\}

答案:【1】i 【2】j 【3】aa, &n 29.给定程序中己建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 #include #include #define N 8 typedef struct list { int data;

struct list *next; } SLIST;

void fun( SLIST *p) { SLIST *t, *s;

t=p->next; s=p;

while(t->next != NULL) { s=t;

/**********found**********/ t=t->___1___;

}

/**********found**********/ printf(\ s->next=NULL;

/**********found**********/ free(___3___); }

SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i

{ q=(SLIST *)malloc(sizeof(SLIST)); q->data=a[i]; p->next=q; p=q; }

p->next=0; return h; }

void outlist(SLIST *h) { SLIST *p; p=h->next;

if (p==NULL) printf(\ else

{ printf(\

do { printf(\ printf(\ } }

main()

{ SLIST *head;

int a[N]={11,12,15,18,19,22,25,29}; head=creatlist(a); printf(\from head:\\n\ printf(\ while (head->next != NULL){ fun(head);

printf(\

printf(\ }

}

答案:【1】next 【2】t->data 【3】t

30.给定程序的功能是计算scroe中m个人的平均成绩

填空题(C) 11

aver,将低于aver的成绩放在below中,通过函数名返回人数。例如,当score={10,20,30,40,50,60,70,80,90},m=9时,函数返回的人数应该是4,below={10,20,30,40}。 #include #include

int fun(int score[], int m, int below[]) {

int i, j = 0 ; float aver = 0.0 ;

for(i = 0 ; i < m ; i++) aver += score[i] ; aver /= (float) m ;

for(i = 0 ; i < m ; i++)

/**************found**************/

if(score[i] < aver) below[j++] = ___1___ ; return j ; }

main()

{ int i, n, below[9] ; int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ;

/**************found**************/ n = fun(score, 9, ___2___) ;

printf( \/**************found**************/

for (i = 0 ; i < n ; i++) printf(\\___3___) ; }

答案:【1】score[i] 【2】below 【3】below[i]

31.给定程序的功能是求出能整除x且不是偶数的各整数,并放在数组pp中,这些除数的个数由n返回。例如,若x的值为30,则有4个数符合要求,它们是1,3,5,15。 #include

void fun(int x, int pp[], int *n) {

int i, j = 0 ;

for(i = 1 ; i <= x ; i +=2 )

/**************found**************/ if((x % i) == 0) pp[j++] = ___1___ ; /**************found**************/ *n = ___2___ ; }

main()

{ int x, aa[1000], n, i ;

printf( \

scanf(\

/**************found**************/

fun(x, ___3___ ) ;

for( i = 0 ; i < n ; i++ ) printf(\ printf(\}

答案:【1】i 【2】j 【3】aa, &n

32.己知学生的记录由学号和学习成绩构成,N名学生的数据己存入a结构体中,给定程序的功能是找出成绩最低的学生记录,通过形参返回主函数。 #include #include

#define N 10

typedef struct ss

{ char num[10]; int s; } STU; fun(STU a[], STU *s) {

/**************found**************/ ___1___ h; int i ; h = a[0];

for ( i = 1; i < N; i++ )

/**************found**************/ if ( a[i].s < h.s ) ___2___ = a[i]; /**************found**************/ *s = ___3___ ; }

main()

{ STU a[N]={ {\

{\{\{\

int i;

printf(\

for ( i=0; i< N; i++ )printf(\= %s Mark = %d\\n\a[i].num,a[i].s); fun ( a, &m );

printf (\

printf (\}

答案:【1】STU 【2】h 【3】h 33.给定程序中己建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是,删除链表中数据域相同的结点,使之只保留一个。 #include #include #define N 8 typedef struct list { int data;

填空题(C) 12

struct list *next; } SLIST;

void fun( SLIST *h) { SLIST *p, *q; p=h->next; if (p!=NULL) { q=p->next;

while(q!=NULL)

{ if (p->data==q->data) { p->next=q->next; /**********found**********/ free(___1___); /**********found**********/ q=p->___2___; } else { p=q;

/**********found**********/ q=q->___3___; } } }

}

SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i

{ q=(SLIST *)malloc(sizeof(SLIST)); q->data=a[i]; p->next=q; p=q; }

p->next=0;

return h; }

void outlist(SLIST *h) { SLIST *p; p=h->next;

if (p==NULL) printf(\ else

{ printf(\

do { printf(\ printf(\ }

}

main( )

{ SLIST *head; int a[N]={1,2,2,3,4,4,4,5}; head=creatlist(a);

printf(\ fun(head);

printf(\}

答案:【1】q 【2】next 【3】next

34.给定程序的功能是实现矩阵(3行3列)的转置(即行列互换)。例如,输入下面的矩阵; 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 500 900

#include

int fun(int array[3][3]) {

int i,j,arr[3][3] ;

memcpy(arr, array, 9*sizeof(int)) ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < 3 ; j++) /**************found**************/ array[i][j] = ___1___ ; } main() {

int i,j;

int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}}; for (i=0;i<3;i++)

{ for (j=0;j<3;j++)

printf(\ printf(\

}

/**************found**************/ fun(___2___);

printf(\ for (i=0;i<3;i++)

{ for (j=0;j<3;j++)

/**************found**************/ printf(\ printf(\ } }

答案:【1】arr[j][i] 【2】array 【3】array[i][j] 35.函数fun的功能是:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返