2015年计算机二级C语言上机操作题及答案(97)
发布时间:2011/7/28 15:46:24 来源:城市学习网 编辑:ziteng
第1题填空题:
数组str全由大小写字母字符组成。请补充fun函数,该函数的功能是:请把str中的字母转换成紧接着的下一个字母,如果原来的字母为’z’或’Z’,则相应地转换成’a’或’A’,结果仍保存在原数组中。
例如,输入“AboutZz”,则输出“BcpvuAa”。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#include
#define N 80
void fun(char s[])
{
int i;
for (i=0; ___1___; i++)
if (s[i]=='z' || s[i]=='Z')
s[i] -= ___2___;
else
s[i] += ___3___;
}
main()
{
char str[N];
printf("\n Input a string: \n");
gets(str);
printf("\n******** original string ********\n");
puts(str);
fun(str);
printf("\n******** new string ********\n");
puts(str);
}
答案:
第1空答案:s[i]!=’\0’或s[i]!=0
第2空答案:25
第3空答案:1 [NextPage] 2、第2题改错题:
下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,当x的值为9、y的值为1、z的值为15时,函数值为3.50。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
/********found********/
#define FU(m,n) (m/n)
float fun(float a, float b, float c)
{
float value;
value = FU((a+b), (a-b))+FU((c+b), (c-b));
/********found********/
Return (value);
}
main()
{
float x, y, z, sum;
printf("Input x y z: ");
scanf("%f%f%f", &x, &y, &z);
printf("x=%f,y=%f,z=%f\n", x, y, z);
if (x==y || y==z)
{
printf("Data error!\n");
exit(0);
}
sum = fun(x, y, z);
printf("The result is :%5.2f\n", sum);
}
答案:
第一处:#define FU(m,n)(m/n)应改为#define FU(m,n) (m)/(n)
第二处:Return(Value):应改为return(value); [NextPage] 3、第3题编程题:
请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,若主函数从键盘给n输入20后,则输出为s=0.853333。
注意:n的值要求不大于100。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
double fun(int n)
{
}
main()
{
int n;
double s;
FILE *out;
printf("\nInput n: ");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n",s);
out=fopen("out.dat","w");
for (n = 0; n < 10; n++)
fprintf(out, "%f\n", fun(n+20));
fclose(out);
}
答案:
double fun(int n)
{
int i;
double sum=0.0;
for(i=1;i<=n;i++)
if(i%5==0||i%9==0)
sum+=1.0/I;
return sum;
}