C语言必看填空题.docx

上传人:b****8 文档编号:29366024 上传时间:2023-07-22 格式:DOCX 页数:90 大小:54.03KB
下载 相关 举报
C语言必看填空题.docx_第1页
第1页 / 共90页
C语言必看填空题.docx_第2页
第2页 / 共90页
C语言必看填空题.docx_第3页
第3页 / 共90页
C语言必看填空题.docx_第4页
第4页 / 共90页
C语言必看填空题.docx_第5页
第5页 / 共90页
点击查看更多>>
下载资源
资源描述

C语言必看填空题.docx

《C语言必看填空题.docx》由会员分享,可在线阅读,更多相关《C语言必看填空题.docx(90页珍藏版)》请在冰豆网上搜索。

C语言必看填空题.docx

C语言必看填空题

第1套

给定程序中,函数fun的功能是:

统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

#include

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SLIST;

SLIST*creatlist(int*a);

voidoutlist(SLIST*);

voidfun(SLIST*h,int*n)

{SLIST*p;

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

___1___=0;*n

p=h->next;

while(p)

{(*n)++;

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

p=p->___2___;next

}

}

main()

{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48},num;

head=creatlist(a);outlist(head);

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

fun(___3___,&num);head

printf("\nnumber=%d\n",num);

}

SLIST*creatlist(inta[])

{SLIST*h,*p,*q;inti;

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;

returnh;

}

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf("ThelistisNULL!

\n");

else

{printf("\nHead");

do

{printf("->%d",p->data);p=p->next;}

while(p!

=NULL);

printf("->End\n");

}

}

解题思路:

本题是要求统计出带有头结点的单向链表中结点的个数。

第一处:

对n所指的存储单元进行初始化,所以应填:

*n。

第二处:

指向p的下一个结点,所以应填:

next。

第三处:

函数调用,在主函数中已经给出了head,所以应填:

head。

第2套

给定程序中,函数fun的功能是:

将N×N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。

例如,N=3,有下列矩阵

123

456

789

计算结果为

312

645

978

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

#defineN4

voidfun(int(*t)[N])

{inti,j,x;

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

for(i=0;i<___1___;i++)N

{

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

x=t[i][___2___];N-1

for(j=N-1;j>=1;j--)

t[i][j]=t[i][j-1];

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

t[i][___3___]=x;0

}

}

main()

{intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;

printf("Theoriginalarray:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

fun(t);

printf("\nTheresultis:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

}

解题思路:

第一处:

函数fun是对N×N矩阵进行操作,for循环的终止值为N。

第二处:

把最后一列的元素值赋值给临时变量x保存用来交换,所以应填:

N-1。

第三处:

第1列元素值使用x替换,由于C语言的下标是从0开始的,所以应填:

0。

第3套

给定程序中,函数fun的功能是:

将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。

例如,形参s所指的字符串为:

def35adh3kjsdf7。

执行结果为:

defadhkjsdf3537。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

voidfun(char*s)

{inti,j=0,k=0;chart1[80],t2[80];

for(i=0;s[i]!

='\0';i++)

if(s[i]>='0'&&s[i]<='9')

{

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

t2[j]=s[i];___1___;j++

}

elset1[k++]=s[i];

t2[j]=0;t1[k]=0;

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

for(i=0;i

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

for(i=0;i<___3___;i++)s[k+i]=t2[i];j

}

main()

{chars[80]="ba3a54j7sd567sdffs";

printf("\nTheoriginalstringis:

%s\n",s);

fun(s);

printf("\nTheresultis:

%s\n",s);

}

解题思路:

t2是存放数字字符串,t1是存放非数字字符串。

第一处:

t2存放数字字符串的位置是由j来控制的,每添加一个,j必须加1,所以应填:

j++。

第二处:

利用for循环把t1字符串添加到原字符串s中,所以应填:

s[i]=t1[i]。

第三处:

利用for循环把t2字符串添加到原字符串s的尾部,其中数字字符串的长度为j,所以应填:

j。

第4套

给定程序中,函数fun的功能是:

有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。

例如,若N=3,有下列矩阵:

123

456

789

计算结果为

100

650

10149

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

#defineN4

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

voidfun(int(*t)___1___)[N]

{inti,j;

for(i=1;i

{for(j=0;j

{

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

___2___=t[i][j]+t[j][i];t[i][j]

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

___3___=0;t[j][i]

}

}

}

main()

{intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;

printf("\nTheoriginalarray:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

fun(t);

printf("\nTheresultis:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

}

解题思路:

第一处:

形参t的定义,整数数组其宽度为N,所以应填:

[N]。

第二处:

对称元素相加,其结果仍存放在左下三角元素中,所以应填:

t[i][j]。

第三处:

右上三角元素置为0,所以应填:

t[j][i]。

第5套

给定程序中,函数fun的功能是:

对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。

例如,形参s所指的字符串为:

baawrskjghzlicda,执行后p所指字符数组中的字符串应为:

aachjlsw。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

voidfun(char*s,char*p)

{inti,j,n,x,t;

n=0;

for(i=0;s[i]!

='\0';i++)n++;

for(i=1;i

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

___1___;t=i

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

for(j=___2___+2;j

if(s[t]>s[j])t=j;

if(t!

=i)

{x=s[i];s[i]=s[t];s[t]=x;}

}

for(i=1,j=0;i

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

p[j]=___3___;'\0'

}

main()

{chars[80]="baawrskjghzlicda",p[50];

printf("\nTheoriginalstringis:

%s\n",s);

fun(s,p);

printf("\nTheresultis:

%s\n",p);

}

解题思路:

第一处:

取外循环的控制变量,所以应填:

t=i。

第二处:

内循环的起始变量,应该是i+2,所以应填:

i。

第三处:

新字符串处理完后应添加字符串结束符,所以应填:

'\0'。

第6套

给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

#include

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SLIST;

voidfun(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;

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

free(___3___);t

}

SLIST*creatlist(int*a)

{SLIST*h,*p,*q;inti;

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;

returnh;

}

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf("\nThelistisNULL!

\n");

else

{printf("\nHead");

do{printf("->%d",p->data);p=p->next;}while(p!

=NULL);

printf("->End\n");

}

}

main()

{SLIST*head;

inta[N]={11,12,15,18,19,22,25,29};

head=creatlist(a);

printf("\nOutputfromhead:

\n");outlist(head);

printf("\nOutputfromtail:

\n");

while(head->next!

=NULL){

fun(head);

printf("\n\n");

printf("\nOutputfromheadagain:

\n");outlist(head);

}

}

解题思路:

本题是对已经建立的链表,通过调用一次函数就输出链表尾部的数据。

程序中共有三处要填上适当的内容,使程序能运行出正确的结果。

第一处:

由于本题要求输出链表尾部的数据,函数是利用while循环语句找出链表尾部的指针并存入临时变量s中,那么每循环一次就要判断链表是否已结束位置,如果是,则退出循环,进行输出,由于是通过t指针变量进行操作的,因此,都要取t的next指针重新赋给t来实现,所以本处应填next。

第二处:

输出最后一个结点的数据,所以应填t->data或(*t).data。

第三处:

输出出最后一个结点数据后,并把此结点删除了,程序要求释放内存,所以应填t。

 

第7套

给定程序中,函数fun的功能是:

计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。

注意:

要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。

例如,若N=3,有下列矩阵:

123

456

789

fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

#defineN4

fun(intt[][N],intn)

{inti,sum;

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

___1___;sum=0

for(i=0;i

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

sum+=___2___;t[i][i]

for(i=0;i

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

sum+=t[i][n-i-___3___];1

returnsum;

}

main()

{intt[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;

printf("\nTheoriginaldata:

\n");

for(i=0;i

{for(j=0;j

printf("\n");

}

printf("Theresultis:

%d",fun(t,N));

}

解题思路:

第一处:

变量sum是用来存放主对角线元素和反向对角线元素之和,要对其进行初始化,所以应填:

sum=0。

第二处:

对主对角线元素值累加,所以应填:

t[i][i]。

第三处:

对反向对角线元素值累加,所以应填:

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个。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

fun(intx)

{intn,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++;

}

returnn;

}

main()

{intx=-1;

while(x<0)

{printf("Pleaseinput(x>0):

");scanf("%d",&x);}

printf("\nTheresultis:

%d\n",fun(x));

}

解题思路:

第一处:

使用while循环找出100~999之间所有整数,所以应填:

999。

第二处:

s2是求十位数字,所以应填:

t/10。

第三处:

各位数字之和为x,所以应填:

x。

第9套

给定程序中,函数fun的功能是:

将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。

例如,输入一个数:

27638496,新的数:

为739。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

voidfun(unsignedlong*n)

{unsignedlongx=0,i;intt;

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()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");scanf("%ld",&n);}

fun(&n);

printf("\nTheresultis:

%ld\n",n);

}

解题思路:

第一处:

t是通过取模的方式来得到*n的个位数字,所以应填:

10。

第二处:

判断是否是奇数,所以应填:

0。

第三处:

最后通形参n来返回新数x,所以应填:

x。

第10套

给定程序中,函数fun的功能是:

将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

例如,输入一个整数:

27638496,函数返回值为:

64862。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

给定源程序:

#include

unsignedlongfun(unsignedlongn)

{unsignedlongx=0;intt;

while(n)

{t=n%10;

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

if(t%2==__1__)0

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

x=__2__+t;10*x

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

n=__3__;n/10

}

returnx;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");scanf("%ld",&n);}

printf("\nTheresultis:

%ld\n",fun(n));

}

解题思路:

第一处:

判断t是否是偶数,所以应填:

0。

第二处

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1