C语言秋季作业试题和答案_第1页
C语言秋季作业试题和答案_第2页
C语言秋季作业试题和答案_第3页
C语言秋季作业试题和答案_第4页
C语言秋季作业试题和答案_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、0039C语言讲师:邹显春Z的值是 3i=1,max=0或max=i=0;max=i; amax 36、设int m=3;float n=12.6;char ch=a;,若用输入语句实现上述三个变量的初始化结果且键入数据形式为:3,12.6a<回车换行>,则scanf语句应是_ _。“%d,%f%c”,&m,&n,&ch37、设int i;float f=3.14;,执行i=(int)f;后,变量f的值是_。3.1438、若定义函数时类型缺省,则该函数默认的类型是_ _。extern 39、 设char s=” Nam

2、eAddress ”;,s的长度是_。1540、 设float a,b,c;,若a、b和c分别为三角形的三条边长,它们“能构成等边三角形”的逻辑表达式是_。(a+b=c)&&(a+c=b)&&(b+c>a) 41、编写C语言程序的一般步骤什么?在VC环境下,调试程序的基本步骤有哪些?调试程序中常见的错误有哪些?如何解决发现这些错误?编写C语言程序的一般步骤:分析问题、构建算法、描述算法、编码、调试。在VC环境下,调试程序的基本步骤有编辑、编译、连接、执行调试程序中常见的错误有语法错误和逻辑错误。其中语法错误通过编译来实现,逻辑错误通过单

3、步追踪和设置断点的方法来发现逻辑错误。42、在C语言为什么规定对所有用到的变量要"先定义,后使用”?这样的做有什么好处? 对所有用到的变量进行"先定义,后使用”的原因:凡未被事先定义的,C语言不把他认作变量,这样的目的能是为了保证程序中的变量能被正确的使用。好处:    (1)每一个变量被指定为一个确定类型,在编译时C语言就能为其分配相应的存储单元。    (2)指定每一个变量属于一个类型,便于在编译时检查在程序变量进行的运算合法性。43、请给出C语言的主要数据类型,请你至少给出4种以上的数据类

