c语言程序设计教程答案_周鸣争
- 格式:doc
- 大小:108.00 KB
- 文档页数:54
重要提醒:请同学们认真复习,为后续课程打好基础,祝取得好成绩!五种题型:填空、选择、阅读程序写结果,程序填空,编程题每章基本概念要熟练掌握(教材中填空和选择有可能认真做一遍)常用算法一定要掌握:顺序结构:定义,赋值(输入),处理,输出分支结构:能够读懂各种结构程序循环结构:读程序,填空最大公约数,最小公倍数,求和,阶乘,水仙花数,回文数,完数,同构数,素数判断,哥德巴赫猜想,孪生素数等。
数组:一维数组排序,查找(顺序,折半),找最大小值,求平均值等二维数组;输入和输出二维数组,杨辉三角形函数:能将上述循环、数组部分用函数实现,并正确调用指针:掌握相关概念,能够阅读程序写结果预处理:基本概念,阅读程序自定义数据类型、文件中的基本概念(填空,选择)附书后作业的选择和填空题的全部答案及部分编程题的参考答案练习题1参考答案一、选择题二、填空题1.程序设计语言主要分为以下三类:机器语言、汇编语言和高级语言。
2.在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。
3.C程序开发过程的一般步骤为:源程序的编辑、编译、连接和运行。
4. C程序源文件的扩展名为.c ,编译成功后产生的文件扩展名为.obj ,连接成功后产生文件扩展名为.exe 。
三、应用题略练习题2参考答案一、选择题二、填空题1.通常一个字节包含8 个二进制位。
在一个字节中能存放的最大(十进制)整数是255(无符号),127(带符号),最小(十进制)整数是-128 ,它的二进制数的形式是10000000 。
2.在C语言中,十进制数30的八进制数表示形式是 036 ,十六进制数表示形式是 0x1e ,在内存中它的二进制数表示形式是 0000000000011110 。
3.条件“20<x<30或x<-100”的C语言表达式是 x>20&&x<30||x<-100 。
4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b 值为 4 ,c值为 2 。
C语言程序设计基础教程习题答案习题答案第1章1.1 填空题1.1.1 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main 。
1.1.2 一个函数由__函数头__和__函数体__两部分组成。
1.1.3 在C语言中,输入操作是由库函数__scanf 完成的,输出操作是由库函数_printf_完成的。
1.1.4 通过文字编辑建立的源程序文件的扩展名__是_.c;编译后生成目标程序文件,扩展名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。
1.1.5 C语言程序的基本单位或者模块是__函__数。
1.1.6 C语言程序的语句结束符是____;。
1.1.7 编写一个C程序,上机运行要经过的步骤:______________________________。
1.1.8 在一个C语言源程序中,注释部分两侧的分界符分别__为_/*和__*/__。
1.1.9 C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。
且第一个字符必须为字母或下划线。
1.1.10 C语言中的标识符可分为关键字、预定义标识符和用户标识符 3类。
1.2 选择题1.2.1 一个C程序的执行是从( A )。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束 1.2.2 以下叙述不正确的是(C)。
A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C) 在C程序中,注释说明只能位于一条语句的后面D) C程序的基本组成单位是函数1.2.3 C语言规定:在一个源程序中,main函数的位置( C )。
A)必须在程序的开头 B)必须在系统调用的库函数的后面C)可以在程序的任意位置 D)必须在程序的最后1.2.4 C编译程序是 (A)。
习题 9一.选择题1. A2. A3. A4. A5.B6.C二编程题9.2 编写一函数,判断N×N矩阵是否为上三角阵。
上三角阵是指不含主对角线,下半三角都是0的矩阵。
#include <stdio.h>int fun(int x[][3],int n){int flag=1,i,j;for(i=1;i<n;i++)for(j=0;j<i;j++)if(x[i][j]!=0){flag=0;break;}return flag;}void main(){int a[3][3]={{1,4,5},{0,2,6},{0,0,3}};int result=fun(a,3);if(result==1)printf("此矩阵是上三角矩阵!\n");elseprintf("此矩阵不是上三角矩阵!\n");}9.3 有一个字符串,包含n个字符,将字符串从第i 个字符到第j个字符间的字符逆置。
程序代码:#include <stdio.h>#include <string.h>void invertsub(char *str,int i,int j){char *p,*q,c;int n=0;p=q=str;if(str==NULL)printf("str is NULL!\n");else if(i<=0||j>strlen(str))printf("i and j value error!\n");else {while(*p!='\0'&&n!=i-1){ p++;n++; }q=p;while(*q!='\0'&&n!=j-1){q++;n++;}while(p<q){c=*p;*p++=*q;*q--=c;}}}void main(){char str[]="abcdefg";printf("%s\n",str);invertsub(str,2,5);printf("%s\n",str);}9.4 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.程序源代码:main(){int number[20],n,m,i;printf("the total numbers is:");scanf("%d",&n);printf("back m:");scanf("%d",&m);for(i=0;i<n-1;i++)scanf("%d,",&number[i]);scanf("%d",&number[n-1]);move(number,n,m);for(i=0;i<n-1;i++)printf("%d,",number[i]);printf("%d",number[n-1]);}move(array,n,m)int n,m,array[20];{int *p,array_end;array_end=*(array+n-1);for(p=array+n-1;p>array;p--)*p=*(p-1);*array=array_end;m--;if(m>0) move(array,n,m);}9.5 输入n个整数,将最小数与第一个数对换,把最大数与最后一个数对换程序源代码:main(){int number[10];input(number);max_min(number);output(number);}input(number)int number[10];{int i;for(i=0;i<9;i++)scanf("%d,",&number[i]);scanf("%d",&number[9]);}max_min(array)int array[10];{int *max,*min,k,l;int *p,*arr_end;arr_end=array+10;max=min=array;for(p=array+1;p<arr_end;p++)if(*p>*max) max=p;else if(*p<*min) min=p;k=*max;l=*min;*p=array[0];array[0]=l;l=*p;*p=array[9];array[9]=k;k=*p;return;}output(array)int array[10];{ int *p;for(p=array;p<array+9;p++)printf("%d,",*p);printf("%d\n",array[9]);}9.6 输入n个字符串,按由小到大顺序输出。
C语言程序设计实用教程参考答案第2章课后习题参考答案一、(略)二、单选题1、C2、D3、C4、A5、C6、D7、C8、B9、D 10、A三、填空题1、 12、 8803、 100000104、000011115、111100006、 3 .500000 0四、写程序运行结果1、 2,12、 03、 164、35、 1五、编程题解:设鸡有X只,兔有Y只,根据题意可得方程如下:x+y=a2x+4y=b解方程组可得到:x=(4*a-b)/2y=(b-2a)/s编程如下:#include#includemain( ){int x,y,a,b;scanf(“%d,%d”,&a,&b);x=(4*a-b)/2;y=(b-2*a)/2;printf(“There are %d chicken.\n”,x);printf(“There are %d rabbit.\n”,y);}2、(题意看书上:求三角形面积)#include#includemain( ){int a,b,c;float s ,area;printf(“Please input 3 numbers for triangle:\n”); scanf(“%d,%d,%d”,&a,&b,&c);s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%f”,area);}第3章课后习题参考答案单选题B 2、BC 3、A 4、D 5、B 6、C7、C 8、C 9、A 10、A 11、C 12、C 13、B 14、C 15、B 16、B1、 a=20,b=40,c=202、 233、684、a=%d ,b=%d5、 1 65 1.5 6.56、a=3.140000,3.1400000e+00,3.140e+00,3.140e+00b=-3.141,-3.1415e+00,-3.1415e+007、x=4 y=11 8 k=4 9 x=4.900000 y=4 10 **********填空题1、 (1) d,e (2) (a>b) (3) (d>c) 输出显示:max=72、(1)k=1;break;(2)k=2;break;(3)k=3;break;(4)k=4;break;(5)k=5;bre ak;3 4、(i%3==0)&&(i%5==0)&&(i%7==0) 5、i=0,j=0,n; scanf(“%d”,&n);四、编程题1.要求从大到小打印三个整数,a,b,c.main(){int a,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a<b)< p="">{ t=a; a=b; b=t;}if(a<c)< p="">if(b<c)< p="">{ t=b; b=c; c=t;}printf("big to small:%d %d %d\n",a,b,c);}2.编程求一元二次方程的根#includemain(){float a,b,c,disc,x1,x2,realpart,imagpart;printf("input canshu a,b,c");scanf("%f,%f,%f",&a,&b,&c);printf("The equation ");if(fabs(a)<=1e-6)printf("is not a 2 ci fangcheng.");elsedisc=b*b-4*a*c;if(fabs(disc)<=1e-6)printf("has two equal roots:%f\n", -b/2*a); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a);printf("has distinct real roots:%f and %f\n",x1,x2); }else{realpart=-b/2*a;imagpart=sqrt(-disc)/(2*a);printf("has complex roots:\n");printf("%f+%fi\n",realpart,imagpart);printf("%f-%fi\n",realpart,imagpart);}}3.main(){float a,r,rate,bonus;printf("input a(jiangjin):");scanf("%f",&a);if(a<500)rate=0;else if(a>=500&&a<1000)rate=(a-500+1)*0.05;rate=(a-1000+1)*0.08+500*0.05;else if(a>=2000&&a<3000)rate=(a-2000+1)*0.1+1000*0.08+500*0.05;elserate=(a-3000+1)*0.15+1000*0.1+1000*0.08+500*0.05; bonus=a-rate;printf("rate=%f,bonus=%f\n",rate,bonus);}3’main(){float a,r,rate,bonus,t;printf("input a(jiangjin):");scanf("%f",&a);t=a/500;if(t>6) t=6;switch((int)(t)){case 0: rate=0; break;case 1: rate=(a-500+1)*0.05; break;case 2:case 5: rate=(a-2000+1)*0.1+1000*0.08+500*0.05; break;case 6: rate=(a-3000+1)*0.15+1000*0.1+1000*0.08+500*0.05; break; } bonus=a-rate;printf("rate=%f,bonus=%f\n",rate,bonus);}4.编程,将2000到3000年之间的闰年输出main(){int y;for(y=2000;y<=3000;y++){if(y%4==0&&y%100!=0||y%400==0)printf("%d ",y);}}5.从键盘输入若干字符,统计其中字母符号(区分大小写),数字符号和其他字符的个数。
C语言程序设计基础教程课后习题答案(清华大学出版社于延编)自己做的欢迎校正第一章计算机程序设计导论一、简答题1.请简述计算机程序设计语言的发展历程。
答:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C 语言是一种面向对象的编程语言,也属于高级语言。
2.什么是算法,请举例设计一个算法。
答:算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。
或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
求两个数的最大公约数设两个变量M和N1.如果M<n,则交换m和n< p="">2.M被N除,得到余数R3.判断R=0,正确则N为最大公约数否则进行下一步4.将N赋值给M,将R赋值给N,重复第一步3.请叙述算法都有哪些特性。
答:①有穷性②群定性③有效性④有零个或多个输入⑤有一个或多个输入4.请叙述什么是结构化程序设计以及结构答:①只要有几种简单类型的借口,就可以构成任意复杂的程序。
这样可以使程序设计规范化,便于用工程的方法来机型软件生产,由顺序结构,选择结构,循环结构这三种基本结构组成的程序就是结构化程序。
二、算法设计题1.设计算法求1+2+3+…+100的和。
#include#includemain(){int I,S = 0;for(I = 1;I<=100;I++) //求1-100的和S=S+I;printf("%d\n",S);system("pause");}2.已知两个自然数M和N,请设计算法输出它们的最小公倍数。
#include#include#includeint fmax(int m,int n) //求最大公约数{int r;r=m%n;while (r!=0){m=n;n=r;r=m%n;}return n;}int fmin(int m,int n) //最小公倍数=两个数的积除两个数的最大公约数{ return m*n/fmax(m,n);}main(){ int a,b;scanf("%d%d",&a,&b);printf("fmin is:%d\n",fmin(a,b));system("pause");}3.已知一个自然数N,请设计算法输出它所有真约数的和。
各章习题参考答案第1章习题参考答案1. 简述C程序的结构特点。
答:(1) 一个C语言源程序由一个或多个源文件组成。
每个源文件由一个或多个函数构成,其中有且仅有一个主函数(main函数)。
(2) 一个函数由函数首部(即函数的第一行)和函数体(即函数首部下面的大括号内的部分)组成。
函数首部包括函数类型、函数名和放在圆括号内的若干个参数。
函数体由声明部分和执行部分组成。
(3) C程序书写格式自由,一行内可以写多条语句,一个语句也可以分写在多行中,每个语句必须以分号结尾。
(4)程序的注释内容放在“/*”和“*/之”间,在‘/’和‘*’之间不允许有空格;注释部分允许出现在程序中的任何位置处。
2. 分析例1.3程序的结构。
答:下面是例1.3的程序,它的结构是:有且只有一个主函数main以及若干个其它函数,还有一个被主函数调用的sumab函数。
函数有首部,包括类型和名称,首部下的大括号中有变量定义、输入、计算和输出等语句。
#include <stdio.h>int sumab (int x, int y); /*函数声明*/int main () /*主函数*/{ int a,b,sum; /*定义变量*/printf("请输入变量a与b的值:"); /*提示信息*/scanf ("%d %d", &a, &b); /*输入变量a和b的值*/sum=sumab(a,b); /*调用sumab函数*/printf("a与b的和等于%d", sum);/*输出sum的值*/return 0;}int sumab (int x, int y) /*定义sumab函数,并定义形参x、y */{ int z;z=x+y;return z;}3. 分别编写完成如下任务的程序,然后上机编译、连接并运行。
(1) 输出两行字符,第1行是“The computer is our good friends!”,第2行是“We learnC language.”。
一、思考题1.汇编语言与高级语言有何区别汇编语言是用助记符来代表机器语言的代码,用汇编程序将汇编语言翻译成机器语言,汇编语言指令与机器指令是一一对应的。
高级语言不依赖计算机具体型号,具有良好的移植性和可读性,一条高级语言语句通常对应多条机器指令。
2.所有的C编译器都是相同的吗不相同。
编译程序是将高级语言编写的程序翻译成机器语言程序,由于不同机器的机器指令不同,因此编译程序也不同。
3.什么是源程序文件用任何一种高级语言编写的程序称为源程序。
4.通常程序的错误有哪些它们之间有什么区别语法错误、逻辑错误和运行异常。
语法错误是指源程序中存在违反语法规则的地方,编译器可以发现这类错误。
逻辑错误是指程序没有完成预期功能,编译器发现不了这类错误,导致程序运行后不能得到正确结果,一般需要进行调试才能修正逻辑错误。
运行异常是指程序运行环境的非正常情况考虑不足而导致程序的运行异常终止。
5.C和C++的特点有哪些1)C++是C语言的超集,C++由两个部分组成:一个是过程性语言部分,这部分与C语言无本质区别,一般遵守ANSI C标准;二是类和对象部分,这是C语言所没有的,它是面向对象程序设计的主体。
2)C++充分保持了与C语言的兼容性,绝大多数C语言程序不可以不经修改直接在C++环境中运行。
3)C++仍然支持面向过程的程序设计,是一种理想的结构化程序设计语言,又几乎全部包含了面向对象程序设计的特征。
4)C++继承了C语言的高效率、灵活性等优点,C++使程序“结构清晰、易于扩展、易于维护而不失效率”。
5)C++是一种标准化的、与硬件基本无关的、广泛使用的程序设计语言,具有很好的通用性和可移植性。
C++程序通常无需修改,或稍作修改,即可在其他计算机系统上运行。
6)具有丰富的数据类型和运算符,并提供了功能强大的库函数。
6.程序设计有哪些主要步骤分析问题、系统设计、用某种程序设计语言编程、测试与调试、整理并写出所有的文档资料、运行与维护。
titleC语言程序设计(郑州轻工业大学) 中国大学mooc答案100分最新版content点击这里,复制通过码第一章绪论第一章单元测验1、通常把高级语言源程序翻译成目标程序的程序称为( )。
答案: 编译程序2、关于C语言,下面叙述不正确的是()。
答案: 不用编译可以直接运行。
3、程序的开发步骤中不包括()。
答案: 编译链接4、 zzuliOJ的1000:从今天开始入坑C语言通过码答案: ikJ3Wx00syCxTCfJJpvCjVRSePQ5、 zzuliOJ的1001:整数a+b 通过码答案: jkJ2W0pnsnCxTCfJJpvCjVRSePU6、 zzuliOJ1002: 简单多项式求值通过码答案: g0QlCkxntSyxTCfJJpvCjVRSePY第二章简单C程序设计第二单元测验1、关于定点数和浮点数的说法,下列说法错误的是()。
答案: 浮点数表示的数即是数值的精确值2、以下哪种运算能从变量x中取得十进制最低位的数字()。
答案: x % 103、以下哪个数字的值最大()。
答案: 1e24、设有变量定义: float x=2.5; double y=6.0; 则表达式 (int)x / y的值为( )。
(如果结果是浮点类型,用小数点后一位数字表示)答案: 3.05、变量的名字代表内存中的存储单元;变量名和内存中的存储单元相对应,通过变量名来存、取存储单元的内容。
答案: 正确6、变量被定义后没有赋值,其值不可以使用,是内存中残留的垃圾值。
答案: 正确7、变量是在程序执行期间其值可以改变的量,必须先定义后使用。
答案: 正确8、当赋值语句右边表达式类型与左边变量类型不一致时,以右边表达式的值作为赋值表达式的值。
答案: 错误9、 zzuliOJ1003:两个整数的四则运算通过码答案: ikcgXkln5yyxTCfJJpvCjVRSePc10、 zzuliOJ1004:三位数的数位分离通过码答案: iUUkWxg2s3CxTCfJJpvCjVRSePA11、 zzuliOJ1005:整数幂通过码答案: gx5zX082t3SxTCfJJpvCjVRSePE12、 zzuliOJ1006:求等差数列的和通过码答案: 2B8gCk5k5SKxTCfJJpvCjVRSePI13、 zzuliOJ1007:鸡兔同笼通过码答案: iUNzXx015nCxTCfJJpvCjVRSePM14、 zzuliOJ1008:美元和人民币通过码答案: ihJzCkoyvXGxTCfJJpvCjVRSePw15、 zzuliOJ1009:求平均分通过码答案: 2BFyWhs2vHexTCfJJpvCjVRSeP016、 zzuliOJ1010:求圆的周长和面积通过码答案: jBRzD043syWxTCfJJpvCjVRSefQ17、 zzuliOJ1011:圆柱体表面积通过码答案: ixcjXxxnsHaxTCfJJpvCjVRSefU18、 zzuliOJ1012:求绝对值通过码答案: iRV2UR8x5iSxTCfJJpvCjVRSefY19、 zzuliOJ1013:求两点间距离通过码答案: 2hEgXEczsCyxTCfJJpvCjVRSefc20、 zzuliOJ1014:求三角形的面积通过码答案: 2BF1Xkg74iexTCfJJpvCjVRSefA21、 zzuliOJ1015:计算时间间隔通过码答案: 2RMnWUk6sXSxTCfJJpvCjVRSefE22、 zzuliOJ1015:银行利率通过码答案: 3xZxWBswvCSxTCfJJpvCjVRSefI第二章简单C程序设计小练习-不计分1、以下哪种运算能从变量x中取得十进制最低位的数字()。
C语言程序设计上机实验指导与习题参考答案(第四版)C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot 具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
c语言程序设计答案(清华大学出版社)C语言程序设计是一门基础而重要的计算机编程课程,它不仅教授编程语言的语法和结构,更培养了解决问题的逻辑思维能力。
《C语言程序设计》一书由清华大学出版社出版,是众多高校计算机专业学生的必读教材。
以下是该书的一些答案解析,以帮助学生更好地理解和掌握C 语言的相关知识。
第一章:C语言概述- C语言的特点:C语言是一种结构化语言,具有高效、灵活、功能强大等特点。
- C语言的发展历史:C语言由丹尼斯·里奇在20世纪70年代初期开发,最初用于UNIX操作系统。
第二章:数据类型、运算符和表达式- 基本数据类型:包括整型(int)、字符型(char)、浮点型(float和double)。
- 运算符:包括算术运算符、关系运算符、逻辑运算符、位运算符等。
- 表达式:由常量、变量、运算符和函数调用组成的组合,用于计算和赋值。
第三章:控制语句- 顺序结构:程序按照代码的顺序执行。
- 选择结构:使用`if`、`switch`等语句进行条件判断。
- 循环结构:使用`for`、`while`、`do-while`等语句进行重复执行。
第四章:数组- 一维数组:连续存储的相同类型元素集合。
- 二维数组:可以看作是一维数组的集合。
- 数组的初始化:可以使用花括号进行初始化。
第五章:函数- 函数的定义:使用`return`类型和函数名定义。
- 函数的调用:通过函数名和参数列表调用。
- 递归函数:函数内部调用自身。
第六章:指针- 指针变量:存储变量地址的变量。
- 指针的运算:包括地址运算和指针的自增自减。
- 指针与数组:指针可以方便地访问数组元素。
第七章:结构体与联合体- 结构体:可以包含不同类型的数据成员。
- 联合体:所有成员共享同一块内存空间。
第八章:预处理指令- 宏定义:使用`#define`定义常量或宏。
- 文件包含:使用`#include`引入头文件。
第九章:位运算- 位运算符:包括位与(&)、位或(|)、位非(~)、位异或(^)等。
《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。
#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。
void main(){ int Mgy(int x,int y);int Mgb(int z);int a,b,mgy,mgb;printf("请输入两个数:\n");scanf("%d,%d",&a,&b);mgy=Mgy(a,b);mgb=Mgb(a,b,mgy);printf("两个数的最大公约数为%d,最小公倍数为%d\n",mgy,mgb);}int Mgy(int x,int y){ int r,temp;if(x<y){ temp=x;x=y;y=temp;}while(x%y!=0){ r=x%y;x=y;y=r;}return y;}int Mgb(int x,int y,int z){ return (x*y/z);}8.2 求方程ax²+bx+c=0的根,用三个函数分别求当b²-4ac大于零、等于零和小于零时的根,8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。
#include<math.h>void main(){ int Isprime(int a);int m,temp=0;printf("请输入一个数:\n");scanf("%d",&m);temp=Isprime(m);if(temp==0) printf("%d不是素数。
\n",m);else printf("%d是素数。
\n",m);}int Isprime(int a){ int i,k,flag;if(a==0||a==1) flag=0;else{ k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0) flag=0; }return flag; }8.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符8.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。
实验一(1)编程求37+29的值,实习VC环境。
#include<stdio.h>void main(){int a,b,sum;a=37;b=29;sum=a+b;printf("sum=%d",sum);}(2)从键盘输入三个整数,求出最大数并输出。
#include<stdio.h>void main(){int a,b,c,y;int max(int x,int y);printf("input a,b,and c:");scanf("%d,%d,%d",&a,&b,&c);y=max(a,b);y=max(y,c);printf("\nmax=%d\n",y);}int max(int x,int y){int z;if(x>y) z=x;else z=y;return(z);}(3)通过上机实践,运行下列程序并分析输出结果。
A 程序代码#include<stdio.h>void main(){char ch='a';printf("%c对应的ASCII码是:%d\n",ch,ch);}程序输出结果:a对应的ASC||码是:97B 程序代码#include<stdio.h>void main(){int a=168;float b=123.456;float x=35.567,y;printf("a=%5d\n",a);printf("a=%-5d\n",a);printf("b=%6.2f\n",b);printf("b=%e\n",b);y=(int)(x*100+0.5)/100.0;printf("x=f,y=%f\n",x,y);}程序输出结果:a=168a=168b=123.46b=1.234560e+002x=f,y=35.567001C程序代码#include<stdio.h>void main(){int a=168;printf("十进制数%d对应的八进制数是%o\n",a,a);printf("十进制数%d对应的十六进制数是%x\n",a,a); }程序输出结果:十进制数168对应的八进制数是250十进制数168对应的十六进制数是a8实验二2.1顺序结构2.1.1已知a=1.5,b=5.3,c=2.9,计算s=-4ac的结果并输出。
《C语⾔程序设计(第五版)》习题答案各章习题参考答案第1章习题参考答案1. 简述C程序的结构特点。
答:(1) ⼀个C语⾔源程序由⼀个或多个源⽂件组成。
每个源⽂件由⼀个或多个函数构成,其中有且仅有⼀个主函数(main函数)。
(2) ⼀个函数由函数⾸部(即函数的第⼀⾏)和函数体(即函数⾸部下⾯的⼤括号内的部分)组成。
函数⾸部包括函数类型、函数名和放在圆括号内的若⼲个参数。
函数体由声明部分和执⾏部分组成。
(3) C程序书写格式⾃由,⼀⾏内可以写多条语句,⼀个语句也可以分写在多⾏中,每个语句必须以分号结尾。
(4)程序的注释内容放在“/*”和“*/之”间,在‘/’和‘*’之间不允许有空格;注释部分允许出现在程序中的任何位置处。
2. 分析例1.3程序的结构。
答:下⾯是例1.3的程序,它的结构是:有且只有⼀个主函数main以及若⼲个其它函数,还有⼀个被主函数调⽤的sumab函数。
函数有⾸部,包括类型和名称,⾸部下的⼤括号中有变量定义、输⼊、计算和输出等语句。
#includeint sumab (int x, int y); /*函数声明*/int main () /*主函数*/{ int a,b,sum; /*定义变量*/printf("请输⼊变量a与b的值:"); /*提⽰信息*/scanf ("%d %d", &a, &b); /*输⼊变量a和b的值*/sum=sumab(a,b); /*调⽤sumab函数*/printf("a与b的和等于%d", sum);/*输出sum的值*/return 0;}int sumab (int x, int y) /*定义sumab函数,并定义形参x、y */{ int z;z=x+y;return z;}3. 分别编写完成如下任务的程序,然后上机编译、连接并运⾏。
(1) 输出两⾏字符,第1⾏是“The computer is our good friends!”,第2⾏是“We learnC language.”。
第一章 C语言概述 一、简答题 1.(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。 2.顺序结构,分支结构,循环结构 3.所谓算法就是为解决一个问题而采取的方法和步骤。 算法的特性:有穷性、确定性、输入、输出、可行性。 表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用N—S流程图表示;(4)用伪代码表示;(5)用计算机语言表示。 二、算法 1. 瓶子A里盛有醋 瓶子B里盛有酱油 有一个空瓶C 将A中的醋倒入C 将B中的酱油倒入A 将C中的醋倒入B 2. 输入一个数放在a中 max = a 以下步骤重复9次: 输入一个数放在a中 如果a>max,max=a 打印max的值 3. 如果 atemp=a a=b b=temp 如果 c>a temp = a a=c c=temp 否则 如果 c>b temp=b b=c c=temp 打印a,b,c的值 4. i=1 sum=0 以下程序循环100遍: sum=sum+i i=i+1 打印sum的值 5. 如果(n除以3的余数为0 并且 n除以5的余数为0) n能够同时被3和5整除 否则 n不能够同时被3和5整除 6. i=101 以下语句循环50遍: j=2 flag=1 当j<(i除以2的整数部分)时循环以下语句: 如果i除以j的余数为零 flag=0 退出该循环 如果flag==1 打印i的值 i=i+2 7. 如果mtemp=m m=n n=temp i=n 做以下循环,直到m,n能够被i整除: 如果m能够被i整除并且n能够被i整除 i即是m和n的最大公约数 跳出循环 否则 i=i-1 打印i的值 8. data=b*b—4*a*c 如果data>0 否则 如果data=0 x1=x2=—b/2 否则 无实数解 三、编程题 1. main() { printf(“##############################\n”); printf(“ How do you do? \n”); printf(“##############################\n”); } 2. main() { int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“sum=%d”,a+b+c); } 第二章 数据类型与表达式 一、单项选择题 1. B 2. C 3. A 4. A 5. D 6. B 7.A 8.C 9.D 二、写出下列程序的运行结果 1. aabb cc abc AN 2. ab 9798 3. 9,11,9,10 4. a=2,b=3,c=2 5. s1=2.500000 s2=3 三、编程题 main() { char c1='c',c2='h',c3='i',c4='n',c5='a'; c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 第三章 顺序程序设计 选择题 1)B 2)D 3)D 4)A 5)A 6)B 7)B 8)A 9)D 10)C 11)D 12)A 填空题 1)b 2)261 3)25 21 37 4)abc 5)5.0,4,c=3 6)3 编程题 #define PI 3.1415926 main( ) { float h, r, l, sv, sz ; printf(“请输入圆的半径r,圆柱高h:\n”) ; scanf(“%f,%f”,&r, &h) ; l=2* PI *r ; s= PI *r*r ; sv=3.0/4.0* PI *r*r*r ; sz= PI *r*r*h ; printf(“圆周长为:l=%6.2f, 圆面积为:s=%6.2f\n”, l, s) ; printf(“求体积为:sv=%6.2f, 圆柱体积为:sz=%6.2f\n”, sv, sz) ; } 2、 main( ) { float c, f ; printf(“请输入一个华氏温度:\n”) ; scanf(“%f”, &f) ; c=5.0/9.0*(f-32) ; printf(“摄氏温度为:%6.2f\n”, c) ; } 第四章 循环程序设计 一、选择题 1.D 2.D 3.D 4.C 5.D 6.A 7.B 8.B 9.A 10.D.11.B 12.A 13.B 14.C 15.C 16.A 17.A 18.B 19.D 20.D 21.A 二、填空题 1.585858 2.0 3.18 4.8921 5.20,0 6.6 7.1,3,2 8.Year%400==0 year%100!=0 count++ 三、编程题 1. main() { long a; scanf(“%ld”,&a); if (a>=10000&&a<=99999) printf(“这是个五位数”); else if (a>=1000&&a<=9999) printf(“这是个四位数”); else if (a>=100&&a<=999) printf(“这是个三位数”); else if (a>=10&&a<=99) printf(“这是个二位数”); else if (a>=0&&a<=9) printf(“这是个一位数”); else printf(“输入错误”); } 3. main() { int a; int g,s,b;//个位、十位、百位 printf("水仙花数有:\n"); for(a=100;i<=999;a++) {g=a%10; s=a/10%10; b=a/100; if (a==g*g*g+s*s*s+b*b*b) printf("%d ",a); } printf("\n"); } 4、 main() {int i,n; printf("input n:"); scanf("%d",&n); printf("\n%d=",n); for(i=2;i<=n;i++) {while(i!=n) if(n%i==0) {printf("%d*",i);n/=i;} else break; } printf("%d\n",n); } 5、 #include “stdio.h” main() { char c; int w,x,y,z; w=x=y=z=0; while((c=getchar())!=’\n’) { if((c>’a’&&c<’z’)||(c>’A’&&c<’Z’)) w++; else if (c==’ ’) x++; else if (c>’0’&&c<’9’) y++; else z++; } printf(“英文字母个数:%d\n”,w); printf(“空格个数:%d\n”,x); printf(“数字个数:%d\n”,y); printf(“其他字母个数:%d\n”,z); } 6、main() { float h=100,t=100; int j; for(j=1;j<10;j++) { t=t/2; h=h+t*2; } printf(“共经过:%f 米\n”,h); printf(“第十次反弹 %f 米\n”,t/2); } 第五章 数 组 一、单项选择题 1. B 2. A 3. C 4. C 5. D 6. B 7.C 8.B 9.C 10. B 二、写出下列程序的运行结果 1.S=368 2. ***** ***** ***** ***** ***** 3.S1=18 S2=10 4.!margorP 5. 数字0的出现次数是:3 数字1的出现次数是:2 数字2的出现次数是:2 数字3的出现次数是:2 数字4的出现次数是:0 数字5的出现次数是:1 数字6的出现次数是:1 数字7的出现次数是:1 数字8的出现次数是:1 数字9的出现次数是:1 三、编程题 1.#include "stdio.h" main() {int a[11]; int i,j,t; printf("input 10 number:\n"); for (i=1;i<11;i++)