好文档 - 专业文书写作范文服务资料分享网站

大学生c语言程序设计(第四版谭洪强)实验8答案

天下 分享 时间: 加入收藏 我要投稿 点赞

路漫漫其修远兮,吾将上下而求索 - 百度文库

实验八 函 数(二) 参考答案

/*1.(sy8-1.c) 请编写函数 fun,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.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列)的转置(即行列互换)。例如,输入下

100面的矩阵:??200300??,程序输出:

400500600???700800900????100400700?。 ???200500800??300600900???【解题思路】

方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】

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,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student!

在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】

int fun( char s[]) 1

路漫漫其修远兮,吾将上下而求索 - 百度文库

{ 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; /*返回统计结果*/ }

【参考答案2】

int fun( char s[]) {int i,n=1;

for(i=0;s[i]!=0;i++) {

if(s[i]==' '&&(s[i+1]>='a'&&s[i+1]<='z')) n++; }

return n; }

4.(sy8-4.c) 请编写函数 fun,函数的功能是:在字符串中的所有数字字符前加一个$字符。例如,输入A1B23CD45,则输出为:A$1B$2$3CD$4$5。

【解题思路】

通过一中间数组和一循环来实现。方法是:从字符串的首字符开始,判断字符是否为数字,若是,将字符$和数字字符赋给中间数组,反之,将字符直接赋给中间数组,直至字符串尾,最后将中间数组赋给原字符串。 【参考答案1】

void fun(char s[]) { char p[160]; int i,j=0;

for(i=0;s[i]!=0;i++) {

if(s[i]>='0'&&s[i]<='9') p[j++]='$'; p[j++]=s[i]; }

p[j]=0;

for(i=0;p[i]!=0;i++) s[i]=p[i]; s[i]=0; }

【参考答案2】 2

路漫漫其修远兮,吾将上下而求索 - 百度文库

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+'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

3

大学生c语言程序设计(第四版谭洪强)实验8答案

路漫漫其修远兮,吾将上下而求索-百度文库实验八函数(二)参考答案/*1.(sy8-1.c)请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,
推荐度:
点击下载文档文档为doc格式
1h0uz9606b0fluh9boav3qhtz4wh9l00tvx
领取福利

微信扫码领取福利

微信扫码分享