4、型实例。 主要数据类型有:C语言包括基本类型(整型、字符型、浮点型(单、双精度型)枚举类型)、构造类型(数组、结构体、共用体类型)、指针类型、空类型。整数型 int a=2 ;短整型 short b=3 ;单精度 float c=1 ;字符型 char d=abc44、一个C程序由哪些要素构成,请给出一个C语言程序进行说明。一个C程序由若干函数组成,但至少一个主函数。而每个函数包括函数的首部和函数体。程序: /* 注释开始  * file name : pun.c *  * (C) 2013 Rongbing Tang *  * This program prin

5、ts a statement  * "To C, or not to C: that's not a problem." 注释结束 *45、 编一程序求:1+(1+2)+(1+2+3)+(1+2+3+10)。 #include "stdio.h"main()int i,s=0,t=0; for(i=1;i<=10;i+)t+=i;s+=t;printf("%d",s);46、C语言程序包括哪些三种基本结构?请给出这三种基本结构的传统流程图或N-S图 C语言程序包括哪些三种基本结构:顺序结构、

6、选择(或分支)结构、循环结构. 三种基本结构图示依据作业情况评定&Oslash; 顺序结构顺序结构是一种最基本、最简单的程序结构。先执行A,再执行B,A与B是按照顺序执行。&Oslash; 选择(或分支)结构根据条件是否成立而去执行不同的程序模块。当条件P为真时,执行A,否则执行B,即要么执行A,要么执行B。&Oslash; 循环结构循环结构是指重复执行某些操作,重复执行的部分称为循环体。47、什么是函数的原型?其作用是什么?在这些作用中如何使用?答:若自定义了一个函数,则该函数的首部称之为该函数的原型函数原型的作用:调用函数的接口;用于原型声明其中函数的调用方法:函数

7、(实在参数)函数的原型声明:当被调用函数在调用函数之后时,必须进行原型声明,在程序最前面或在调用函数中进行声明,声明方法:函数的首部;48、什么是内部函数和外部函数? 内部函数:一个函数只能被本文件中的其它函数调所用,在定义时使用static。外部函数:一个函数不光是被本文件中其它函数调用,还可以被其它文件中的函数调用,定义时用extern。extern可缺省。 49、讨论题 1. 设float a,b,c;,若a、b和c分别为三角形的三条边长,它们“能构成等边三角形”的逻辑表达式是_。2. 设int i;float f=3.14;,执行i=(int)f;后,变量f的值是_。3. 设char

8、s=”tNameAddressn”;,s的长度是_。4.设int x=1,y=3,z;,执行z=x>y?+x:y+;后,z的值是_。5. 设int m=3;float n=12.6;char ch=a;,若用输入语句实现上述三个变量的初始化结果且键入数据形式为:3,12.6a<回车换行>,则scanf语句应是_ _。6. 若定义函数时类型缺省,则该函数默认的类型是_ _。7. 设int a5=l,3,5,7,9,*p=&a2;,则+(*p)的值是_8.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请

9、填空。main()    float x1000,sum=0.0,ave,a;    int n=0,i;    printf("Enter mark:n”);scanf("%f”,&a);    while((1))        sum_(2)_ _;xn=a;n+;scanf("%f”,&a);  

10、0; ave=_(3)_;    printf("Output:n”);    printf("ave=%fn”,ave);    for(i=0;i<N< SPAN>;i+)  if (xi<AVE)&NBSP;  printf(%5f.2”,xi); 9.下列程序的功能是在数组a中寻找最大值的下标,输出数组a中的最大值及其下标。请填空:   #include &

11、quot;stdio.h"void main()int a10,i,max;    for(i=0;i<10;i+)       scanf("%d",&ai);    for(   (1)    i<10;i+)       if(ai>amax)    (2) 

12、0;         printf("最大值为:%d  ,下标是:%d",     (3)  ,max);  10、下列程序的功能是:从键盘输入10数,找出其中的素数并按降序输出这些素数。请根据给定的程序和程序的功能完善该程序。(每空2分,共6分)。#include #include int f(int x)int i;  for(i=2;i<=sqrt(x);i+)   if(x%i=0) retu

13、rn 0;      (1)   void main()int a10,i,n=0,j,t;  for(i=0;i<10;i+)   scanf("%d",&ai);  for(i=0;i<10;i+)   if( (2)) n+;   else ai=0;  for(i=0;i<9;i+)   for(j=0;j<9-i;j+)   

14、  if( (3)  ) t=aj;aj=aj+1;aj+1=t;  printf("共有%d个素数,它们是:",n);  for(i=0;i<9;i+)    if(ai!=0) printf("%d  ",ai); 11. 从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#define N 10struct studentchar name 20;char sex;int score; stuN;void main( )int i;float

15、aver,sum=0;for(i=0;i<N< SPAN>;i+) scanf(“%d,%c%s”,(1)_ _);/*第一空*/sum=sum+_(2) _; /*第二空*/aver=_(3)_ _; /*第三空*/printf(“aver=%6. 2fn”,aver);12. 从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text. txt中。#include “stdio.h”void main()FILE (1)_; /*第一空*/char ch;if( (fp=fopen (“text. txt,_(2)_ _) )=NULL) exit(0); /*第

