程序填空题.docx
《程序填空题.docx》由会员分享,可在线阅读,更多相关《程序填空题.docx(60页珍藏版)》请在冰豆网上搜索。
![程序填空题.docx](https://file1.bdocx.com/fileroot1/2023-2/5/762de665-f6f4-4e92-88f1-485472117b05/762de665-f6f4-4e92-88f1-485472117b051.gif)
程序填空题
31.下列给定程序中,函数fun的功能是:
计算下式前n项的和,并作为函数值返回。
例如,若主函数从键盘给n输入50后,则输出为S=1.960784。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
【1】fun(intn)
{
inti,j;
doublesum=0.0,t;
for(i=1;i<=n;i++)
{
t=0.0;
for(j=1;j<=i;j++)
t+=【2】;
sum+=【3】;
}
returnsum;
}
voidmain()
{
intn;
doubles;
printf("\nInputn:
");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n\n",s);
}
【参考答案】
(1)double
(2)j (3)1.0/t或(double)1/t
32.下列给定程序中,函数fun的功能是计算下式
直到,并将计算结果作为函数值返回。
例如,若形参e的值为1e-3,函数的返回值为2.985678。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
doublefun(doublee)
{inti;doubles,x;
/**********found**********/
s=0;i=__1__;
x=1.0;
while(x>e){
/**********found**********/
__2__;
/**********found**********/
x=(2.0*i-1)/((__3__)*(2.0*i));
s=s+x;
}
returns;
}
main()
{doublee=1e-3;
printf("\nTheresultis:
%f\n",fun(e));
}
【参考答案】
(1)0
(2)i++或++i或i+=1或i=i+1 (3)2.0*i
33.下列给定程序中,函数fun的功能是:
在形参s所指字符串中的每个数字字符之后插入一个*号。
例如,形参s所指的字符串为def35adh3kjsdf7,执行后结果为def3*5*adh3*kjsdf7*注意:
部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
#include
voidfun(char*s)
{inti,j,n;
for(i=0;s[i]!
='\0';i++)
/**********found**********/
if(s[i]>='0'___1___s[i]<='9')
{n=0;
/**********found**********/
while(s[i+1+n]!
=___2___)n++;
for(j=i+n+1;j>i;j--)
/**********found**********/
s[j+1]=___3___;
s[j+1]='*';
i=i+1;
}
}
main()
{chars[80]="ba3a54cd23a";
printf("\nTheoriginalstringis:
%s\n",s);
fun(s);
printf("\nTheresultis:
%s\n",s);
}
【参考答案】
(1)&&
(2)0或′\0′ (3)s[j]或*(s+j)
34.给定程序中,函数fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2,4,6,8,10,逆置后,从头至尾结点数据域依次为10,8,6,4,2。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
#include
#include
#defineN5
typedefstructnode{
intdata;
structnode*next;
}NODE;
/**********found**********/
__1__*fun(NODE*h)
{NODE*p,*q,*r;
p=h;
if(p==NULL)
returnNULL;
q=p->next;
p->next=NULL;
while(q)
{
/**********found**********/
r=q->__2__;
q->next=p;
p=q;
/**********found**********/
q=__3__;
}
returnp;
}
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
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;}
}
returnh;
}
voidoutlist(NODE*h)
{NODE*p;
p=h;
if(p==NULL)printf("ThelistisNULL!
\n");
else
{printf("\nHead");
do
{printf("->%d",p->data);p=p->next;}
while(p!
=NULL);
printf("->End\n");
}
}
main()
{NODE*head;
inta[N]={2,4,6,8,10};
head=creatlist(a);
printf("\nTheoriginallist:
\n");
outlist(head);
head=fun(head);
printf("\nThelistafterinverting:
\n");
outlist(head);
}
【参考答案】
(1)NODE
(2)next(3)r
35.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。
函数fun的功能是:
将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。
例如,若传给形参a的数据中学号、姓名和三门课的成绩依次是:
10001、"ZhangSan"、95、80、88,修改后的数据应为:
10002、"LISi"、96、81、89。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
structstudent{
longsno;
charname[10];
floatscore[3];
};
/**********found**********/
__1__fun(structstudenta)
{inti;
a.sno=10002;
/**********found**********/
strcpy(__2__,"LiSi");
/**********found**********/
for(i=0;i<3;i++)__3__+=1;
returna;
}
main()
{structstudents={10001,"ZhangSan",95,80,88},t;
inti;
printf("\n\nTheoriginaldata:
\n");
printf("\nNo:
%ldName:
%s\nScores:
",s.sno,s.name);
for(i=0;i<3;i++)printf("%6.2f",s.score[i]);
printf("\n");
t=fun(s);
printf("\nThedataaftermodified:
\n");
printf("\nNo:
%ldName:
%s\nScores:
",t.sno,t.name);
for(i=0;i<3;i++)printf("%6.2f",t.score[i]);
printf("\n");
}
【参考答案】
(1)structstudent
(2)a.name
(3)a.score[i]
36.给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2,4,6,8,10,逆置后,从头至尾结点数据域依次为10,8,6,4,2。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
#include
#include
#defineN5
typedefstructnode{
intdata;
structnode*next;
}NODE;
voidfun(NODE*h)
{NODE*p,*q,*r;
/**********found**********/
p=h->__1__;
/**********found**********/
if(p==__2__)return;
q=p->next;
p->next=NULL;
while(q)
{r=q->next;q->next=p;
/**********found**********/
p=q;
q=__3__;
}
h->next=p;
}
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=(NODE*)malloc(sizeof(NODE));
h->next=NULL;
for(i=0;i{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h->next==NULL)h->next=p=q;
else{p->next=q;p=q;}
}
returnh;
}
voidoutlist(NODE*h)
{NODE*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");
}
}
main()
{NODE*head;
inta[N]={2,4,6,8,10};
head=creatlist(a);
printf("\nTheoriginallist:
\n");
outlist(head);
fun(head);
printf("\nThelistafterinverting:
\n");
outlist(head);
}
【参考答案】
(1)next
(2)NULL(3)r
37.下列给定程序中,函数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___;
/**********found**********/
for(j=___2___+2;jif(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___;
}
main()
{chars[80]="baawrskjghzlicda",p[50];
printf("\nTheoriginalstringis:
%s\n",s);
fun(s,p);
printf("\nTheresultis:
%s\n",p);
}
【参考答案】
(1)t=i
(2)i (3)′\0′或0
38.给定程序中,函数fun的功能是将不带头结点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头至尾的数据为10,4,2,8,6,排序后链表结点数据域从头至尾的数据为2,4,6,8,10。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
#include
#include
#defineN6
typedefstructnode{
intdata;
structnode*next;
}NODE;
voidfun(NODE*h)
{NODE*p,*q;intt;
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(inta[])
{NODE*h,*p,*q;inti;
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;}
}
returnh;
}
voidoutlist(NODE*h)
{NODE*p;
p=h;
if(p==NULL)printf("ThelistisNULL!
\n");
else
{printf("\nHead");
do
{printf("->%d",p->data);p=p->next;}
while(p!
=NULL);
printf("->End\n");
}
}
main()
{NODE*head;
inta[N]={0,10,4,2,8,6};
head=creatlist(a);
printf("\nTheoriginallist:
\n");
outlist(head);
fun(head);
printf("\nThelistafterinverting:
\n");
outlist(head);
}
【参考答案】
(1)p->next
(2)q(3)p->next
39.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句
#include
voidfun(char*s,inta,doublef)
{
/**********found**********/
__1__fp;
charch;
fp=fopen("file1.txt","w");
fprintf(fp,"%s%d%f\n",s,a,f);
fclose(fp);
fp=fopen("file1.txt","r");
printf("\nTheresult:
\n\n");
ch=fgetc(fp);
/**********found**********/
while(!
feof(__2__))
{
putchar(__3__);
ch=fgetc(fp);
}
putchar('\n');
fclose(fp);
}
main()
{chara[10]="Hello!
";intb=12345;
doublec=98.76;
fun(a,b,c);
}
【参考答案】
(1)FILE*
(2)fp(3)ch
40.下列给定程序中,函数fun的功能是:
在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
例如,若s所指字符串为baacda,c中的字符为a,执行后s所指字符串为baaaacdaa。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构中!
#include
voidfun(char*s,charc)
{inti,j,n;
/**********found**********/
for(i=0;s[i]!
=___1___;i++)
if(s[i]==c)
{
/**********found**********/
n=___2___;
while(s[i+1+n]!
='\0')n++;
for(j=i+n+1;j>i;j--)s[j+1]=s[j];
/**********found**********/
s[j+1]=___3___;
i=i+1;
}
}
main()
{chars[80]="baacda",c;
printf("\nThestring:
%s\n",s);
printf("\nInputacharacter:
");scanf("%c",&c);
fun(s,c);
printf("\nTheresultis:
%s\n",s);
}
【参考答案】
(1)'\0'
(2)0 (3)c
41.下列给定程序中,函数fun的功能是:
将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。
例如,若s所指字符串为:
asd123fgh543df,处理后新字符串为:
asdfghdf123543。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#include
char*fun(char*s)
{inti,j,k,n;char*p,*t;
n=strlen(s)+1;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0;k=0;
for(i=0;i{if(((s[i]>='a')&&(s[i]<='z'))||((s[i]>='A')&&(s[i]<='Z'))){
/**********found**********/
t[j]=__1__;j++;}
else
{p[k]=s[i];k++;}
}
/**********found**********/
for(i=0;i<__2__;i++)t[j+i]=p[i];
/**********found**********/
t[j+k]=__3__;
returnt;
}
main()
{chars[80];
printf("Pleaseinput:
");scanf("%s",s);
printf("\nTheresultis:
%s\n",fun(s));
}
【参考答案】
(1)s[i]
(2)k (3)'\0'或0
42.给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
#include
#