西南大学网络与继续教育学院课程代码:0039学年学季:20172主观题38、下列程序的功能是在数组a中寻找最大值的下标,输出数组a中的最大值及其下标。请填空:#includestdio.hvoidmain(){inta[10],i,max;for(i=0;i10;i++)scanf(%d,&a[i]);for((1);i10;i++)if(a[i]a[max])(2)printf(最大值为:%d,下标是:%d,(3),max);}参考答案:i=1,max=0或max=i=0;max=i;a[max]39、设intm=3;floatn=12.6;charch=’a’;,若用输入语句实现上述三个变量的初始化结果且键入数据形式为:3,12.6a回车换行,则scanf语句应是___________。参考答案:scanf(%d,%f%c,&m,&n,&ch)40、设inti;floatf=3.14;,执行i=(int)f;后,变量f的值是____________。参考答案:3.1441、若定义函数时类型缺省,则该函数默认的类型是___________。参考答案:extern42、设floata,b,c;,若a、b和c分别为三角形的三条边长,它们“能构成等边三角形”的逻辑表达式是____________。参考答案:(a==b)&&(c==b)&&(a==c)43、编写C语言程序的一般步骤什么?在VC环境下,调试程序的基本步骤有哪些?调试程序中常见的错误有哪些?如何解决发现这些错误?参考答案:编写C语言程序的一般步骤:分析问题、构建算法、描述算法、编码、调试。在VC环境下,调试程序的基本步骤有编辑、编译、连接、执行调试程序中常见的错误有语法错误和逻辑错误。其中语法错误通过编译来实现,逻辑错误通过单步追踪和设置断点的方法来发现逻辑错误。44、在C语言为什么规定对所有用到的变量要先定义,后使用”?这样的做有什么好处?参考答案:对所有用到的变量进行先定义,后使用”的原因:凡未被事先定义的,C语言不把他认作变量,这样的目的能是为了保证程序中的变量能被正确的使用。好处:(1)每一个变量被指定为一个确定类型,在编译时C语言就能为其分配相应的存储单元。(2)指定每一个变量属于一个类型,便于在编译时检查在程序变量进行的运算合法性。45、找出一个3行4列的二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。可能有几个鞍点也可能一个都没有。参考答案:46、请给出C语言的主要数据类型,请你至少给出4种以上的数据类型实例。参考答案:主要数据类型有:C语言包括基本类型(整型、字符型、浮点型(单、双精度型)枚举类型)、构造类型(数组、结构体、共用体类型)、指针类型、空类型。数据类型实例依据学生答题评定47、一个C程序由哪些要素构成,请给出一个C语言程序进行说明。参考答案:一个C程序由若干函数组成,但至少一个主函数。而每个函数包括函数的首部和函数体。实例自行给定48、编一程序求:1+(1+2)+(1+2+3)+……+(1+2+3+……+10)。参考答案:参考答案#includestdio.hmain(){inti,s=0,t=0;for(i=1;i=10;i++){t+=i;s+=t;}printf(%d,s);}49、C语言程序包括哪些三种基本结构?请给出这三种基本结构的传统流程图或N-S图参考答案:C语言程序包括哪些三种基本结构:顺序结构、选择(或分支)结构、循环结构.三种基本结构图示依据作业情况评定Ø顺序结构顺序结构是一种最基本、最简单的程序结构。先执行A,再执行B,A与B是按照顺序执行。Ø选择(或分支)结构根据条件是否成立而去执行不同的程序模块。当条件P为真时,执行A,否则执行B,即要么执行A,要么执行B。Ø循环结构循环结构是指重复执行某些操作,重复执行的部分称为循环体。50、什么是函数的原型?其作用是什么?在这些作用中如何使用?参考答案:若自定义了一个函数,则该函数的首部称之为该函数的原型函数原型的作用:调用函数的接口;用于原型声明其中函数的调用方法:函数(实在参数)函数的原型声明:当被调用函数在调用函数之后时,必须进行原型声明,在程序最前面或在调用函数中进行声明,声明方法:函数的首部;51、什么是内部函数和外部函数?参考答案:内部函数:一个函数只能被本文件中的其它函数调所用,在定义时使用static。外部函数:一个函数不光是被本文件中其它函数调用,还可以被其它文件中的函数调用,定义时用extern。extern可缺省。52、在下列程序中,循环结构执行结束后,i的值是多少,循环次数是多少?i--执行的次数是多少?#includestdio.hintmain(){inti=100,s=0,n=0;while(i--){s+=i;n++;}printf(%d,n);}参考答案:I的值为-1,循环次数是100,i--执行的次数为10153、在下列程序中,fun函数为一个递归函数,请将程序中的fun函数改为非递归函数,保持功能不变。#includestdio.hlongfun(intn){if(n==1)return1;elsereturnn*fun(n-1);}voidmain(){intn;printf(请输入n的值:);scanf(%d,&n);printf(%d!=%ld,n,fun(n));}参考答案:参考答案#includestdio.h#includestring.hviodfun(){intn;charch[10];gets(ch);n=strlen(ch);for(i=n-1;i=0;i--)printf(%c,ch[i]);}main(){f();}54、参考答案:1.(a+b=c)&&(a+c=b)&&(b+ca)_。2._____3.14_______。3.____15________。4.____3________。5.___scanf(“%d,%f%c”,&m,&n,&ch);_________。6.____extern________。7.___6____8.(1)a=0(2)=sum+a____(3)sum/n___;9.(1)i=1,max=0或max=i=0(2)max=i;(3)a[max]10、(1)return1;(2)f(a[i](3)a[j]A[J+1]11._(1)_&stu[i].score,&stu[i].sex,stu[i].name(2)_stu[i].score________;(3)__sum/N_________;12.(1)__*fp____(2)_\w\_____(3)__fp_____13.(1)___10___(2)__age(n-1)+2____(3)___age(5)_____14.(1)在数组a中寻找最大值的下标,输出数组a中的最大值及其下标。(2)依据学生答题评阅\p=(3)则输出结果为:最高成绩为:97,最高成绩是第7个55、下列表达式的值是多少?处理表达式后,a的值是多少?,假设整数类型变量a的值为12(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2)n的值等于5(6)a+=a-=a*a参考答案:表达式计算(1)表达式a=a+a的值是24?处理表达式后,a的值是24(2)表达式a=a-2的值是10处理表达式后,a的值是10(3)表达式a=a*(2+3)的值是60处理表达式后,a的值是60(4)表达式a=a/(a+a)的值是0,处理表达式后,a的值是60(5)表达式a%=(n%=2)的值是0,处理表达式后,a的值是12(6)表达式a+=a-=a*a的值是-264,处理表达式后,a的值是-26456、请简述算法、程序设计语言与程序的区别与联系参考答案:区别:算法(Algorithm)就是对解决某问题所采用的方法和步骤的描述。程序设计语言设计上就是一组符号及规则的集合。它是由语法、语义、语用三个要素组成。一个程序一般包括数据类型和算法两个方面的内容。其中数据类型(即数据结构)是对程序中的数据进行描述,指定数据在程序中的类型和数据的组织形式,它决定了数据的在内存中所占的存储空间和数据在内存中存放形式。而算法是对程序中数据的操作描述,是解决“做什么”和“怎么做”的问题,源程序中的操作语句就是算法的体现。正如著名计算机科学家沃思(NikiklausWirth)所提出的观点:程序=数据结构+算法。联系:程序设计语言是编写程序实现算法的语言工具57、什么是算法?算法的特征?算法的描述方法有哪些?参考答案:所谓算法(Algorithm)就是对解决某问题所采用的方法和步骤的描述。一个算法应该具有以下特点:(1)确定性:一个算法给出的每个计算步骤都必须是准确的、无二义性。在【例1.6】中每一个步骤的含义都是确定的。(2)有穷性:一个算法必须在执行有穷多个计算步骤后终止。在【例1.6】中执行4个步骤后问题处理结束。(3)有效性:算法中的每一个步骤必须能够有效地执行,并能够得到确定的结果。(4)输入:一个算法可以有0个或1个以上的输入。在【例1.6】中需要输入a,b,c三个数。(5)输出:一个算法有1个或多个的输出,一个算法得到的结果就是算法的输出。在算法的描述方法有:自然语言、流程图、N-S图等。58、4.写出下列表达式所对应的C语言表达式,其中x,y为整数,a,b,c为实数类型内容见附件写C语言表达式参考答案:(1)x*x-3.0*x*y/(2-y)(2)sqrt(fabs(a*b-c*c))(3)sqrt(abs(a*b-c*c)*cos(x)/a)(4)(1+sqrt(x))/(1-y/x)(5)cos(x)+sqrt(3*a*b)/(2-y)(6)sqrt(abs(a*b-c*c)*sin(x)/b)59、在下列程序中,函数f的功能是什么?该程序的运行结果是多少?#includestdio.hintfun(intnum){intk=1;do{k*=num%10;num/=10;}while(num0);returnk;}intmain(){intx=651,y=123;printf(%d,%d,fun(x),fun(y));}参考答案:函数f的功能是求任意整数的各位数字之积,该程序的运行结果是15,660、在下列程序中,函数p的功能是什么?该程序的运行结果是多少?#includestdio.hvoidsort(intx[],intn){inti,j,k,t;for(i=0;in-1;i++){k=i;for(j=i+1;jn;j++)if(x[k]x[j])k=j;if(i!=k){t=x[k];x[k]=x[i];x[i]=t;}}}intmain(){inta[10]={34,50,89,67,102,11,75,30,125,145},i;sort(a,10);for(i=0;i10;i++)printf(%10d,a[i]);}参考答案:函数p的功能是对n个整数排序该程序的运行结果是1130345067758910212514561、结构化程序设计方法的内容是什么?划分模块的基本原则?采用结构化方法的好处?参考答案:结构化程序设计方法是一种自顶向下、逐步求精、模块化的程序设计方法。按照结构化程序设计方法的思想,就是将给定的一个功能较多的复杂问题合理地划分为若干个较简单的子问题,还可以将这些子问题再分解为若干功能更简单的子任务(可将每个子任务看作一个模块),以便于“分而治之”在模块划分时,应该尽可能地保证数据的独立性和模块功能的唯一性。也就是说,各模块间的耦合性要尽量弱,即一个模块最好像是一个黑盒子,模块间的数据交换要尽量少;模块的内聚性要尽量强,即每个模块只完成单一的功能。结构化程序设计强调程序设计风格和程序结构的规范化,提倡结构清晰。良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风