国家二级C语言机试(操作题)模拟试卷277
程序填空题
1.下列给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后将新字符串的首地址作为函数值返回。
例如,若s所指字符串为“asdl23fgh543df”,处理后新字符串为“asdfghdfl23543”。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*fun(char*s)
{ int i,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<n;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】;
return t;
}
main()
{ char s[80];
printf(\\
(1)s[i]
(2)k
(3)’\0’或0
解析:填空1:将字符串s中所有字母元素赋给数组t。
填空2:字符串中所有非字母元素放到字母元素后面,所以i的取值范围是0~k。
填空3:最后给字符串加入结束标识’\0’。
程序修改题
2.下列给定程序中,函数fun的功能是:根据整形参m的值,计算如下公式的值。
(1)for(i=2;i<=m;i++)
(2)y-=1.0/(i*i);
解析:(1)使用for循环计算公式,必须计算到m,所以应改为for(i=2;i<=m;i++)。
(2)在除法运算中,如果除数和被除数都是整数,那么所除结果也是整数,因此应改为y-=1.0/(i*i)。
程序设计题
3.编写函数fun,其功能是:根据以下公式计算S,并将计算结果作为函数值返回,n通过形参传入。
float fun(int n)
{
int i,s1=0;
float s=0.0;
for(i=1;i<=n;i++)
{
s1=sl+i; /*求每一项的分母*/
s=s+1.0/s1; /*求多项式的值*/
}
return s;
}
解析:此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。
本题中表达式的规律是1+2+…+n的倒数之和,那么可以通过for循环语句来实现第1项到第n项的变化。其实就是累加算法,方法是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,因为该变量的作用是累加器,所以初始值应为0(或0.0,根据变量数据类型来确定),再通过for循环语句来完成累加过程。
本题中s1用来表示每一项的分母,每一项的分母都是由前一项分母加项数。注意,由于s1定义成一个整型,所以在s=s+1.0/s1语句中不能把1.0写成1。
本文档预览:3600字符,共2284字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载