C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

合集下载

C语言程序设计教程课后习题答案

C语言程序设计教程课后习题答案

C语言程序设计教程课后习题答案第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。

答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。

3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。

4★指出合法与不合法的标识符命名。

答AB12--√ leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--×XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×5说明下列Turbo C热键的功能。

答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。

6说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。

①main(){printf("********************\n");printf(" welcome you \n");printf(" very good \n);printf("********************\n");}②main(){ int a,b,c,t;printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%d\n",t);}int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);}答运行结果:********************welcome youvery good********************运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

高级程序语言设计 清华大学出版社 第4章参考答案

高级程序语言设计 清华大学出版社 第4章参考答案

第四章一、单选题二、填空题1.122.-850, 2, 03.k=pk4.3575. 26.257.308.a*b*c*d*9. 5 3 3 510.12334三、编程题1.【分析与解答】(1)对于字符的输入要使用while循环,只是要注意,循环的终止条件是:等于‟\n‟。

(2)在while循环体中,用if条件来判断是否为数字字符,若是,就使对应的元素增1;if中的条件表达式可用C的库函数:isdigit(ch),这时要在程序前加:#include <ctype.h>行;也可用:ch>=‟0‟&&ch<=‟9‟。

(3)若用num数组元素来进行统计,当ch中是数字“0”时,使num[0]增1、当ch中是数字“1”时,使num[1]增1…,num的下标表达式可用:ch-…0‟。

(4)注意,在定义数组时,数组的大小应符合使用的要求。

在利用数组元素作为计数器时,不要忘记首先应该给数组元素赋0值。

(5)总结:通过本题的编程,要求掌握利用数组元素作为计数器的基本算法。

#include "stdio.h"void main(){int num[10]={0},i;char ch;scanf("%c",&ch);while(ch!='\n'){if(ch>='0' && ch<='9')num[ch-'0']++;scanf("%c",&ch);}for(i=0; i<10; i++)printf("The count of %d is:%d\n",i,num[i]);}2.【分析与解答】(1)使用while循环输入学生成绩,循环条件是a>=0.0 && a<=100 && n<1000;当输入的数不在0到100之间,或者输入的成绩个数超过1000个,则停止输入;(2)在while循环内,将输入的数累加到sum中,同时赋给数组元素x[n];(3)求出平均值,ave= sum/n;(4)使用for循环for (i=0;i<n;i++) if(x[i]<ave) printf ("%f\n",x[i]);判断数组中的数如果小于平均值就输出。

清华大学 c语言课本习题参考答案

清华大学 c语言课本习题参考答案

第1章习题一、选择题1、A2、D3、C4、D5、B6、C7、C8、B9、B 10、A二、填空题1、一,函数体2、main(主),main(主)3、编译,目标4、.c,.obj,.exe5、缩进,无影响,/* */三、程序分析题1、*****************Very good!*****************2、a=12,b=5a=17,b=223、r= 5.50,s=95.033098四、编程题1.用printf()函数在屏幕上输出自己的班级、学号、姓名。

#include"stdio.h"void main(){printf("班级:BX1109\n");printf("学号:111003530901\n");printf("姓名:王孟荣\n");}2.从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。

#include<stdio.h>void main(){int x,y,a,b,c;float d;printf("Please Input Two Integers:\n");scanf("%d%d",&x,&y);a=x+y;b=x-y;c=x*y;d=1.0*x/y;printf("a=%d\nb=%d\nc=%d\nd=%f\n",a,b,c,d);}第2章习题一、选择题1~5 BCDCD6~10 DBBCA二、填空题1.单精度浮点型、双精度浮点型、字符型2.03.x%10*10+x/104.5.55.5.7 206.sin(sqrt(x*x))/(a*b)7.,8.1111011 173 7B9.3 310.3三、程序分析题1.7,8,102.1,33. 5 F4.(int)i=12, 12.505. 461579112四、编程题1.编写程序,求表达式c=21%9-(float)a+4/b*b的值,假设表达式中a和b 的值分别由键盘输入。

《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社

《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社

《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社4-5原题:打印出下题的结果main(){int a=5,b=7;float x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%d\n",a,b);printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y);printf("%-10f,%-10f\n",x,y);printf("%8.2f,%8.2f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);printf("%e,%10.2e\n",x,y);printf("%c,%d,%o,%x\n",c,c,c,c);printf("%ld,%lo,%x\n",n,n,n);printf("%u,%o,%x,%d\n",u,u,u,u);printf("%s,%5.3s\n","COMPUTER","COMPUTER");}结果:575 767.856400,-789.12402367.856400 ,-789.12402367.86, -789.12,67.856400,-789.124023,67.856400,-789.1240236.78564e+01, -7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM4-6原题:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。

