【www.gbppp.com--经典美文】
C语言课后习题答案-第四版- 谭浩强(1-7)
第一章
#include <stdio.h>
int main ( )
{ printf ("**************************\n\n");
printf(" Very Good!\n\n");
printf ("**************************\n");
return 0;
}
#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;
}
第3章
#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;
}
#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); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和
printf("p2=%f\n",p2); // 输出按第2方案得到的本息和
printf("p3=%f\n",p3); // 输出按第3方案得到的本息和
printf("p4=%f\n",p4); // 输出按第4方案得到的本息和
printf("p5=%f\n",p5); // 输出按第5方案得到的本息和
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{double 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); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1方案得到的本息和
printf("p2=%f\n",p2); // 输出按第2方案得到的本息和
printf("p3=%f\n",p3); // 输出按第3方案得到的本息和
printf("p4=%f\n",p4); // 输出按第4方案得到的本息和
printf("p5=%f\n",p5); // 输出按第5方案得到的本息和
}
#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); // 存活期存款。活期利息每一季度结算一次 printf("p1=%10.2f\n",p1); // 输出按第1方案得到的本息和 printf("p2=%10.2f\n",p2); // 输出按第2方案得到的本息和 printf("p3=%10.2f\n",p3); // 输出按第3方案得到的本息和 printf("p4=%10.2f\n",p4); // 输出按第4方案得到的本息和 printf("p5=%10.2f\n",p5); // 输出按第5方案得到的本息和 return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{float d=300000,p=6000,r=0.01,m;
m=log10(p/(p-d*r))/log10(1+r);
printf("m=%6.2f\n",m);
return 0;
}
#include <stdio.h>
int main()
{int c1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
}
#include <stdio.h>
int main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
scanf("%c%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;
}
#include <stdio.h>
int 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("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
return 0;
}
#include <stdio.h>
int main ()
{float h,r,l,s,sq,vq,vz;
float pi=3.141526;
printf("请输入圆半径r,圆柱高h∶");
scanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h l=2*pi*r; //计算圆周长l
s=r*r*pi; //计算圆面积s
sq=4*pi*r*r; //计算圆球表面积sq
vq=3.0/4.0*pi*r*r*r; //计算圆球体积vq
vz=pi*r*r*h; //计算圆柱体积vz
printf("圆周长为: l=%6.2f\n",l);
printf("圆面积为: s=%6.2f\n",s);
printf("圆球表面积为: sq=%6.2f\n",sq);
printf("圆球体积为: v=%6.2f\n",vq);
printf("圆柱体积为: vz=%6.2f\n",vz);
}
#include <stdio.h>
int main()
{
char c1,c2;
printf("请输入两个字符c1,c2:");
c1=getchar();
c2=getchar();
printf("用putchar语句输出结果为:");
putchar(c1);
putchar(c2);
printf("\n");
printf("用printf语句输出结果为:");
printf("%c %c\n",c1,c2);
return 0;
}
#include <stdio.h>
int main()
{
int c1,c2; //整型定义
printf("请输入两个整数c1,c2:");
scanf("%d,%d",&c1,&c2);
printf("按字符输出结果:\n");
printf("%c,%c\n",c1,c2);
printf("按ASCII码输出结果为:\n");
printf("%d,%d\n",c1,c2);
return 0;
}#include <stdio.h>
int main()
{
char c1,c2; //定义字符型变量 int i1,i2; //定义整型变量 printf("请输入两个字符c1,c2:");
scanf("%c,%c",&c1,&c2);
i1=c1; //赋值给整型变量 i2=c2;
printf("按字符输出结果:\n");
printf("%c,%c\n",i1,i2);
printf("按整数输出结果:\n");
printf("%d,%d\n",c1,c2);
return 0;
第1章程序设计和C语言1
1.1什么是计算机程序1
1.2什么是计算机语言1
1.3C语言的发展及其特点3
1.4最简单的C语言程序5
1.4.1最简单的C语言程序举例6
1.4.2C语言程序的结构10
1.5运行C程序的步骤与方法12
1.6程序设计的任务14
1-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章算法——程序的灵魂16
2.1什么是算法16
2.2简单的算法举例17
2.3算法的特性21
2.4怎样表示一个算法22
2.4.1用自然语言表示算法22
2.4.2用流程图表示算法22
2.4.3三种基本结构和改进的流程图26
2.4.4用NS流程图表示算法28
2.4.5用伪代码表示算法31
2.4.6用计算机语言表示算法32
2.5结构化程序设计方法34
习题36
第章最简单的C程序设计——顺序程序设计37
3.1顺序程序设计举例37
3.2数据的表现形式及其运算39
3.2.1常量和变量39
3.2.2数据类型42
3.2.3整型数据44
3.2.4字符型数据47
3.2.5浮点型数据49
3.2.6怎样确定常量的类型51
3.2.7运算符和表达式52
3.3C语句57
3.3.1C语句的作用和分类57
3.3.2最基本的语句——赋值语句59
3.4数据的输入输出65
3.4.1输入输出举例65
3.4.2有关数据输入输出的概念67
3.4.3用printf函数输出数据68
3.4.4用scanf函数输入数据75
3.4.5字符数据的输入输出78
习题82
3-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); // 存活期存款。活期利息每一季度结算一次
printf("p1=%f\n",p1); // 输出按第1方案得到的本息和
printf("p2=%f\n",p2); // 输出按第2方案得到的本息和
printf("p3=%f\n",p3); // 输出按第3方案得到的本息和
printf("p4=%f\n",p4); // 输出按第4方案得到的本息和
printf("p5=%f\n",p5); // 输出按第5方案得到的本息和
return 0;
}
3-2-2
#include <stdio.h>
#include <math.h>
int main()
{double 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); // 存活期存款。活期利息每一季度结算一次
printf("p1=%f\n",p1); // 输出按第1方案得到的本息和
printf("p2=%f\n",p2); // 输出按第2方案得到的本息和
printf("p3=%f\n",p3); // 输出按第3方案得到的本息和
printf("p4=%f\n",p4); // 输出按第4方案得到的本息和
printf("p5=%f\n",p5); // 输出按第5方案得到的本息和
return 0;
}
3-2-3
#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); // 存活期存款。活期利息每一季度结算一次
printf("p1=%10.2f\n",p1); // 输出按第1方案得到的本息和
printf("p2=%10.2f\n",p2); // 输出按第2方案得到的本息和
printf("p3=%10.2f\n",p3); // 输出按第3方案得到的本息和
printf("p4=%10.2f\n",p4); // 输出按第4方案得到的本息和
printf("p5=%10.2f\n",p5); // 输出按第5方案得到的本息和
return 0;
}
3-3.
#include <stdio.h>
#include <math.h>
int main()
{float d=300000,p=6000,r=0.01,m;
m=log10(p/(p-d*r))/log10(1+r);
printf("m=%6.2f\n",m);
return 0;
}
3-4
#include <stdio.h>
int main()
{int c1,c2;
c1=197;
c2=198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
3-5
#include <stdio.h>
int main()
{int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d",&a,&b);
scanf("%f %e",&x,&y);
scanf("%c%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;
}
3-6
#include <stdio.h>
int 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("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);
return 0;
}
3-7
#include <stdio.h>
int main ()
{float h,r,l,s,sq,vq,vz;
float pi=3.141526;
printf("请输入圆半径r,圆柱高h∶");
scanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h l=2*pi*r; //计算圆周长l
第一章
一、 选择题
1.C/C++规定,在一个源程序中,main()函数的位置( )。C
A.必须在最开始 B.必须在最后
C.可以任意 D.必须在系统调用的库函数的后面
2.以下()是C/C++合法的标识符。A
A.char2 B.@x C.int D.7Bw
3.下面的程序,对于输入:2 9 15,输出的结果是( )。B
#include"iostream.h"
void main()
{int a;
float b;
cout<<"input a,b:"<<endl;
cin>>a>>b;
cout<<"a+b="<<a+b<<endl;
}
A.2 B.11 C. 26 D.24
4. 在Visual C++中,打开一个项目只需要打开对应的项目工作区文件即可,项目工作区文件的扩展名为( )。C
A.obj B.dsp C.dsw D.cpp
5.下面关于C语言与C++关系的说法中,( )是正确的。D
A.C语言是C++的子集 B.C++对C语言进行了改进
C.C++和C语言都是面向对象的 D.C++继承了C语言的众多优点
6.设置一个断点的方法是将光标移到需要设置断点的行上,然后按( )键。A
A.F9 B.F10 C.F11 D.F12
7.下面关于编译预处理命令的说法中,正确的是( )。C
A.一条文件包含命令能包含多个文件
B.文件包含命令不可以嵌套使用
C.编译预处理命令是在编译之前被处理的命令
D.编译预处理命令中的“#”可以省略
8.使用( )可以设置数据输出的宽度。B
A.setbase(int n) B.setw(int n) C.setfill(int n) D.setprecision(int n)
二、 填空题
1.C/C++程序是由一个或多个函数组成的,但必须要有一个( )函数,程序从这个函数开始运行的。 main()
2.C/C++字符集包括大、小写英文字母、( )、( )和包括运算符在内的特殊字符,程序中出现字符集以外的字符就是一个语法错误。 数字0-9、下划线
3.在Visual C++中编写程序时,除了注释中可以出现汉字,还能在( )中使用汉字。字符串
4.文件包含命令是以( )开始的预处理命令,而宏定义命令是以 ( )开始的预处理命令。#include #define
5.在cout命令中,使用 ( )格式控制符可以把一个数据以十六进制的形式输出。hex
6.在C/C++中,头文件的扩展名一般为( )。.h
7.程序的错误一般分两种:( )和( )。前者是编译器可以发现的,而后者编译器则无法发现。语法错误和逻辑错误
8.在Visual C++中调试程序时,可以使用快捷菜单中的 ( )命令来插入断点和清除断点。Insert/Remove Breakpoint
9.C++源程序的扩展名为( )。.cpp
10.在Visual C++中,浏览当前项目中的所有源程序文件应在工作区的( )选项卡。Fileview
三、 简答题
1. C++与C语言的主要区别是什么?C++是C语言的超集。C++中的类和对象部分,C语言没有,C++是面向对象的程序设计。见教材P3。
2. C/C++程序由哪些部分组成?C/C++程序是由一个或多个函数组成,其中必须要有一个main()函数。在一个函数内,语句的执行是从上到下的。
3. 判断下列符号中哪些不能作为C/C++的标识符:
a? , 3a, a-b, f(x), A D, a.txt, D $, ∏, double
能作为C/C++的标识符:abc,b,s_2,Int
4. C/C++语言的书写格式有哪些特点?C/C++程序书写形式自由。一行可以写多条语句,一条语句也可以分别写在不同行上。区别大小写字母。
5. 何时在#include中使用尖括号,何时使用双引号?用尖括号时,预处理程序在系统指定的文件夹中寻找文件;用双引号时,预处理程序首先在当前文件所在的文件目录中寻找文件,若找不到再到系统指定的文件夹中查找。
6. 如果程序顺利地通过编译、连接,但是程序运行时结果有错误,最好的调试手段是什么?最好的调试手段是设置断点,并让程序运行到该断点,然后在Debug窗口观察各变量的值,从中发现错误。
第二章
一、 选择题
1.下列选项中可以作为C/C++的合法整型常量的是( )。B
A.1011B B.047 C.x23 D.20H
2.下列不合法的常量是( )。C
A.2.7 B.1.0E+3 C.3.5E-3.0 D.3.4e-5
3.下列常量中不是字符型常量的是( )。D
A. '\x44' B.'\t' C.'\\' D."m"
4.下列选项中合法的变量名为( )。C
A.#define B.float C.a12_3 D.sqrt(x)
5.下列不正确的变量定义方法是( )。D
A.int a,&b=a; B.float a,*b=&a; C.int a(4),b(0); D.int a=b=5;
6.下列运算符优先级按由高到低的顺序排列正确的是( )。C
A.*=、&&、!=、% B.*=、%、&&、!= C. %、!= 、&&、*= D.&&、!=、%、=
7.已知x、y为整型,z为实型,ch为字符型,下列表达式中合法的是( )。C
A.z=(y+x)++ B.x+y=z C.y=ch+x D.y=z%x
8.若有定义"int x;",则经过表达式"x=(float)7/3"运算后,x的值为( )。C
A.0 B.2.3 C.2 D.1
9.若有定义"int x=13,y=5;",则表达式"x++,y+=2,x/y"的值为( )。B
10.设整型变量m、n、a、b、c、d均为数值1,表达式(m=a>b)&&(n=c>d)运算后,m、n的值分别是( )。B
A.0,0 B.0,1 C.1,0 D.1,1
二、把下列数学表达式写成C/C++表达式。
1.x+y≠a+b : (x+y)!=(a+b).
2.(ln10+xy)3 :pow(log(10)+x*y),3)
3.sin():sin(w*u)/(cos(45*180/3.14)+3*pow(x,y)) ycos453x
4.e3:exp(3)+sqrt(2*x+3*y) 2x3y)
5.x-y
6.xy:fabs(x-y)+(x+y)/(3*x) 3x1:1/(1/r1+1/r2+1/r3) 111r1r2r3
三、根据下列条件写一个C/C++表达式。
1.a和b中有一个大于d:a>d||b>d
2.将x、y中较大的值送给z:z=x>y?x : y
3.将直角坐标系中点(x,y)表示在第3象限内:x<0&&y<0
4.3个数据x、y、z能组成三角形:x+y>z||y+z>z||x+z>y
5.将含有3位小数的实型变量x的值,四舍五入到百分位:(int)(x*100+0.5)/100.
6.d是不大于100的偶数:d>0&&d<=100&&d%2==0
7.x、y中至少有一个是5的倍数:x%5==0||y%5==0
8.对n(>0)个人进行分班,每班k(>0)个人,最后不足k人也编一个班,问要编几个班:n%k==0?n/k : n/k+1
四、编程题:
1 编程序求半径为r、高为h的圆柱体的体积。
#include "iostream.h"
void main()
{float r,h,v;
cin>>r>>h;
v=3.1416*r*r*h;
cout<<v;
}
2.任意输入3个数据,输出它们的平均值和最小的一个数。
#include "iostream.h"
void main()
{
float a,b,c,ave,min;
cin>>a>>b>>c;
ave=(a+b+c)/3;
min=(a<b)?a:b;
min=(c<min)?c:min;
cout<<"ave="<<ave<<" min="<<min<<endl;
}
3.将字符串“12”转换为整数12并输出。
#include "iostream.h"
void main()
{
char c1='1',c2='2';
int x;
x=10*(c1-'0')+c2-'0';
cout<<x<<endl;
}
4.编写程序,输入一个三位整数,反向输出该三位整数。
#include "iostream.h"
void main()
{int x;
int c1,c2,c3;
cin>>x;
c1=x/100;
c2=x/10%10;
c3=x%10;
x=100*c3+10*c2+c1;
cout<<x<<endl;
}
5.输入一个年份,判断是否为闰年。
解1:
#include "iostream.h"
void main()
{int year,x;
cin>>year;
x=year%400==0||year%4==0&&year%100!=0;
x!=0?cout<<year<<"is a leap year!": cout<<year<<"is not a leap year!";
}
解2:
#include "iostream.h"
void main()
{int year;
char x;
cin>>year;
x=(year%400==0||year%4==0&&year%100!=0)?'y': 'n';
cout<<x<<endl;
推荐访问: