实验八 参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八 函 数(二) 参考答案
1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 1
2.0、34.0、4.0、2
3.0、3
4.0、4
5.0、18.0、3.0、11.0,输出应为:s=35.951014。
【解题思路】
在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。
【参考答案】
double fun(double x[9])
{ int i ;
double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++)
{ avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中
sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum
}
return sum; /*返回计算结果*/
}
2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下
面的矩阵:⎪⎪⎪⎭⎫ ⎝⎛900800700600500400300200100,程序输出:
⎪⎪⎪⎭
⎫ ⎝⎛900600300800500200700400100。 【解题思路】
方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。
【参考答案】
int fun(int array[3][3])
{ int i,j,t ;
for(i = 0 ; i < 3 ; i++)
for(j = 0 ; j < i ; j++)
t=array[i][j], array[i][j]=arrar[j][i], array[j][i]=t ;
}
3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。
【解题思路】
在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。
【参考答案】
int fun( char s[])
{ int i,word=0,num=0;/*word 标志是否是单词,num 用来记录单词数*/
for(i=0;s[i]!=‟\0‟;i++)
if(s[i]== …‟ )
word=0; //没有单词或结束单词
else if(word==0) //遇到非空格且之前没有单词,则表示遇到新的单词
{ num++; //计数器加1
word=1; //标志变量改成1
}
return num; /*返回统计结果*/
}
4.(sy8-4.c)请编写函数fun,函数的功能是:在字符串中的所有数字字符前加一个$字符。例如,输入A1B23CD45,则输出为:A$1B$2$3CD$4$5。
【解题思路】
通过一中间数组和一循环来实现。方法是:从字符串的首字符开始,判断字符是否为数字,若是,将字符$和数字字符赋给中间数组,反之,将字符直接赋给中间数组,直至字符串尾,最后将中间数组赋给原字符串。
【参考答案】
void fun(char *s)
{ char p[80];
int i=0,j=0;
while (s[i]!='\0') /*假如s[i]不为字符串结束符,则继续循环*/
{ if ((s[i]>='0') && (s[i]<='9'))
{ p[j]='$';p[j+1]=s[i];j=j+2;} /*假如s[i]为数字字符,则将$置于p[j]中,数字字符置于p[j+1]中*/
else
{ p[j]=s[i];j=j+1;}/*否则将s[i]置于p[j]中*/
i++;
}
p[j]='\0';
}
5.(sy8-5.c)请补充函数fun(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组str 中。例如:当n=13572468 时,str=“86427531”。
【参考答案】第一处:n >0 第二处:n%10+'0' 第三处:str[i]= ′\0′
6.(sy8-6.c)str 是一个由数字和字母字符组成的字符串,由变量num 传入字符串长度。请补充函数fun(),该函数的功能是:把字符串str 中的数字字符转换成数字并存放到整型数组bb 中,函数返回数组bb 的长度。例如:str=“Bcd123e456hui890”,结果为:123456890。
【参考答案】第一处:s[i] >= ′0′ &&s[i]< = ′9′第二处:s[i]- ′0′第三处:n