C语言程序设计教程习题答案(1~5)主审 郭浩志 北京邮电大学出版社
- 格式:doc
- 大小:92.50 KB
- 文档页数:14
第1章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中的醋倒入B2.输入一个数放在a中max = a以下步骤重复9次:输入一个数放在a中如果a>max,max=a打印max的值3.如果a<btemp=aa=bb=temp如果c>atemp = aa=cc=temp否则如果c>btemp=bb=cc=temp打印a,b,c的值4.i=1sum=0以下程序循环100遍:sum=sum+ii=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.如果m<n temp=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”); }a datab x 2)(1+-=adata b x 2)(2--=2.main(){int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“sum=%d”,a+b+c);}第二章数据类型与表达式一、单项选择题1. B2. C3. A4. A5. D6. B7.A8.C9.D二、写出下列程序的运行结果1.aabb cc abcAN2.ab97983. 9,11,9,104.a=2,b=3,c=25.s1=2.500000s2=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.1415926main( ){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.D2.D3.D4.C5.D6.A7.B8.B9.A 10.D.11.B 12.A 13.B 14.C 15.C 16.A 17.A 18.B 19.D 20.D21.A二、填空题1.5858582.03.184.89215.20,06.67.1,3,28.Year%400==0year%100!=0count++三、编程题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(“这是个一位数”);elseprintf(“输入错误”);}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. B2. A3. C4. C5. D6. B7.C8.B9.C 10. B二、写出下列程序的运行结果1.S=3682.*************************3.S1=18S2=104.!margorP5.数字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++)scanf("%d",&a[i]);printf("\n");for (i=1;i<=9;i++)for (j=1;j<=10-i;j++)if (a[j]<a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("the sorted number is:\n");for (i=1;i<11;i++)printf("%4d",a[i]);}2.#include "stdio.h"main(){int a[11],i,b;printf("imput 10 sorted number:\n");for (i=0;i<10;i++)scanf("%d",&a[i]);printf("input an integer:\n");scanf("%d",&b);for (i=9;i>=0&&a[i]>b;i--)a[i+1]=a[i];a[i+1]=b;printf("sorted numbers:\n");for (i=0;i<11;i++)printf("%5d",a[i]);}3.#include "stdio.h"main(){int a[5],i,j,t;printf("input 5 integer:\n");for (i=0;i<5;i++) /*输入5个整数*/scanf("%d",&a[i]);for (i=0,j=4;i<j;i++,j--) /*逆序存放*/{t=a[i];a[i]=a[j];a[j]=t;}for (i=0;i<5;i++) /*逆序存放后重新输出*/printf("%5d",a[i]);}4.#include "stdio.h"main(){int i,j,a[10][10]={{1},{1,1}};for (i=2;i<10;i++) /*给二维数组每个元素赋值*/ {a[i][0]=1;for (j=1;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for (i=0;i<10;i++) /*输出二维数组*/{for (j=0;j<=i;j++)printf("%-5d",a[i][j]);printf("\n");}}5.#include "stdio.h"{int a[3][4],i,j,max,row,col;printf("input 3*4 matrix:\n");for (i=0;i<3;i++) /*输入3*4矩阵*/for (j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0]; row=0; col=0;for (i=0;i<3;i++) /*寻找矩阵中的最大值及其行列号*/ for (j=0;j<4;j++)if (max<a[i][j]){max=a[i][j]; row=i, col=j;}printf("\n数组中最大的数是%d,其行号是%d,列号是%d\n",max,row,col);}6.#define N 3#define M 4#include "stdio.h"main(){int a[N][M],i,j,k,max,row,col;printf("input %d*%d matrix: \n",N,M);for (i=0;i<N;i++) /*输入二维矩阵*/for (j=0;j<M;j++)scanf("%d",&a[i][j]);for (i=0;i<N;i++) /*求鞍点*/{max=a[i][0]; row=i; col=0;for(j=1;j<M;j++) /*求矩阵中每一行的最大值及其所行列号*/ if (max<a[i][j]){max=a[i][j]; col=j;}for (k=0;k<N;k++) /*判断每一行的最大值在其所在列是否最大*/ if (a[k][col]<max)break;if (k==N) /*得到鞍点*/{printf("the point is %d,row=%d,col=%d\n",max,row,col);break;}}if (i==N) /*没有鞍点*/printf("no point\n");}7.#include "stdio.h"main(){int num=0,word=0;/*word=0表示未出现单词,如出现单词就置word为1.num用来统计单词个数*/printf("please input a string :\n");while ((c=getchar())!='\n')if (c==' ')word=0;else if (word==0){word=1; num++;}printf("There are %d words in the line\n",num);}8.#include "stdio.h"main(){int i,j,uppn,lown,dign,span,othn;/*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/char text[3][80];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')uppn++;else if(text[i][j]>='a'&&text[i][j]<='z')lown++;else if(text[i][j]>='0'&&text[i][j]<='9')dign++;else if(text[i][j]==' ')span++;elseothn++;}}for(i=0;i<3;i++)printf("%s\n",text[i]);printf("uppn=%d\n",uppn);printf("lown=%d\n",lown);printf("dign=%d\n",dign);printf("span=%d\n",span);printf("othn=%d\n",othn);}9.#include "stdio.h"main(){int i,j;char str1[20],str2[20];printf("input two strings:\n");gets(str1);gets(str2);j=strlen(str1); /*求字符串1的长度*/for (i=0;str2[i]!='\0';i++,j++) /*字符串合并*/str1[j]=str2[i];str1[j]='\0'; /*加上字符串结束标志*/puts(str1);}10.#include "stdio.h"main(){int i,n;char str1[20],str2[20];printf("input two strings:(no more than 20 characters)\n");gets(str1); gets(str2);n=strlen(str1)<strlen(str2)?strlen(str1):strlen(str2); /*n中存放较短字符串的长度*/ for (i=0;i<n&&str1[i]==str2[i];i++);printf("%d\n",str1[i]-str2[i]);}11。
c语言程序设计教程第二版课后习题答案《C语言程序设计教程第二版课后习题答案》在学习C语言程序设计的过程中,课后习题是非常重要的一部分。
通过做课后习题,我们可以巩固所学知识,提高编程能力,加深对C语言的理解。
本文将为大家总结《C语言程序设计教程第二版》中的课后习题答案,希望对大家的学习有所帮助。
1. 第一章第一章是C语言程序设计的基础知识,包括变量、常量、表达式、运算符等。
课后习题主要是一些基础的编程练习,例如求两个整数的和、差、积、商等。
这些习题可以帮助我们熟悉C语言的基本语法和运算符的使用。
2. 第二章第二章介绍了C语言的控制结构,包括顺序结构、选择结构和循环结构。
课后习题主要是一些简单的流程控制练习,例如判断一个数是奇数还是偶数、求一个数的阶乘、计算一个数的平方根等。
这些习题可以帮助我们理解程序的执行流程,掌握流程控制的使用方法。
3. 第三章第三章介绍了C语言的数组和字符串,包括数组的定义、初始化、访问和操作,以及字符串的定义、赋值、比较和连接。
课后习题主要是一些数组和字符串的操作练习,例如求一个数组的最大值、最小值、平均值,查找一个字符串中的某个字符等。
这些习题可以帮助我们熟悉数组和字符串的使用方法,提高对数组和字符串的处理能力。
4. 第四章第四章介绍了C语言的函数和指针,包括函数的定义、调用、参数传递和返回值,以及指针的定义、初始化、访问和操作。
课后习题主要是一些函数和指针的练习,例如编写一个函数求两个数的最大公约数、最小公倍数,使用指针实现数组的排序等。
这些习题可以帮助我们理解函数和指针的使用方法,提高对函数和指针的掌握程度。
总的来说,《C语言程序设计教程第二版》中的课后习题涵盖了C语言程序设计的基础知识和常用技巧,通过认真做好这些习题,我们可以加深对C语言的理解,提高编程能力,为以后的学习和工作打下坚实的基础。
希望大家能够认真对待这些习题,不断提升自己的编程能力。
c语言程序设计教程第二版课后答案一、简介C语言是一种广泛应用于科学计算、系统开发、嵌入式系统等领域的编程语言。
本文档为《C语言程序设计教程第二版》的课后答案,旨在帮助读者巩固所学知识。
二、基础知识回顾1. 数据类型和变量答案:C语言中常见的数据类型包括整型、浮点型、字符型和指针型等。
变量是用来存储数据的内存区域,通过给变量命名,我们可以在程序中使用这些变量。
2. 运算符和表达式答案:运算符用于进行操作,表达式是由变量、常量和运算符组成的可求值的结果。
C语言支持算术运算符、关系运算符、逻辑运算符等。
3. 控制结构答案:控制结构用于控制程序的流程,常见的控制结构有条件语句和循环语句。
条件语句可以根据判断条件的结果执行不同的语句块,循环语句可以重复执行一段代码。
4. 函数答案:函数是完成特定任务的一段代码,可以提高代码的可读性和复用性。
C语言中的函数由函数名、参数列表、返回值类型和函数体组成。
5. 数组和字符串答案:数组是相同类型数据的有序集合,可以通过下标访问数组中的元素。
字符串是由字符组成的数组,以空字符'\0'作为字符串的结束标志。
三、课后练习答案1. 编写一个C程序,计算并输出两个整数之和。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数之和为:%d\n", sum);return 0;}```2. 编写一个C程序,判断一个数是否为素数。
答案:```c#include <stdio.h>int isPrime(int num) {int i;for(i=2; i<=num/2; i++) {if(num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if(isPrime(num)) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```四、总结本文对《C语言程序设计教程第二版》的课后习题进行了答案的整理,涵盖了基础知识回顾以及两个练习的答案。
c语言程序设计课后习题答案C语言程序设计课后习题答案在C语言程序设计的学习过程中,完成课后习题是巩固知识点和提升编程技能的重要方式。
以下是一些常见课后习题的解答示例:1. 习题一:编写一个程序,计算并输出1到100的和。
```c#include <stdio.h>int main() {int sum = 0, i;for (i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum);return 0;}```2. 习题二:求一个整数的阶乘。
```c#include <stdio.h>int factorial(int n) {if (n == 0)return 1;elsereturn n * factorial(n - 1);}int main() {int num, result;printf("请输入一个整数:");scanf("%d", &num);result = factorial(num);printf("%d的阶乘是:%d\n", num, result); return 0;}```3. 习题三:判断一个数是否为素数。
```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num))printf("%d是素数。
《C语言程序设计教程》习题参考答案11.5请参照本章例题,编写一个C程序,输出以下信息:************Very Goodj!************解:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}1.6编写一个程序,输入a b c三个值,输出其中最大者。
解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)< p="">max=b;if(max<c)< p="">max=c;printf("最大数为:%d",max);}第三章3.3 请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。
字符串常量是由0个或若干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'. 3.6写出以下程序的运行结果:#includevoid main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母, 例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre". 请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并输出.main(){char c1="C",c2="h",c3="i",c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);}3.8例3.6能否改成如下:#includevoid main(){int c1,c2;(原为char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果:#includevoid main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,10第4章4.4.a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'.想得到以下的输出格式和结果,请写出程序要求输出的结果如下:a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}4.5请写出下面程序的输出结果.结果:575 767.856400,-789.12396267.856400 ,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a', 问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x=8.5 y=71.82c1=A c2=a说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 20Aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
第1章C++语言概述练习题11.1 判断题×1.C++语言和C语言都是面向对象的程序设计语言。
√2.面向对象方法具有封装性、继承性和多态性。
√3.C语言是C++语言的一个子集。
C++语言继承了C语言。
×4.C++语言程序与C语言程序一样都是函数串。
×5.C++语言支持封装性和继承性,不支持多态性。
√6.C++语言比C语言对数据类型要求更加严格了。
√7.C++语言对C语言进行了一次改进,使得编程更加方便了。
×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。
√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。
√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。
1.2 单选题1.下列关于面向对象概念的描述中,错误的是(C )。
A.面向对象方法比面向过程方法更加先进B.面向对象方法中使用了一些面向过程方法中没有的概念C.面向对象方法替代了结构化程序设计方法D.面向对象程序设计方法要使用面向对象的程序设计语言2.下列各种高级语言中,不是面向对象的程序设计语言是(D )。
A.C++ B.JavaC.VB D.C3.下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型B.类是创建对象的模板C.类是抽象数据类型的实现D.类是具有共同行为的若干对象的统一描述体4.下列关于对象的描述中,错误的是(C )。
A.对象是类的一个实例B.对象是属性和行为的封装体C.对象就是C语言中的结构变量D.对象是现实世界中客观存在的某种实体5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C )。
A.提取符是对右移运算符(>>)重载得到的B.插入符是对左移运算符(<<)重载得到的C.提取符和插入符都是双目运算符,它们要求有两个操作数D.提取符和插入符在输入/输出语句中不可以连用1.3 填空题1.C++语言具有面向对象方法中要求的三大特性:封装性、继承性和多态性。
c语言程序设计教程第二版课后答案【篇一:c语言程序设计(第2版)-- 课后题答案】p> 参考答案第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 is21+35equal 523.34214. aaa项目实训题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。
(1)main(){ int a=7;float x=2.5,y=4.7;printf(%f\n,x+a%3*(int)(x+y)%2/4);}(2)main(){ int a=2,b=3;float x=3.5,y=2.5;printf(%f\n,(float)(a+b)/2+(int)x%(int)y);}第三章顺序结构程序设计一选择题a c d c c二操作题1. x=3,a=2,b=32. z=12.7000002 13 3 2 bb cc abc n3. 1 2 1a2 1 2三.编程题编程题解:#include stdio.hmain(){float sj,gz,yfgz;printf(time,salary:);scanf(%f,%f,sj,gz);yfgz=sj*gz*0.9;printf(total salary:%f\n,yfgz);}本程序运行结果为:time,salary:4,3crtotal salary:10.8000002.编写一个程序求出任意一个输入字符的ascii码解:#include stdio.hmain(){char c;printf(input a string:);scanf(%c,c);printf(%c ascii is %d\n,c,c);}本程序运行结果为:input a string:acra ascii is 973、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付3解:main(){float p,y,x,j,ys,g,fk;printf(apple,pear,banana,orange(weight)=);scanf(%f,%f,%f,%f,p,y,x,j);ys=2.5*p+1.8*y+2*x+1.6*j;printf(fu kuan=);scanf(%f,g);fk=g-ys;printf(result:\n);printf(fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6. 2fyuan\n,g,ys,fk);}本程序运行结果为:apple,pear,banana,orange(weight)=1,2,3,4fu kuan=100result:fukuan=100.00yuanshoukuan= 18.50yuanzhaohui= 81.50yuan项目实训1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n 年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。
习题一1.自然语言,专用工具,部分常用的算法2.头文件,用户函数说明部分;全局变量定义;主函数;若干用户自己编写的函数。
例1.13.①C语言具有结构语言的特点,程序之间很容易实现段的共享;②C语言的主要结构成分为函数,函数可以再程序中被定义完成独立的任务,独立地编译成代码,以实现程序的模块化;③C语言运算符丰富,运算符包含的范围很广;④C语言数据类型丰富;⑤C语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能;⑥C语言语法限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的约束;⑦用C语言编程,生成的目标代码质量高,程序执行效率高;⑧等等。
4.合法标识符:AB12 leed_3 EF3_3 PAS ifXYZ43K2 _7625.F2:将当前编辑器中文件存盘;F10:调用主菜单;F4:程序运行到光标所在行;Ctrl+F9:当前编辑环境下,进行编译、连接且运行程序;Alt+F5:将窗口切换到DOS下,查看程序运行结果。
6.Vc++2).7.主函数9.标识符:由字母、数字以及下划线组成,并且只能由字母或者下划线开头;关键字:关键字不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。
1.’\’,“\”,“ab\n”2. (1)#include <stdio.h>void main(){int x,y,z,aver;x=7;y=z=5;aver=(x+y+z)/3;printf("aver=%d\n",aver);}结果:aver=3(2)#include <stdio.h>void main(){ char c1='a',c2='b',c3='c';int a=3.5,b='A';printf("a=%db=%c\n",a,b);printf("a%cb%c\bc%c\tabc\n",c1,c2,c3);}3.int 99 104 66 55 68 -1 char ‘c’‘h’‘B’‘7’‘D’unsigned99 104 66 55 68intfloat 99.00 104.00 66.00 55.78 68.00 -1.00 long int 99 104 66 55 68 -1 4,(1)8,10,9,10;(2)3,1,0,0;(3)a=11,b=19,c=30,d=1;5.(1).0(2).0(3)9.5;(4)40(5).10(6).10(7).‘a’(8).14,30,(2.2)(9).4.5(10).1(11).0(12).10(13).56.(1)7.取x的绝对值8.max = a<b ? (b<c ? c : b) : (a<c ? c : a);9.-6010.D1.格式说明符不对,应把%d换位%f。
2.|1234 1234 |3.ff,104.1,3,15.按字符串的实际疮毒输出;在右端补空格6. scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2);7.#include <stdio.h>main(){ int a,b;scanf("%d,%d",&a,&b);printf("a+b=%d\na-b=%d\na*b=%d\n(float)a/b=%d\na%b=%d\n",a+b,a-b,a*b,a/b,(float)a/b, a%b);}8.#include <stdio.h>main(){ float r,l,s;scanf("%f",&r);l=2*3.14*r;s=3.14*r*r;printf("l=%f\ns=%f\n",l,s);}9.#include <stdio.h>main(){ int x,y;int a,b,c;scanf("x=%d",&x);a=x/100;b=(x-a*100)/10;c=x-a*100-b*10;y=c*100+b*10+a;printf("y=%d\n",y);}10.#include<stdio.h>main(){ int a,b,c,d,e,f,g;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);e=a%2; f=b%2; g=c%2; d=e+f+g;if(d==2) printf("YES\n");else printf("NO\n");return 0;}11.#include <stdio.h>main(){ int ch;ch=getchar();putchar(ch-1);putchar('\n');putchar(ch+1);putchar('\n');}12.#include <math.h>#include <stdio.h>main(){ float a,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%f\n",area);}习题41.0;2.9;3.20<x&&x<30||x<-1004.25,14,195.376.#include <stdio.h>main(){ int a,b,x,y;scanf("a=%d,b=%d",&a,&b);if(a<=b){ x=1;printf("***x=%d\n",x);}else{y=2;printf("***y=%d\n",y);}}7.#include <stdio.h>main(){ int ch1,ch2;ch1=getchar();ch2=getchar();if((ch1-ch2)/2==0){ putchar(ch1+1);putchar('\n');putchar(ch2+2);putchar('\n');}else{ putchar(ch1-1);putchar('\n');putchar(ch2-1);putchar('\n');}}8.#include <stdio.h>main(){ int a,b;scanf("a=%d,b=%d",&a,&b);if(a%b==0)printf("a/b=%d\n",a/b);elseprintf("a/b=%d……%d\n",a/b,a%b); }9.#include <math.h>#include <stdio.h>main(){ float x,y,l;scanf("%f%f",&x,&y);l=sqrt((x-2)*(x-2)+(y-2)*(y-2));if(l>1)printf("点A在圆外\n");elseif(l=1)printf("点A在圆上\n");elseprintf("点A在圆内\n");}12.不嵌套的if语句#include <stdio.h>main(){ int x,y;scanf("%d",&x);if(x<8)if(x>0)y=x+1;elseif(x==0)y=0;elseif(x>-5)y=x-1;printf("y=%d\n",y);}嵌套的if语句:#include <stdio.h>main(){ int x,y;scanf("%d",&x);if(x<=0)if(x==0)y=0;elseif(x>-5)y=x-1;elseif(x<8)y=x+1;printf("y=%d\n",y); }习题51.#include <stdio.h>void main(){ int n,x=0,sum=0,i=-1;float average;scanf("n=%d",&n);while(x<=n){ sum+=x;x+=2;i++;}average=sum/i;printf("average=%6.2f,sum=%d,i=%d\n",average,sum,i);}2.#include <stdio.h>int main(){ char ch;int let = 0;int num = 0;while ((ch = getchar()) != '*') //输入*结束{if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) //如果是字母,let++ { let++; }else if (ch >= '0' && ch <= '9') //如果是数字,num++{ num++; }}printf("字母:%d\n", let); //打印字母数printf("数字:%d\n", num); //打印数字数r eturn 0;}}(来源:百度账号terranlong)3.#include <stdio.h>void main(){ int n,i,a,sum=0,m;scanf("n=%d",&n);m=n;for(i=1;(m/i)!=0;){ a=n%10;sum+=a;n=(n-a)/10;i*=10;}printf("sum=%d\n",sum);}4.#include <stdio.h>int main(){ char ch;do{ch= getchar();if(ch<='z'&&ch>='a')printf("%c",ch-32);if(ch<='Z'&&ch>='A')printf("%c",ch+32);}while(ch<='z'&&ch>='A');putchar('\n');}5.#include <stdio.h>main(){ float sum=200;int n=0;while(sum<500){ sum*=1.045;n++;}printf("n=%d,sum=%6.2f\n",n,sum);}6.#include <stdio.h>int n;void main(){ int x=0,y;int shuzi(int n);for(n=1;n<=999;n++){ while(n%3==0){ y=shuzi(n);if(y!=0){ x++;printf("n(%d)=%d\n",x,y);break;}break;}}}int shuzi(int n){ int i,a,m,y;m=n;for(i=1;(m/i)!=0;){ a=n%10;n=(n-a)/10;i*=10;if(a!=0){ if(a%5==0){ y=m;break;}elsey=0;}}return y;}7.#include <stdio.h>main(){ int n,y,a,b,c,d,e;n=0;do{ n++;a=n%2==1;b=n%3==2;c=n%5==4;d=n%6==5;e=n%7==0;y=(a&&b&&c&&d&&e);}while(y==0);printf("n=%d\n",n);}8.#include <stdio.h>main(){ int n,m,i,a,b,c,sum;scanf("n=%d",&n);m=n;sum=0;for(i=1;(m/i)!=0;){ a=n%10;n=(n-a)/10;i*=10;printf("%d\n",a);sum+=a*a*a;}printf("sum=%d\n",sum);if(sum==m)printf("m是水仙花数\n");elseprintf("m不是水仙花数\n");}9.#include <stdio.h>main(){ int x=2,y=1,i,n,t;float sum=0,m;scanf("n=%d",&n);for(i=1;i<=n;i++){ m=(float)x/y;printf("m(%d)=%3.5f\n",i,m);sum+=m;t=x;x+=y;y=t;}printf("sum(%d)=%3.5f\n",n,sum);}10.#include <stdio.h>main(){ int i,j;int n;scanf("%d",&n);for (i=1;i<=n;i++){ for (j=1;j<=n-i;j++)printf(" ");putchar('\n');for (j=1;j<=2*i-1;j++)printf("*"); //这里的"*"可以替换成任意字符printf("\n");}putchar('\n');//下面是倒三角for (i=n;i>=1;i--){ for (j=1;j<=n-i;j++)printf(" ");putchar('\n');for (j=1;j<=2*i-1;j++)printf("*"); //这里的"*"可以替换成任意字符printf("\n");}putchar('\n');}(参考:百度账号nekitarc)11.#include <stdio.h>main(){ int i,j,m;j=1;while(j<=9){ for(i=1;i<=j;i++){ m=j*i;printf("%d*%d=%d",j,i, m);putchar(' ');}putchar('\n');j++;}}13.#include <stdio.h>int n;main(){ int i=0,y;int wanshu(int n);for(n=1;n<=999;n++){ y= wanshu(n);if(y!=0){ i++;printf("y(%d)=%d\n",i,y);}}}int wanshu(int n){ int i=1,j=0,sum=0,m;do{ m=n%i;if(m==0){ j++;sum+=i;}i++;}while(i<=(n/2));if(sum==n)return n;elsereturn 0;}14.#include <stdio.h>main(){ float sum=0,t;int i,n,j,m;scanf("%d",&n);if(n==0)printf("sum(0)=0");else{ for(i=1;i<=n;i++){ j=1;m=1;dom*=j++;while(j<=i);t=(float)1/m;sum+=t;}printf("sum(%d)=%e\n",n,sum+1);}}。