C语言程序设计项目教程课后参考答案

C语言程序设计项目教程课后参考答案
(3)连接(4)#(5).h(6).c .obj .exe
2.选择题
(1)C(2)C(3)D(4)B(5)D(6)A
3.程序设计题
(1)#include <stdio.h>
voidmain()
{
printf(“*”);
printf(“**”);
printf(“***”);
printf(“**”);
printf(“*”);
1.
int fun(int x,int y)
{
char c;
switch(c=getchar())
{
case '+':return x+y;break;
case '*':return x*y;break;
default:printf("输入的符号不对!");
}
}
2.
#include<string.h>
void main()
{
char c;
c=getchar();
putchar(c-1);
putchar(c);
putchar(c+1);
}
(2)#include<stdio.h>
void main()
{
int score1,score2,score3,score4,sum;
float avr;
scanf("%d,%d,%d,%d",&score1,&score2,&score3,&score4);
int min,row2,column2;
for (i=0;i<4;i++)

《C语言程序设计》课件 《C语言程序设计》参考答案

《C语言程序设计》课件 《C语言程序设计》参考答案

《C语言程序设计》教材参考答案包括各单元:一.随堂练习二.本章自测第1章一.随堂练习【随堂练习1-1】1.根据上述示例模仿编程,输入正方形的边长,计算其面积。

#include <stdio.h>void main( ){ int a,s; //数据准备,边长a,面积sprintf("请输入正方形的边长:");scanf("%d",&a); //数据输入s=a*a; //数据计算printf("该正方形的面积为:%d.\n",s);}【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。

答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。

答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。

【随堂练习1-3】1.在VC++6.0环境中完成【例1.2】程序开发过程。

(略)2.查阅【例1.2】所对应的工程文件夹,了解相关文件的含义。

工程文件夹中:.CPP:用C/C++语言编写的源代码文件。

.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。

项目文件,文本格式。

.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。

C语言程序设计基础教程课后习题答案(清华大学出版社于延编)自己做欢迎校正

C语言程序设计基础教程课后习题答案(清华大学出版社于延编)自己做欢迎校正
flag=0; } if(x>1) printf("%d \n",x); } int main() { int n; scanf("%d",&n); f(n); system("pause");} 7.输入一个正整数,输出其所有正真约数,写出 算法。 #include<stdio.h> #include<stdlib.h> void yueshu(int num) {
四、编程题 1.从键盘上输入 5 个整数, 输出最大值(要求至少用 两种方法编程)。 ① #include<stdio.h> #include<stdlib.h> int max(int *a){ int b,i; b=a[0]; for(i=1;i<5;i++) if(b<a[i]) b=a[i]; return b; } int main(){ int i,a[5]; for(i=0;i<5;i++) scanf("%d",&a[i]); printf("最大值为:%d\n",max(a)); system("pause"); }
flag=1; n+=i; //将约数累加到 n 中 } } return n; //是这个数本身时返回值为 n } int main() { int m; scanf("%d",&m); printf("真约数之和=%d\n",f(m)); system("pause");}
4.设计算法求出 10000 以内所有孪生素数对。
if(i==j) printf("%5d",i);

c语言程序设计基础教程课后答案

c语言程序设计基础教程课后答案

c语言程序设计基础教程课后答案C语言程序设计基础教程课后答案第一章:C语言概述1. 简述C语言的特点。

- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。

- 它支持多种编程范式,如过程式编程、结构化编程、面向对象编程等。

- C语言具有较低的抽象级别,接近硬件,因此执行效率较高。

2. C语言的发展历史。

- C语言在1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。

- 它最初是作为UNIX操作系统的系统编程语言而设计的。

第二章:C语言环境和基本语法1. 如何设置C语言的开发环境?- 选择一个C语言编译器,如GCC、MSVC等。

- 安装编译器并配置环境变量,以便在命令行中直接调用编译器。

2. C语言的基本语法结构是什么?- C语言的基本结构包括预处理指令、函数定义、变量声明和语句。

