[0039]《C语言程序设计》机考答案

发布时间:2023-08-24 14:08:14浏览次数:22
西南大学网络与继续教育学院课程考试试题卷类别:网教 专业:计算机科学与技术 课程名称【编号】:C 语言 【0039】 A 卷大作业 满分:100 分一、大作业题目1.简述题(共 30 分)(1)“构建程序设计的思想和方法、提升阅读程序能力和编写程序能力”是 C 语言程序设计的课程学习目标。请简要说明你在 C 语言程序设计学习过程中学习了哪些内容?通过 C 语言的学习,你有何感受和体会?在回答问题要求真实真情表达(10 分)答:经过一个学期的 C 语言学习,大体算是在这个编程语言上入了门,能够通过一些代码解决特定的问题。感觉 C 原因编程不只是学习知识这么简单,更多给我的感受是它在潜移默化中培养了人的一种能力,用自己的话来讲就是一种”代码能力“。对于同一个问题,让大家去解开答案,可能经过一些纸笔的运算都能得出结果,但是如何把这个问题转化成代码,这就是一种能力,而仅仅是将问题转换成代码,这是较为浅层次的能力,更深层的便是通过优化代码让程序运行时间缩短以及减少可能出现的 bug。如果只是单纯的学习知识,像是背英语语法知识那样去学习一门编程语言、背下代码规则(当然熟识理论知识是必须的),这样可能也可以初步懂得这门语言,但是在深入上却较为困难。我始终觉得学习编程,重点在于培养写代码的能力。就拿写文章来说,对于文字的认识,可能大家都懂,但是给定一个题目,写出来的文章质量就各有差异,有的人文章平淡无奇,而有的人的却是宏篇大论。编程也是如此,懂得了理论知识,就像是认识了文字,但是优秀的作家能将这些文字巧妙地组合在一起形成佳作,优秀的程序员也是如此,能将大家都懂得的理论知识以一种更为巧妙的方法通过代码展示出来并使之可执行。所以,学习编程我始终认为我们每个人都应该注重写代码能力的培养。而这种培养可能需要无数次重复的练习,在获取这种能力的途中,可能有一部分人会觉得枯燥无味,因为始终看到的只是在黑色框框里输出一些数字以及字符串。刚开始的自己也是如此,但是后来那种解决问题的成就感慢慢克服了这种困难。给自己以有难度但又不超过自己能力范围的题目来练习,这样可能能逐步培养起兴趣。当然,因为每个人程度的不同,要找到适合自己能力范围的题目本身就是一种困难。以己之愚见,作为在校学生,老师的题目首先就是不错的选择,因为根据教学进度,老师都会给出不同的题目,而在此题目中必不乏难题存在,此时 google 一下,你可能就懂得了怎么去选择有难度又在自己能力范围的题目了。(2)什么是算法?算法的主要特征是什么?描述算法的主要方法有哪些?(10 分)答:算法概念: 在数学上,现代意义上的“算法”通常是指可以用计算机来解决的某一类问题是程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。算法的特点: (1)有限性:一个算法的步骤序列是有限的,必须在有限操作之后停止,- 1 - 不能是无限的. (2)确定性:算法中的每一步应该是确定的并且能有效地执行且得到确定的结果,而不应当是模棱两可. (3)顺序性与正确性:算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误,才能完成问题. (4)不唯一性:求解某一个问题的解法不一定是唯一的,对于一个问题可以有不同的算法. (5)普遍性:很多具体的问题,都可以设计合理的算法去解决,如心算、计算器计算都要经过有限、事先设计好的步骤加以解决。描述算法的方法通常有三种:(1)自然语言描述算法(2)流程图描述算法(3)伪代码描述算法(3)依据你在学习过程中编写的体会,请你简要说明编写程序的基本步骤。在 C 语言中程序有哪三种基本结构?在 C 语言程序设计中实现这三种基本结构的主要语句有哪些?(10 分)答:编写 C 语言程序的一般步骤:分析问题、构建算法、描述算法、编码、调试。在 C 语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构;(1)顺序结构:顺序结构很简单,从头到尾一句接着一句的执行下来,直到执行完最后一句;一般我们遇到的除了选择结构和循环结构外,都是顺序结构;(2)选择结构选择结构就是根据条件来判断执行哪些语句,如果给定的条件成立,就执行相应的语句,如果不成立,就执行另外一些语句。C 语言中常用的选择结构主要有以下两种:if else:引入关键字:if else else if;switch case:引入关键字:switch case break(3)循环结构循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次;for 循环使用最多,一般情况可以表示任何循环,和 while 循环均是当型循环,先判断,后执行。do{}while 属于直到型循环,先做循环再判断,程序用应用不多,程序中也没有体现。自增,自减符,++a、–a、a++、a–;符号在前表示的是:先做自增或者自减运算后以运算后的数值进行接下来的程序执行,符号在后表示的是:以当前值进行程序执行,执行结束后做自增自减运算进行下次程序执行。(在程序中可以体现)for 循环中循环语句可以是单个语句、空语句也可以是复合语句;三个表达式可以是任意类型,其中的分号”;”不能省略。2..编程题(共 40 分)(2) 编写程序求 100~200 之间的所有奇数之和,并统计其个数#include <stdio.h>int main(){int sum =0;int a =0;for(int i=100;i<200;i++){ if(i%2!=0) sum+=i; - 2 - a++;} printf("%d\n",sum);printf("%d\n",a); return 0;}(3)从键盘上任意输入两个正整数 m 和 n,求其最大公约数。#include <stdio.h> main() { int m,n,r; printf("请输入两个正整数:"); scanf("%d%d",&m,&n); do { r=m%n; m=n;n=r; } while(r!=0);printf("最大公约数=%d\n",m); }(6) 编写一个函数 long f(int n)求 Fibonacci 数列第 n 项的值。Fibonacci 数列有如下特点:第 1、2 两个数为 1、1。从第 3 个数开始,该数是其前面两个数之和。并编写一个主函数产生 20 之内的所有 Fibonacci 数输出。#include"stdio.h" #include"math.h" fib(int n) //求 Fibonacci 数列第 n 项的值{if(n==0) return(0); else if(n==1) return(1); else return(fib(n-1)+fib(n-2));}main() //产生 20 之内的所有 Fibonacci 数输出{int n,s; scanf("%d",&n); for(n=1;n<=20;n++) { s=fib(n); printf("%d\n",s); } }3. 依据下列提供的程序回答问题(共 30 分)#include <stdio.h>#include <math.h>int fun(int x){int s=0; while(x!=0) {s=s+x%10 ; x=x/10; }return s;}void main(){int a[11],b[11];int i,j,p,temp;for(i=0;i<10;i++)//从键盘输入 10 个正的整数{printf("a[%d]=",i); scanf("%d",&a[i]);}for(i=0;i<10;i++)b[i]=fun(a[i]);for(i=0;i<9;i++) //对 40 个升序排列 {p=i; for(j=i+1;j<10;j++)- 3 - if(b[p]>b[j]) p=j; if(p!=i) {temp=b[p]; b[p]=b[i]; b[i]=temp;} }printf("排好序的数为:\n");for(i=0;i <10;i++) printf("%5d",b[i]);}(1)上述提供程序中,函数 fun 的功能是什么?答:函数 fun 的功能为求任意数位数上的数字之和。(2)请依据提供的函数 fun 的程序代码,画出该算法的传统流程图或 N-S 图或自然语言描述。答:函数 fun 是将输入的数 x 取每位位数上的余数相加赋值给 s,最后返回数值 s,即任意数每位数数值之和。(3)在 VC6.0 环境下,运行上述程序时,若输入的数据为23,321,456,78,98,478,834,65,79,819,则输出结果是什么?答:排好序的数为: 5 6 11 15 15 15 16 17 18 19二、大作业要求大作业共需要完成 3 个大题:第 1 题,满分 30 分;第 2 题(1)-(5)任选两题完成,各 15 分,(6)题必做,10 分,满分 40 分;第 3 题(1)-(3)必做,满分 30 分。- 4 -
文档格式: docx,价格: 5下载文档
返回顶部