一、程序填空题
请补充函数proc().该函数的功能是比较字符串strl 和str2的大小,并返回比较的结果。
例如,当str1="abcd",str2="abcc"时,函数proc()返回“>",比较结果为“str1>str2"。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#include
#define M 80
char*proc(char*strl.char*str2)
{
char*p1=str1,*p2=str2:
while(*p1&&*p2)
{
if(【1】)
return"
if(【2】)
return">":
p1++;
p2++;
}
if(*p1==*p2)
return"==";
if(*p1==【3】)
return"
else
return">";
}
void main()
{
char strl[M],strZEM];
system("CLS"){
printf("Input str1:\n");
gets(str1);
printf("Input str2:\n");
gets(str2);
printf("\n****the result****\n");
printf("\nstr1%S str2",proc(str1,str2));
}
二、程序改错题
下列给定程序中,函数proc()的功能是:根据整型形参n,计算如下公式的值:
A1=1,A2=1/(5+A1),A3=1/(5+A2),
…,An=1/(5+A(n-1))
例如,若n=10,则应输出0.192582。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
float proc(int n)
{
//****found****
int A[100];
A[1]=1;
int i;
//****found****
for(i=1;i<=n;i++)
A[i]=1.0/(5+A[i-1]);
return A[n];
}
void main()
{
int n;
system("CLS");
printf("\nPlease enter n:");
scanf("%d",&n);
printf("A%d=%1f\n",n,proc(n));
}
三、程序设计题
请编写函数proc(),其功能是:计算并输出下列多项式值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函数从键盘给n输入20后,则输出为S= 0.680803。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include t:stdio.h>
double proc(int n)
{
}
void main()
{
int n;
double slim;
printf("\nInput n:");
scanf("%d",&n);
sum=proc(n)。
printf("\ns=%f\n",sum);
}
上机考试试题答案与解析
一、程序填空题
【1】*p1*p2【3】’\0’
【解析】变量p1和p2分别指向字符串str1和str2,由题目要求可知,str1小于str2.返回“”。因此,【2】处填“*p1>* p2”。当str1中的所有字符与str2中的前n个字符相等,str2 仍没有结束时,说明str2大于str1。因此,【3】处填“’\0’”。
二、程序改错题
(1)错误:int A[100];
正确:float A[100];
(2)错误:for(i=1;i<=n;i++)
正确:for(i=2;i<=n;i++)
【解析】根据主函数中的函数调用以及函数proc()的返回值类型,可知变量A为float类型。因此,“int A[100];”应改为“float A[100];”。在为变量A赋值时已经赋值为第一项的值,因此循环从第二项开始,因此,“for(i=1;i<=n;i++)”应改为“for(i=2;i<=n;i++)”。
三、程序设计题
double proc(int n)
{
int i;
double s=0.0; //s为其和的变量
for(i=1;i<=n;i+十)
S=s+(1.0/(2*i-1)-1.O/(2*i)); //计算s
=(1-1/z)+(1/3-1/4)+…+(1/(2n-1)-1/
2n)
return s; //最后把所得到的和返回到主函数中
}
【解析】由题目中所给表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。