1、C语言填空题C语言填空题第1套 给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数, 存放在形参n所指的存储单元中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include #include #define N 8 typedef struct list int data; struct list *next; SLIST; SLIST *creatlist(int *a); void outlist(SLIST *); void fu
2、n( SLIST *h, int *n) SLIST *p; /*found*/ _1_=0; *n p=h-next; while(p) (*n)+; /*found*/ p=p-_2_; next main() SLIST *head; int aN=12,87,45,32,91,16,20,48, num; head=creatlist(a); outlist(head); /*found*/ fun(_3_, &num); head printf(nnumber=%dn,num); SLIST *creatlist(int a) SLIST *h,*p,*q; int i; h=p=(
3、SLIST *)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h; void outlist(SLIST *h) SLIST *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(-Endn); 解题思路: 本题是要求统计出带有头结点的单向链表中结点的个数。 第一处:对n所指的存储单元进行初
4、始化,所以应填:*n。 第二处:指向p的下一个结点,所以应填:next。 第三处:函数调用,在主函数中已经给出了head,所以应填:head。 第2套 给定程序中,函数fun的功能是:将NN矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 3 1 2 6 4 5 9 7 8 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include #define N 4 void fun(
5、int (*t)N) int i, j, x; /*found*/ for(i=0; i=1; j-) tij=tij-1; /*found*/ ti_3_=x; 0 main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(The original array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); fun(t); printf(nThe result is:n); for(i=0; iN; i+) for
6、(j=0; jN; j+) printf(%2d ,tij); printf(n); 解题思路: 第一处:函数fun是对NN矩阵进行操作,for循环的终止值为N。 第二处:把最后一列的元素值赋值给临时变量x保存用来交换,所以应填:N-1。 第三处:第1列元素值使用x替换,由于C语言的下标是从0开始的,所以应填:0。 第3套 给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。 请在程序的下划线处填入正确的内容并
7、把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include void fun(char *s) int i, j=0, k=0; char t180, t280; for(i=0; si!=0; i+) if(si=0 & si=9) /*found*/ t2j=si; _1_; j+ else t1k+=si; t2j=0; t1k=0; /*found*/ for(i=0; ik; i+) _2_; si=t1i /*found*/ for(i=0; i_3_; i+) sk+i=t2i;
8、 j main() char s80=ba3a54j7sd567sdffs; printf(nThe original string is : %sn,s); fun(s); printf(nThe result is : %sn,s); 解题思路: t2是存放数字字符串,t1是存放非数字字符串。 第一处:t2存放数字字符串的位置是由j来控制的,每添加一个,j必须加1,所以应填:j+。 第二处:利用for循环把t1字符串添加到原字符串s中,所以应填:si=t1i。 第三处:利用for循环把t2字符串添加到原字符串s的尾部,其中数字字符串的长度为j,所以应填:j。 第4套 给定程序中,函数fun
9、的功能是:有NN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算结果为 1 0 0 6 5 0 10 14 9 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include #define N 4 /*found*/ void fun(int (*t)_1_ ) N int i, j; for(i=1; iN; i+) for(j=0; ji; j+)
10、/*found*/ _2_ =tij+tji; tij /*found*/ _3_ =0; tji main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(nThe original array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); fun(t); printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); p
11、rintf(n); 解题思路: 第一处:形参t的定义,整数数组其宽度为N,所以应填:N。 第二处:对称元素相加,其结果仍存放在左下三角元素中,所以应填:tij。 第三处:右上三角元素置为0,所以应填:tji。 第5套 给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生
12、文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include void fun(char *s, char *p) int i, j, n, x, t; n=0; for(i=0; si!=0; i+) n+; for(i=1; in-2; i=i+2) /*found*/ _1_; t=i /*found*/ for(j=_2_+2 ; jsj) t=j; if(t!=i) x=si; si=st; st=x; for(i=1,j=0; in; i=i+2, j+) pj=si; /*found*/ pj=_3_; 0 main() char s80=
13、baawrskjghzlicda, p50; printf(nThe original string is : %sn,s); fun(s,p); printf(nThe result is : %sn,p); 解题思路: 第一处:取外循环的控制变量,所以应填:t=i。 第二处:内循环的起始变量,应该是i+2,所以应填:i。 第三处:新字符串处理完后应添加字符串结束符,所以应填:0。 第6套 给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun 函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 请在程序的下划线处填入正确的内容并把下划线删除
14、,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #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_; next /*found*/ printf( %d ,_2_); t-data s-next=NULL;
15、/*found*/ free(_3_); t SLIST *creatlist(int *a) SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST); for(i=0; idata=ai; p-next=q; p=q; p-next=0; return h; void outlist(SLIST *h) SLIST *p; p=h-next; if (p=NULL) printf(nThe list is NULL!n); else printf(nHead); do printf(-%d,p-data); p=p-next; whi
16、le(p!=NULL); printf(-Endn); main() SLIST *head; int aN=11,12,15,18,19,22,25,29; head=creatlist(a); printf(nOutput from head:n); outlist(head); printf(nOutput from tail: n); while (head-next != NULL) fun(head); printf(nn); printf(nOutput from head again :n); outlist(head); 解题思路: 本题是对已经建立的链表,通过调用一次函数就
17、输出链表尾部的数据。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。 第一处:由于本题要求输出链表尾部的数据,函数是利用while循环语句找出链表尾部的指针并存入临时变量s中,那么每循环一次就要判断链表是否已结束位置,如果是,则退出循环,进行输出,由于是通过t指针变量进行操作的,因此,都要取t的next指针重新赋给t来实现,所以本处应填next。 第二处:输出最后一个结点的数据,所以应填t-data或(*t).data。 第三处:输出出最后一个结点数据后,并把此结点删除了,程序要求释放内存,所以应填t。 第7套 给定程序中,函数fun的功能是:计算NN矩阵的主对角线元素和反向对角线元
18、素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include #define N 4 fun(int tN, int n) int i, sum; /*found*/ _1_; sum=0 for(i=0; in; i+) /*foun
19、d*/ sum+=_2_ ; tii for(i=0; in; i+) /*found*/ sum+= tin-i-_3_ ; 1 return sum; main() int tN=21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10,i,j; printf(nThe original data:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%4d,tij); printf(n); printf(The result is: %d,fun(t,N); 解题思路: 第一处:变量sum是用来存放主对角线元素和反向对
20、角线元素之和,要对其进行初始化,所以应填:sum=0。 第二处:对主对角线元素值累加,所以应填:tii。 第三处:对反向对角线元素值累加,所以应填:1。 第8套 给定程序中,函数fun的功能是:找出100,999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。 例如,当x值为5时,100,999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。共有15 个。当x值为27时,各位数字之和为27的整数是:999。只有1个。 请
21、在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include fun(int x) int n, s1, s2, s3, t; n=0; t=100; /*found*/ while(t=_1_) 999 /*found*/ s1=t%10; s2=(_2_)%10; s3=t/100; t/10 /*found*/ if(s1+s2+s3=_3_) x printf(%d ,t); n+; t+; return n; main() int x=-1; whil
22、e(x0): ); scanf(%d,&x); printf(nThe result is: %dn,fun(x); 解题思路: 第一处:使用while循环找出100,999之间所有整数,所以应填:999。 第二处:s2是求十位数字,所以应填:t/10。 第三处:各位数字之和为x,所以应填:x。 第9套 给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。 例如,输入一个数:27638496,新的数:为739。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程
23、序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; while(*n) /*found*/ t=*n % _1_; 10 /*found*/ if(t%2!= _2_) 0 x=x+t*i; i=i*10; *n =*n /10; /*found*/ *n=_3_; x main() unsigned long n=-1; while(n99999999|n0) printf(Please input(0n100
24、000000): ); scanf(%ld,&n); fun(&n); printf(nThe result is: %ldn,n); 解题思路: 第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。 第二处:判断是否是奇数,所以应填:0。 第三处:最后通形参n来返回新数x,所以应填:x。 第10套 给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。 例如,输入一个整数:27638496,函数返回值为:64862。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存
25、放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构 给定源程序: #include unsigned long fun(unsigned long n) unsigned long x=0; int t; while(n) t=n%10; /*found*/ if(t%2=_1_) 0 /*found*/ x=_2_+t; 10*x /*found*/ n=_3_; n/10 return x; main() unsigned long n=-1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n); printf(nThe result is: %ldn,fun(n); 解题思路: 第一处:判断t是否是偶数,所以应填:0。 第二处:每操作一次,x必须乘以10,再加t,所以应填:10*x。 第三处:每循环一次n的值缩小10倍,所以应填:n/10。 第11套 函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a0、a1、a2、中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a 所指数组中的数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1