第三章:数据类型、运算符和表达式1. C语言中的基本数据类型有哪些?- 整型(int)、字符型(char)、浮点型(float和double)等。

2. 运算符的分类及其用法。

- 算术运算符:+、-、*、/、%等。

- 赋值运算符:=、+=、-=等。

- 比较运算符:==、!=、>、<等。

- 逻辑运算符:&&、||、!等。

第四章:控制语句1. 条件语句的用法。

- if语句用于基于条件执行代码块。

- switch语句用于多条件选择。

2. 循环语句的用法。

- while循环用于在满足条件时重复执行代码块。

- for循环用于已知迭代次数的循环。

- do-while循环先执行代码块再判断条件。

第五章:数组和字符串1. 数组的基本概念和使用。

- 数组是相同数据类型的元素集合,存储在连续的内存位置。

- 声明数组:int arr[10]; 表示一个包含10个整数的数组。

2. 字符串的表示和操作。

- 在C语言中,字符串是以空字符('\0')结尾的字符数组。

- 使用标准库函数如strcpy、strlen等操作字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章习题解答一、选择题1.在C语言中,函数返回值的类型最终取决于A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型解析:函数返回值类型最终取决于定义函数时所定义的函数类型。

答案:A2.设函数Fun()的定义形式为:void Fun(char ch, float x){}则以下对函数Fun()的调用语句中,正确的是。

A)Fun("abc", ; B)t = Fun('D', ;C)Fun('65', ; D)Fun(32, 32);解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。

只有选项D才是合法的函数调用形式。

答案:D3.有以下程序:/* 文件路径名:ex4_1_3\ */#include <> /* 标准输入/输出头文件*/int f1(int x, int y) { return x > y x : y; }int f2(int x, int y) { return x > y y : x; }int main(void) /* 主函数main() */{int a = 4, b = 3, c = 5, d = 2, e, f, g; /* 定义变量*/e = f2(f1(a, b), f1(c, d));f = f1(f2(a, b), f2(c, d));/* 调用函数*/g = a + b + c + d - e - f; /* 算术运算*/printf("%d,%d,%d\n", e, f, g); /* 输出e,f,g */return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。

A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。

因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4;f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3;g=a+b+c+d-e-f=4+3+5+2-4-3=7。

答案:A4.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是。

A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不会占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元解析:在C语言中,函数的形参和实参是分别占用不同的存储单元的,因此,选项D是正确的。

答案:D5.有以下程序:/* 文件路径名:e4_1_5\ */#include <> /* 标准输入/输出头文件*/int a = 1; /* 全局变量*/int f(int c) /* 定义函数*/{static int a = 2; /* 静态变量*/c++; /* c自加1 */return (a++) + c; /* 返回函数值*/}int main(void) /* 主函数main() */{int i, k = 0; /* 定义变量*/for (i = 0; i < 2; i++){ int a = 3; k += f(a); } /* 循环调用f()函数*/k += a; /* 将全局变量a的值加到k */printf("%d\n", k); /* 输出k */return 0; /* 返回值0, 返回操作系统*/}程序的运行结果是。

A)14 B)15 C)16 D)17解析:题中“static int a=2”定义了一个static局部变量,编译程序为其生成永久存储单元,在调用函数f()时,值一直都保存着,在主函数中,for循环进行两次,第一次循环得f(3)=2+3+1=6,从而k+=f(3)=6,第二次循环由于static局部变量a变成了3,从而f(3)=3+3+1= 7,故k+=f(3)=13,最后执行k+=a时,此时a的值为全局变量,其值为1,所以k的值为14,选项A是正确的。

答案:A6.有以下程序:/* 文件路径名:e4_1_6\ */#include <> /* 标准输入/输出头文件*/int a = 4; /* 全局变量*/int f(int n) /* 定义函数*/{int t = 0; /* 局部变量*/static int a = 5; /* 静态变量*/if (n % 2) {int a = 6; t += a++; }else { int a = 7; t += a++; }return t + a++; /* 返回函数值*/}int main(void) /* 主函数main() */{int s = a, i; /* 定义变量*/for (i = 0; i < 2; i++) s += f(i); /* 循环调用f()函数*/printf("%d\n", s); /* 输出s */return 0; /* 返回值0, 返回操作系统*/}程序运行后的输出结果是。

A)24 B)28 C)32 D)36解析:main()函数在开始时,s=a=4,其中的a为全局变量。

