国家二级C语言程序设计机试(程序修改题)模拟试卷5
程序修改题
1.下列给定程序中,函数fun的功能是:计算整数n的阶乘。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
double fun(int n)
{
double result:1.0;
while(n>1&&n<170)
/******found******/
result*c=一一n:
/******found******/
return;
}
void main()
{
int n;
prinff(“Enter fill integer:”);
seanf(“%d”,&n);
printf(“\n%d!=%1g\n”,n,fun(n));
}
(1)result*=n一一;
(2)retum result;
解析:本题考查:复合赋值运算;通过return语句完成函数值的返回。
该题采用循环语句计算n的阶乘。当n大于1且小于170时,令result与n相乘,同时n自动减1,循环至n=2(n=1时无须相乘)。最后将阶乘的积result返回给主函数。
2.下列给定程序中,函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形。若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回1;若不能,则返回0。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
int fun(int a,int b,int c)
{
if(a+b>c&&b+c>a&&a+c>b)
{
if(a==b&&b==c)
/******found******/
return 1;
else if(a==b‖b==c ‖a==c)
return 2;
/******found******/
else return 3;
}
else retum 0;
}
void main()
{
int a,b,c,shape;
prinff(“\nInput a,b,c:”);
seanf(“%d%d%d”,&a,&b,&c);
prinff(“\ha=%d,b=%d,c=%d\n”,
a,b,c);
shape=fun(a,b,c);
printf(“\nThe shape:%d\n”,shape);
}
(1)return 3;
(2)return 1;
解析:(1)变量a、b、c分别表示三条边,当三边相等(a==b&&b==c)时,返回3。
(2)在能构成三角形的前提下,如果不能构成等边三角形或等腰三角形,则返回1。
3.下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#nelude
#include
#include
int fun(int k)
{
int m=0,mc=0,j;
while((k>=2)&&(me<10))
{
/******found******/
if((k%13=0)‖(k%17=0))
{m=m+k;mc++;}
k一一;
/******found******/
return m;
}
void main()
{
prinff(“%d\n”,fun(500));
}
(1)if((k%13==0)‖(k%17==0))
(2)}return m;
解析:(1)c语言中,x能被y整除的表示方法是x%y==0,而不是题目中所表示的x%y=0。所以,if((k%13=0)‖(k%17=0))修改后的结果应该是答案所示信息。
(2)程序中缺少程序完整所需的“}”,此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来。比如丢失“}”的错误信息是“Compouncl statement missing}in flruction fun”。
说明:做题之前先运行一下程序,如果有书写错误,系统会提示,这样可以简化题目。
4.下列给定程序中,函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指的数组的尾部。
例如,当a所指字符串中的内容为“abc.defg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应为“a4b3c2dlefg”;而当a所指字符串中的内容为“1234”,b所指字符串的内容为“abcdefg”时,c所指数组中的内容应该为“1g2f3e4dcba”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
void fun(char*a,char*b,char*c)
{
int i,j;char ch;
i=0;j=strlen(b)一1;
/******found******/
while(i>j)
{
ch=b[i];b[i]=b[j];b[j]=eh;
1++;]一一;
}
while(*a‖*b)
{
/******found******/
If(*a)
{ *c= *a;c++;a++;}
if($b)
{* c=*b;c++;b++;}
}
*c=0:
}
main()
{
char sl[100],s2[100],t[200];
prinff(“\nEnter sl string:”);
scanf(“%S”,s1);
本文档预览:3600字符,共3894字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载