16、二空*/while( (ch=getchar( )!=?) fputc(ch,_(3)_ _); /*第三空*/fclose(fp);13. 用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=int age(int n)if (n=1) return (_(1)_ _); /*第一空*/else return(_(2)_ _); /*第二空*/void main()printf(%dn”,_(3)_ _); /*第三空*/14.依据下列提供的程序回答问题(1)提供程序的功能是什么?   #inclu

17、de "stdio.h"void main()int score10,i,max;    for(i=0;i<10;i+)      printf("请输入第%d个学生的成绩(0-100):n",i+1);      scanf("%d",&scorei);    for(i=1,max=0;i<10;i+)    &

18、#160;  if(scorei>scoremax)  max=i;           printf("最高成绩为:%d ,最高成绩是第%d个:%d",scoremax,max+1); (2)请依据提供的程序画出其中的传统流程图或N-S图。(3)在VC6.0环境下,运行上述程序时,若输入数据如89、87、77、67、87、80、97、80、97、74、58、84,则输出结果是什么?50、下列表达式的值是多少?处理表达式后, a的值是多少?,假设整数类型变量a

19、的值为12(1)a+=a                              (2)a-=2(3)a*=2+3                &

20、#160;           (4)a/=a+a(5)a%=(n%=2)  n的值等于5           (6)a+=a-=a*a51、请简述算法、程序设计语言与程序的区别与联系 区别:算法(Algorithm)就是对解决某问题所采用的方法和步骤的描述。程序设计语言设计上就是一组符号及规则的集合。它是由语法、语义、语用三个要素组成。一个程序一般包括数据类型和算法两个方面的内容。其中

21、数据类型(即数据结构)是对程序中的数据进行描述,指定数据在程序中的类型和数据的组织形式,它决定了数据的在内存中所占的存储空间和数据在内存中存放形式。而算法是对程序中数据的操作描述,是解决“做什么”和“怎么做”的问题,源程序中的操作语句就是算法的体现。正如著名计算机科学家沃思(Nikiklaus Wirth)所提出的观点:程序=数据结构+算法。联系:程序设计语言是编写程序实现算法的语言工具52、什么是算法?算法的特征一级算法的描述方法有哪些? 53、 4.写出下列表达式所对应的C语言表达式,其中x,y为整数,a,b,c为实数类型内容见附件写C语言表达式 (1)x*x-3.0*x*y/(2-y)(

22、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)54、在下列程序中,函数f的功能是什么? 该程序的运行结果是多少? #include "stdio.h"int fun(int num)int k=1; do   k*=num%10;    num/=10;while(num);  

23、0;     return k;void main()int x=651,y=123; printf("%d,%d",fun(x),fun(y);答:函数f的功能是求任意整数的各位数字之积, 该程序的运行结果是15,055、在下列程序中,函数p的功能是什么? 该程序的运行结果是多少? #include "stdio.h" void  sort(int x ,int n)   int i,j,k,t;    for(i=0;i<n-1;i+) k=i; 

24、0;for(j=i+1;j<n;j+)   if(xk>xj)k=j;   if(i!=k)   t=xk;xk=xi;xi=t;     void main( )   int a10=34,50,89,67,102,11,75,30,125,145,i;    sort(a,10);    for(i=0;i<10;i+) printf("%10d",ai);   答:函数p的功能是对n个整数排序,该程序的运行结果是11  30

25、0; 34   50  67  75  89  102   125 14556、结构化程序设计方法的内容是什么?划分模块的基本原则?采用结构化方法的好处? 结构化程序设计方法是一种自顶向下、逐步求精、模块化的程序设计方法。按照结构化程序设计方法的思想,就是将给定的一个功能较多的复杂问题合理地划分为若干个较简单的子问题,还可以将这些子问题再分解为若干功能更简单的子任务(可将每个子任务看作一个模块),以便于“分而治之”在模块划分时,应该尽可能地保证数据的独立性和模块功能的唯一性。也就是说,各模块间的耦合性要尽量弱,即一

26、个模块最好像是一个黑盒子,模块间的数据交换要尽量少;模块的内聚性要尽量强,即每个模块只完成单一的功能。结构化程序设计强调程序设计风格和程序结构的规范化,提倡结构清晰。良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护。著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。采用结构化程序设计方法的好处是:可以使每个模块功能明确,模块间的关系简单、清晰(即可读性强),每个模块内部的修改尽可能不影响其他模块(即独立性好),同时每个模块的正确性容易验证(即可维护性好)。57、通过你对C语言程序设计课程的学习,你认为语言程序设计具有哪些特点?并简要说明。C语言有哪些局限性?针对这些局

27、限性,是如何解决这些问题的? 答:特点:1、c语言是一种结构化的语言。 一个C语言程序是由一个或多个函数组成,函数是C语言的基本单位2、C语言有强大的表现能力和处理能力C语言具有丰富的运算符和数据类型,并且引入了结构、指针、地址、位运算、寄存器存储等功能,使C语言实现了对硬件编程操作,大大提高了从语言的表现能力和处理能力。3、C语言程序易于移植同汇编语言相比,C语言将与硬件相关的部分也通过库函数或其他相关函数来实现,不再依赖于具体的机器,广泛地移植到了各种类型计算机上,从而体现了C语言的易移植性。4、C语言的运行效率高用C语言编写的程序可通过编译获得高效的可执行代码局限:1、C语言的类型检查机

28、制相对较弱,使得程序中的一些错误不能在编译时由编译程序指出;2、C语言缺乏支持代码重用的语言结构;3、C语言不适合开发大型程序,当程序的规模达到一定程度时,程序员很难控制程序的复杂性。解决:C+语言正是为了解决上述问题而设计的。C+语言继承了C语言的精髓,如高效率、灵活性等,并增加了面向对象机制,弥补C语言不支持代码重用的不足,这对于开发大型的程序非常有效。C+语言成为一种可用于表现过程模型,又可用于表现对象模型的优秀程序设计语言。58、程序的功能是从键盘上任意输入一个正整数,求各位数字之和。请用模块化方法改写下列程序,功能不变。 #include "stdio.h”void mai

29、n()int n; int r,s=0;  scanf("%d”,&n);   dor=n%10;   s+=r;  n=n/10;    while(n>0);  printf("%d”, s);  答:#include "stdio.h”int add(int n)int r,s=0;dor=n%10;s+=r; n=n/10;while(n>0);return(s);void main()int m;scanf(&quo

30、t;%d”,&m);printf("%d”, add(m);59、 有如下程序#include  <stdio.h>int  fun(int  x) int  p;   if(x= =0 | x= =1)   return 3;   else  p=x-fun(x-2);   return  p;void  main() printf(" %d”,fun(9);该程序的输出结果是多少? 该程序的输出结果是7

31、60、下列函数的功能是什么    int fun(char *x)char *y=x;   while(*y+);   return y-x-1 函数的功能是求字符串的长度61、什么是指针,什么是指针变量?指针所指向的变量?给一实例说明 指针:就是一个变量的地址指针变量:有一个变量专门用来存放另一变量的地址(即指针)。如果将一个变量的地址(指针)赋给同一类型的指针变量,则该变量为指针变量所指向的变量。如int x=10,*p=&x;则:整数变量x的值为10,指针变量为p,指针所指向的变量为*p. 62、 从键盘上任意

32、输入20个2位或3位整数存放在array数组中,找出array数组中的能够被7整除的数存放在数组b中,并对b数组的值按升序排列。要求:(a)编写一个sort(int word,inta)函数实现排序功能。(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 (aj > aj +

33、 1)t = aj; aj = aj + 1; aj + 1 = t;printf("排序以后的数:");for (i = 1;i <= n;i+)printf("%d ", ai);printf("n");int main()int array20;int b20;int i,j=0;printf("请输入20个整数:");for (i = 0;i < 20;i+) scanf("%d", &arrayi); if (arrayi % 7 = 0)bj+

34、 = arrayi;printf("这20个整数中,能被7整除的有:");for (i = 0;i < j;i+)printf("%d ", bi);printf("n");sort(b, j);return 0;窗体底端63、编写一个函数计算函数f(x,y)=x2+y2+sin(x)的值,要求有输入输出提示,结果保留小数点后3位 窗体顶端本题参考答案:#include <stdio.h> #include <math.h>void main()double x, y,result;printf(&quo

35、t;请分别输入x,y的值:");scanf("%lf%lf",&x,&y); result = x*x + y*y + sin(x);printf("函数f(%.0lf,%.0lf)=%.3lfn", x, y, result);窗体底端64、输出100-900之间的所有奇数,并求出这些奇数的平均值输出 #include "stdio.h"  void main()int x, sum = 0, count = 0;for (x = 100;x <= 900;x+)if (x % 2 != 0

36、) printf("%dt", x);sum += x;count+;printf("n这些奇数的平均值是:%dn", sum / count);窗体顶端#include "stdio.h" void fun(int n) double s = 0.0, t1 = 1, t2 = 2, temp;int i;for (i = 1;i <= n;i+)s = s + t2 / t1;temp = t2;t2 = t1 + t2;t1 = temp;printf("此数列的前N项的和是:%.1lfn", s);v

37、oid main() int n;printf("请输入自然数N(N>1):n");scanf("%d", &n);fun(n);窗体底端66、输出1-500之间的所有偶数,并求出这些偶数的平均值输出。 #include <stdio.h> void main()int x, sum = 0, count = 0;for (x = 1;x <= 500;x+)if (x % 2 = 0) printf("%dt", x);sum += x;count+;printf("n这些偶数的平均值是:%

38、dn", sum / count);67、依据下列提供的程序回答问题 #include <stdio.h>int  fun(int  a,int  b)  int   r;   r=a%b;   while(r!=0)     a=b; b=r; r=a%b;    return(b);void main()  int  num1, num2,a;   printf("Inp

39、ut  num1  num2:   ");   scanf("%d%d",&num1,&num2);   printf("num1= %d,num2= %dnn",num1,num2);   a=fun(num1,num2);   printf("The maximun common divisor is %dnn",a);(1) 上述提供程序中,函数fun的功能是什么?(2)请依

40、据提供的函数fun代码画出其中的传统流程图或N-S图。(3)在VC6.0环境下,运行上述程序时,若输入的数据序列为24,,36其输出结果是什么?窗体顶端(1)上述提供程序中,函数fun的功能是求最大公约数   (2)请依据提供的函数fun代码画出其中的传统流程图或N-S图。     依据考生答题给分   (3)在VC6.0环境下,运行上述程序时,若输入的数据序列为24,,36其输出结果是:     num1= 24,num2=36  &

41、#160;  The maximun common divisor is12窗体底端68、空窗体顶端#include <stdio.h> #include <math.h>void main()double x, y,result;printf("请分别输入x,y的值:");scanf("%lf%lf",&x,&y); result = x*x + y*y + sin(x);printf("函数f(%.0lf,%.0lf)=%.3lfn", x, y, result);窗体底

42、端#include "stdio.h" void main() for (int i = 0;i <= 4;i+) for (int j = 0;j <= i;j+) printf("*");printf("n");窗体顶端#include "stdio.h" void fun(int n) double s = 0.0, t;int i;for (i = 1;i <= n;i+)t = 2 * i;s = s + (t - 1) * (t + 1) / (t*t); printf("此

43、数列的前N项的和是:%.3lfn", s);void main() int n;printf("请输入自然数N(N>1):n");scanf("%d", &n);fun(n);窗体底端71、写一个函数将一个字符串中的大写字母转换为小写,再写一个测试函数测试其功能。不允许使用strlwr函数 窗体顶端本题参考答案:#include <stdio.h> #include <math.h>void main()double x, y,result;printf("请分别输入x,y的值:");s

44、canf("%lf%lf",&x,&y); result = sqrt(x + 1) + y*y*y;printf("函数f(%.0lf,%.0lf)=%.3lfn", x, y, result);窗体底端73、依据下列提供的程序回答问题 #include <stdio.h>#include <math.h>int f(int x)int i;  for(i=2;i<=sqrt(x);i+)   if(x%i=0) return 0;      return 1;  void main()int a10,i,n=0;  for(i=0;i<10;i+)   scanf("%d",&ai); 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论