第1次循环时,i=0,f(i)=f(0),将0传递给形参n,首先执行if语句中的条件“n%2”;条件为假,则执行else下的复合语句“{ int a = 7; t += a++; }”,可知t=0+7=7,使用return返回t=7+(a++)=7+5=12,a运算完后自增1,变为6,这里的a为函数f()内,复合语句之外的a,返回主函数后s=4+12=16。

第2次循环时,当i=1时,f(i)=f(1),将1传递给形参n,首先执行if语句中的条件“n%2”;条件为真,则执行if下的得合语句“{ int a = 6; t += a++; }”,可知t=0+6=6,使用return返回t=6+(a++)=6+6=12,这里的a为函数f()内,复合语句之外的a,返回主函数后s=16+12=28。

答案:B7.有以下程序:/* 文件路径名:e4_1_7\ */#include <> /* 标准输入/输出头文件*/Fun(int x, int y){static int m = 0, i = 2; /* 静态变量*/i += m + 1; m = i + x + y; /* 对静态变量作赋值运算*/return m; /* 返回函数值*/}int main(void) /* 主函数main() */{int j = 1, m = 1, k; /* 定义变量*/k = Fun(j, m); /* 调用函数Fun() */printf("%d,", k); /* 输出k */k = Fun(j, m); /* 调用函数Fun() */printf("%d\n", k); /* 输出k */return 0; /* 返回值0, 返回操作系统*/}执行后的输出结果是。

A)5,5 B)5,11 C)11,11 D)11,5解析:在第1次调用Fun()函数时,x=1,y=1,函数Fun()的静态变量i=2+0+1=3,m=3+1+1=5,返回m=5。

在第2次调用Fun()函数时,x=1,y=1,函数Fun()的静态变量i=3+5+1=9,m=9+1+1=11,返回m=11。

答案:B8.在一个C源程序文件中所定义的全局变量,其作用域为。

A)所在文件的全部范围B)所在程序的全部范围C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围解析:全局变量的作用域不但从具体定义位置开始,直到文件结束为止,而且还可用extern声明来扩大作用域围,所以此选项D正确。

答案:D9.在C语言中,函数的隐含存储类别是。

A)auto B)static C)extern D)无存储类别解析:C语言规定,函数的隐含存储类别为外部类型,即extern类型,允许其他文件中的函数调用。

答案:C10.有以下程序:/* 文件路径名:ex4_1_10\ */#include <> /* 标准输入/输出头文件*/int Fun(int x){if (x == 0 || x == 1) return 3; /* 递归结束*/else return x - Fun(x - 2); /* 递归调用*/}int main(void) /* 主函数main() */{printf("%d\n", Fun(7)); /* 输了Fun(7) */return 0; /* 返回值0, 返回操作系统*/}执行后的输出结果是。

A)7 B)3 C)2 D)0解析:x=7,通过递归调用Fun()函数后得到Fun(7)= 7-Fun(5)= 7-(5-Fun(3)) =2+3-Fun(1)=2。

答案:C*11.下面选项中不属于面向对象程序设计特征的是。

A)继承性B)多态性C)类比性D)封装性解析:面向对象技术有三个重要特性:封装性、继承性和多态性;而类比性不属于面向对象的特征。

答案:C12.对于一个正常运行的C程序,以下叙述中正确的是。

A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束解析:C程序的执行总是从main函数开始,完成对其他函数的调用后返回到main函数,最后由main函数结束整个程序。

一个C源程序有且公有一个main函数。

答案:A二、填空题1.以下程序中,函数Fun()的功能是计算x2-2x+6,主函数中将调用Fun()函数计算:y1 = (x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。

/* 文件路径名:e4_2_1\ */#include <> /* 标准输入/输出头文件*/#include <> /* 数学函数首部文件*/double Fun(double x) { return x*x - 2 * x + 6; }int main(void) /* 主函数main() */{double x, y1, y2; /* 定义变量*/printf("输入x:"); /* 输入提示*/scanf("%lf", &x); /* 输入x */y1 = Fun( 【1】); /* 调用函数Fun() */y2 = Fun( 【2】); /* 调用函数Fun() */printf("y1=%lf, y2=%lf\n", y1, y2); /* 输出y1,y2 */return 0; /* 返回值0, 返回操作系统*/}解析:函数的一般调用形式为:函数名(实在参数表),在调用时将实参的值赋给形参,实参可以是常量、变量或表达式。

相关文档
最新文档