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

大学c程序设计(第四版谭洪强)实验9参考答案

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

实验九 参考答案(指针)

三、实验内容( 按要求完善或设计以下程序,并调试分析运行结果)

1. 程序填空题 给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。

例如,输入一个数:,新的数:为739。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 【解题思路】

第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。 第二处:判断是否是奇数,所以应填:0。

第三处:最后通形参n来返回新数x,所以应填:x。

2. 程序改错题 给定程序中函数fun的功能是: 计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。

例如,7的5次方是16807, 其低3位数的和值是15。 【解题思路】

第一处:变量d的初始值应为1。 第二处:整除的符号是 /。 3. 程序设计题 请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 例如,若 x 中的值为: 35,则有 4 个数符合要求,它们是: 1, 5, 7, 35。 【解题思路】

本题是求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 【参考答案】

void fun ( int x, int pp[], int *n ) { int i; *n=0;

for(i=1; i <= x; i++) if((x % i== 0) && (i % 2)) pp[(*n)++]=i; }

4. 程序填空题 给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。 【参考答案】

第一处:把每列的第1值赋值给b[i],所以应填:a[0][i]。

第二处:如果b[i]值小于a[j][i]的值,则把a[j][i]重新赋值给b[i]中,保存最大的值,所以应填:<。 第三处:在主函数中,x是存放矩阵数据,y是存放每列的最大值,所以应填:x,y。 5. 程序改错题 给定程序中函数fun的功能是:根据形参m的值(2≤m≤9〕,在m行m列的二维数

12?,若输入4,则输出:组中存放如下所示规律的数据,由main函数输出。例如,若输入2,则输出:? ???24????1??2?3??4?4??468? 6912??81216??23【解题思路】

第一处:在函数体fun中可知,a是一个字符串数组型变量,所以应改为:fun(int a[][M], int m)。 第二处:根据输出的结果可知,应改为:a[j][k]=(k+1)*(j+1);。

6. 程序设计题 请编写一个函数 fun (int *a,int n,int *odd,int *even),函数的功能是分别求出数组 a 中所有奇数之和以及所有偶数之和。形参 n 给出数组元素的个数,整型指针 odd 返回偶数之和,even 返回奇数之和。 例如:a 数组中各数组元素的值依次为:1,9,2,3,11,6,则调用函数 fun后,指针 odd 返回偶数之和 8,even 返回奇数之和 24。 【解题思路】

用 for 循环语句依次判断整型数组中的每一个数组元素是偶数还是奇数,判断偶数和奇数只需将数组元素与 2 取模,结果为 0 的数是偶数,为 1 的是奇数。如果是偶数,则把该数加到*odd 中;是奇数,加到*even 中。 【参考答案】

fun ( int *a, int n, int *odd, int *even ) { int i;

*odd = * even = 0; for ( i = 0; i < n;i ++ ) if (a[i] % 2 == 0) /*用 if(a[i]%2==0)来判断是否是偶数*/ *odd += a[i]; /*计算所有偶数之和并将计算后的结果赋给*odd*/ else *even += a[i]; /*计算所有奇数之和并将计算后的结果赋给*even*/ }

7. 程序填空题 下列给定程序中,函数 fun()的作用是:将字符串 tt 中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入\,cD\,则输出\,cd\。 【参考答案】第一处:* 第二处:'Z' 第三处:tt

8. 程序改错题 给定程序 中,函数 fun 的功能是:从 N 个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确结果。 【参考答案】

第一处:fun(char (*sq)[M])改为char *fun(char ( *sq)[M])

第二处:return sq;改为return sp;

9. 程序设计题 编写一个函数 void fun ( char *s ),函数的功能是把字符串 s 中的所有字符前移一个位置,串中的第一个字符移到最后。 例如:s 串中原来的字符串为:\,则调用该函数后,s 串中的内容为:\。

【解题思路】

该题要先将字符串的头元素存到某一变量(用 tmp=*s)中,然后后面的字符依向前移(用 for()循环),要记得在串的未尾加一个结束符

【参考答案】 fun(char *s) { char tmp=*s; for(;*(s+1);s++) *s=*(s+1); *s=tmp; *(s+1)='\\0'; }

大学c程序设计(第四版谭洪强)实验9参考答案

实验九参考答案(指针)三、实验内容(按要求完善或设计以下程序,并调试分析运行结果)1.程序填空题给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入一个数:,新的数:为739。请在程序的下划线处填入正确的内容并把下划线删除
推荐度:
点击下载文档文档为doc格式
7o2qg0aa026o2vt5lzj67d82u9zjet00if8
领取福利

微信扫码领取福利

微信扫码分享