西南[0039]《C语言》答案
发布时间:2023-08-23 14:08:05浏览次数:54西南大学网络与继续教育学院课程考试试题卷类别:网教 专业:计算机科学与技术 程名称【编号】:C 语言程 序设计【0039】 A 卷大作业 满分:100 分一、大作业题目1.简述题(共 30 分)(1)学习 C 语言程序设计的意义在于构建程序设计的思想和方法、提升阅读程序能力和编写程序能力。请简要说明你在 C 语言程序设计学习过程中主要通过哪些途径来学习?学习了哪些内容?通过 C 语言的学习,你有何感受和体会?在回答问题要求真实真情表达(10 分)答:途径: (1)理解和记忆程序基本结构(2)熟练上机调试技能(3)灵活掌握编程技巧(4)以考促学(5)锻炼创新能力学习了掌握三种基本结构程序设计思想,阅读、分析和设计算法的能力,必要的程序设计基本技能训练以及掌握调试程序的基本技能等内容C 语言是一门很有用的、对于我们的就业很实际的语言,学习好 C 语言是一项必须而实际的任务。我们必须要好好掌握。(2)C 语言程序设计是一种结构化程序设计语言,请问结构化程序的基本思想是什么?(6 分)答:结构化程序设计是指在程序的构成上只使用顺序、选择(即分支)和循环 3 种结构组成的编程方式。它强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路,是把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。结构化程序设计提倡模块化的设计方法(3)函数是构成 C 语言程序设计的基本单位,请问函数由哪两部分构成?在 VC6.0环境下,调试程序的基本步骤有哪些?调试程序中常见的错误有哪些?如何排除这些错误?(14 分)答:函数由首部和函数体两部分构成。- 1 -
基本步骤:(1)编辑(2)编译(3)连接(4)运行程序程序中常见的错误有:语法错误、超出系统允许范围的错误和逻辑错误。1 语法错误:在编写程序时违反了 C 语言的语法规定。语法不正确、关键词拼错、标点漏写、数据运算类型不匹配、括号不配对等都属于语法错误,在进入程序编译阶段,编译系统会给出出错行和相应“出错信息”。我们可以双击错误提示行,将光标快速定位到出错代码所在的出错行上。根据错误提示修改源程序,排除错误。 2 连接错误:如果使用了错误的函数调用,比如书写了错误的函数名或不存在的函数名,编译系统在对其进行连接时便会发现这一错误。纠正方法同 1。3 逻辑错误:虽然程序不存在上述两种错误,但程序运行结果就是与预期效果不符。 逻辑错误往往是因为程序采用的算法有问题,或编写的程序逻辑与算法不完全吻合。逻辑错误比语法错误更难排除,需要程序员对程序逐步调试,检测循环、分支调用是否正确变量值是否按照预期产生变化。4 运行错误:程序不存在上述错误,但运行结果时对时错。 运行错误往往是由于程序的容错性不高,可能在设计时仅考虑了一部分数据的情况,对于其他数据就不能适用了。例如打开文件时没有检测打开是否成功就开始对文件进行读写,结果程序运行时,如果文件能够顺利打开,程序运行正确,反之则程序运行出错。要避免这种类型的错误,需要对程序反复测试,完备算法,使程序能够适应各种情况的数据。2.编程题(1) 编写一个函数计算函数f (x , y )=x3+√y+1的 值,要求有输入输出提示,输出结果保留小数点后 2 位。答: #include "stdio.h"#include "math.h"void main(){double x, y,result;printf("请分别输入 x,y 的值:");scanf("%lf%lf",&x,&y);result = sqrt(y + 1)+x*x*x;printf("函数 f(%.0lf,%.0lf)=%.2lf\n", x, y, result);(2)编写程序输出 1-1000 之间能够被 5 整除的所有整数,并求出这些整数的和输出。(3) 从键盘输入 10 个正的整数,找出其中的素数输出。答: #include#includeint f(int x){int i; for(i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1 }- 2 -
void main(){int a[10],i,n=0,j,t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) if( f(a[i]) n++; else a[i]=0; for(i=0;i<9;i++) for(j=0;j<9-i;j++) if( a[j]<A[J+1] ) {t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("共有%d 个素数,它们是:",n);(4)编写程序打印下列图案(5)写一个函数计算一个字符串的长度,再写一个测试函数测试其功能。不允许使用strlen 函数(6)从键盘上任意输入 50 个整数存放在 a 数组中,找出 a 数组中所有偶数存放在数组b 中,并对 b 数组的值按降序排列。要求:(a)编写一个 sort(int n,int b[])函数实现排序功能。(b)除 sort 函数外,其余在主函数内完成,但主函数必须调用 sort 函数实现排序功能。(c)程序必须有输入输出提示。答: #include "stdio.h"void sort(int a[],int n){int i, j, t;for (i = 0;i < n;i++)for (j = 0;j < n - i;j++)if (a[j] > a[j + 1])t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;printf("排序以后的数:");for (i = 1;i <= n;i++)printf("%d ", a[i]);printf("\n");}int main()int array[50]; int b[50]; int i,j=0;printf("请输入 50 个整数:");for (i = 0;i < 50;i++) {scanf("%d", &array[i]);if (array[i] % 2 == 0)b[j++] = array[i];}printf("这 50 个整数中,偶数的有:");for (i = 0;i < j;i++)printf("%d ", b[i]);printf("\n");sort(b, j);return 0;}3. 依据下列提供的程序回答问题#include <stdio.h>int fun(int a,int b){ int r; while((r=a%b)!=0) { a=b; - 3 -
b=r; r=a%b; } return(b);}main(){ int num1, num2,a; printf("请输入两个整数:"); scanf("%d,%d",&num1,&num2); printf("num1= %d num2= %d\n\n",num1,num2); a=fun(num1,num2); printf("%d 和%d 中的最大公约数是 %d\n\n",num1,num2,a);}(1)上述提供程序中,函数 fun 的功能是什么?(2)请依据提供的函数 fun 的程序代码,画出该算法的传统流程图或 N-S 图或自然语言描述。(3)在 VC6.0 环境下,运行上述程序时,若输入的 num1 和 num2 分别为 49 和 21,则输出结果是什么?答: (1)函数 fun 的功能是:求两个非零正整数的最大公约数(2)(3)若 num1 和 num2 分别为 49 和 21,则输出的最大公约数为 7二、大作业要求大作业共需要完成 3 个大题:第 1 题,满分 30 分;第 2 题(1)-(5)任选两题完成,各 15 分,(6)题必做,10 分,满分 40 分;第 3 题(1)-(3)必做,满分 30 分。- 4 -