77范文网 - 专业文章范例文档资料分享平台

《C语言程序设计》练习题(8)

来源:网络收集 时间:2019-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

void main ( )

{ char str[81], *sptr; int i;

for(i=0; i<80; i++ ) { str[i]=getchar( ); if(str[i]== '\\n') break; }

str[i]= ① ; sptr=str; while( *sptr )

putchar( *sptr ② ); }

【3.24】下面程序的功能是输入学生的姓名和成绩,然后输出。 #include struct stuinf

{ char name[20]; /* 学生姓名 */ int score; /* 学生成绩 */ } stu, *p; void main ( ) { p=&stu;

printf(\ gets( ① );

printf(\ scanf(\ ② );

printf(\ %d\\n\ ③ , ④ ); }

【3.25】以下程序的功能是:读入一行字符(如:a、...y、z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。

#include void main( ) { struct node { char info;

struct node *link; } *top, *p; char c;

top=NULL;

while((c= getchar( )) ① )

{ p=(struct node *)malloc(sizeof(struct node)); p->info=c; p->link=top; top=p;

36

}

while( top ) { ② ;

top=top->link; putchar(p->info); free(p); } }

【程序填空题参考答案】

【3.1】答案:① 1.0/(float)(i*i) ② sqrt(6*s) 【3.2】答案:① *k=p

【3.4】答案:① t=t*i ② t=t>0?-1:1 【3.4】答案:① d=1 ② k++ ③ k<=n 【3.5】答案: ① x>=0 ② x

【3.6】答案:① m=n ② m>0 ③ m=m/10 【3.7】答案:① i==j ② k!=i&&k!=j 【3.8】答案:① i<=9 ② j%3!=0

【3.9】答案:① m=n ② r!=0 ③ return(n)

【3.10】答案:① float a[10], x ② i<=9 ③ i<=8 ④ j<=9-i ⑤ a[j]>a[j+1] ⑥ a[j]=a[j+1] ⑦ i<=9 ⑧i%5==0 【3.11】答案:① &a[i] ② continue

注释:①是基本概念,使用scanf函数输入数组元素的值。当输入的元素值小于0时,应当跳过后面的语句,取下一个数,所以②要填入continue。 【3.12】答案:① s[j++]=s[i] ② s[j]=s[i] 【3.13】答案:① s[j++]=s[i] 【3.14】答案:① x[i++]

【3.15】答案:① '\\0' ② str1[i]-str2[i] 【3.16】答案:① a[fmax(a, N)] ② k=p 【3.17】答案:① 2+age(n-1) ② age(5)

注释:由于程序是递归算法,因此首先要建立问题的递归数学模型。根据原题的描述可以写出如下递归公式: age(n) = 10 (n=1)

age(n) = 2+age(n-1) (n>1)

对照程序和递归公式可以看出:n的含义是第n位学生。很显然,要求第5位学生的年龄,②处应当是调用函数age,实参的值应当是5。在①处应该是函数的递归调用,根据递归公式,应当填写:2+age(n-1)。

【3.18】答案:① return(1) ② return (sum(n-1)+n)

注释:按照常规的编程方法,此问题可采用一个循环语句实现。阅读程序,没有发现循环语句,这时,应当认为原来的编程者使用的是非常规的算法。对于这样常规算法需要用循环实现而没有使用循环的程序,就可以肯定地认为,一定是使用了递归算法。

将问题\求1~n的累加和\的公式写成递归定义,可以是如下形式; sum(n)=1 当n=1时 sum(n)=sun(n-1)+n 当n>1时

根据此递归定义,可以很容易完成程序。 【3.19】答案:① return(1) ② n*facto(n-1)

37

注释:我们熟悉的求n!的算法一般是采用循环语句实现,但在此程序中根本没有循环语句。这时我们应该想到:是采用递归算法实现的。首先写出求n!的递归公式; n!=1 当n=1时 n!=n*(n-1) 当n>1时

根据此递归定义,可以很容易完成程序。

【3.20】答案:① *str=='\\0' ② 1+strlen(str+1)

注释:求串长算法的关键是确定串结束标记'\\0'的位置。根据求串长的方法,可以得到如下递归算法:指针str指向字符串的首字符

如果 当前字符(*str)== 串结束标记'\\0' 则 串长=0

否则 串长 = 1+除第一个字符之外的剩余字符串的串长

因此,在①的位置上应当填写\,以判断当前字符(*str)是否是串结束标记'\\0'。在②的位置应当是根据上面的递归算法进行递归调用,因此应当填写\。 【3.21】答案:① &n ② m ③ m/10 ④ m>0 ⑤ r(m) 【3.22】答案:① s

注释:在C语言中,进行字符串处理时,必须注意串结束标记'\\0',它是在进行串处理时的最基本的要求,所以①中要填入'\\0'。为了使用putchar输出一个字符串,则必须有改变指针的运算,这里只能使用++运算。

【3.24】答案:① stu.name ② &stu.score ③ p->name ④ p->score 注释:这是结构中的最基本概念。 【3.25】答案:① != '\\n' ② p=top

38

四、编写程序题及参考答案

【4.1】已知银行整存整取存款不同期限的月息利率分别为: 0.315% 期限一年 0.330% 期限二年

月息利率 = 0.345% 期限三年 0.375% 期限五年 0.420% 期限八年

要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。

【4.2】输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达式:year%4==0 && year0!=0 || year@0==0。若表达式成立(即表达式值为1),则year为闰年; 否则,表达式不成立(即值为0),year为平年。 【4.3】输入n值,输出如图所示高为n的等腰三角形。

【4.4】编写程序,输出如图所示上三角形式的乘法九九表。

【4.5】编写程序求出555555的约数中最大的三位数是多少。

【4.6】编写程序计算下列序列的值:

39

要求最后一项小于0.001时、或者当N=20时尚未达到精度要求,则停止计算。

【4.7】输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。

【4.8】100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。试编写程序计算大、中、小马的数目。

【4.9】显示200以内的完全平方数和它们的个数。(完全平方数:A2+B2=C2, 求A、B、C) 【4.10】请验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和。 【4.11】输入5×5的数组,编写程序实现: (1)求出对角线上各元素的和;

(2)求出对角线上行、列下标均为偶数的各元素的积; (3)找出对角线上其值最大的元素和它在数组中的位置。

【4.12】求这样一个三位数,该三位数等于其每位数字的阶乘之和。 即: abc = a! + b! + c!

【4.13】找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。

【4.14】编写程序,读入一个以符号\结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如: 读入句子:MADAM I'M ADAM. 它是回文,所以输出:YES 读入句子:ABCDBA). 它不是回文,所以输出:NO

【4.15】编写函数,通过指针将一个字符串反向。

【4.16】编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其各自字符的数量。如:输入字符串: abcedabcdcd 则输出:a=2 b=2 c=3 d=3 e=1。

40

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《C语言程序设计》练习题(8)在线全文阅读。

《C语言程序设计》练习题(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/613793.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: