C++程序设计-答案 中国铁道出版社
习题一一、选择题1.C2. C3.B4.C5.C6.D7.C8.A9.B 10.D二、填空题1. 算法2. main3. ;4. cpp obj exe5. 符号定义6. 是10 是117. double 18. -264 9. 是410. m-m/n*n 11. a为6 b为4 c为2 12. 为1三、问答题3..dsw 、.dsp、.ncp、.cpp4.提高程序的可读性、可维护性。
在行注释前加“//”。
段注释放入“/*”和“*/”之间。
注释对原程序的编译和运行没影响。
5.设置符号常量主要提高源程序的可读性、维护性。
区别:1.识别时,主要看符号的定义;2.运行时,符号常量不能改变值而变量可改变。
6.字符常量通常指一个字符,存储单元为一个字节;字符串可包含多个字符,存储单元为字符数加1个字节。
7.1.0 、1.1e2 类型:double; 1L、65536 类型:long8.int、new 不是,因为是关键字;abc、lxyz、a_0、Hello、aaaaa、_a是合法的标识符;a+b、!A 不是,因为+、!是运算符。
0_abc不是是因为数字开头;d$a不是是因为标识符不应包含$。
9.合法:(1)、(5)、(6)10.全部都是。
11.a=2;b=112.2;-2;6、4、40、-3、313.(1) 4 a=3 b=4 c=5; (2)5 a=3 b=4 c=6; (3)-9 a=3 b=5 c=5;(4) 4 a=4 b=4 c=414.(1) (float) k (2)x-int(x) (3)m/10%10(4)(ch>=‟A‟ && ch<=‟Z‟)?(ch=‟a‟+ch-…A‟):ch习题二一、选择题1.B2. C3.A4.B5.B二、填空题1. if2. do while和for3.循环体循环体4. 1 n+1 n5. 5,4,6三、程序阅读题15.m=516.1 4,2 6,2 3,3 5,5 6,c=37四、程序设计题1.#include <iostream>#include <cmath>using namespace std;float a,b,c,s,area;void main(){cout<<"输入a b c:"; cin>>a>>b>>c;if ((a+b>c)&&(a+c>b)&&(b+c>a)){s=(a+b+c)/2;cout<<"面积="<<sqrt(s*(s-a)*(s-b)*(s-c));} elsecout<<"输入的不是三角形的三条边";}2.见《实验教程》p27 4.3.#include <iostream.h>void main(){float x,y;cout<<"输入购物款:";cin>>x;switch (int(x/1000)){ case 0:y=x;break;case 1:y=x*0.95;break;case 2:y=x*0.9;break;case 3:y=x*0.85;break;default:y=x*0.8;}cout<<"优惠款为:"<<y<<endl;}4.见《实验教程》p285.5. #include <iostream>using namespace std;int i,n;long js=1;void main(){cout<<"输入n:"; cin>>n;for (i=1;i<=n;i++)js*=i;cout<<n<<"!="<<js;}6. #include <iostream>#include <cmath>using namespace std;int n=1;float pi=0,xn=4;void main(){ while (fabs(xn)>1.0e-8){ pi+=xn;n++;xn=-4.0*sign(xn)/(2*n-1);}cout<<"π="<<pi;}7. #include <iostream.h>void main(){ int i,j,sum;for(i=2;i<=1000;i++){ sum=0;For (j=1;j<i;j++)if (i%j==0) sum+=j;if (sum==i){cout<<i<<"-->";For (j=1;j<i;j++)If (i%j==0) cout<<j<<",";Cout<<endl;}}}8. #include <iostream.h>void main(){ int x,y,z;For (x=1;x<10;x++)For (y=1;y<12;y++){ z=20-x-y;If (5*x+4*y+2*z==50)Cout<<"公猴:"<<x<<"母猴:"<<y<<"小猴:"<<z;}}9. 见《教程》p60 例2.2310. 见《实验教程》p32 5.习题三一、选择题1.B2.B3.C4.D5.D二、填空题1. 函数头省略能省略应加“;”函数头不加“;”2. inline flat f(int,char)3.函数体外外部内部(静态) static 文件位置extern4.生存期作用域作用域生存期作用域本文件5.-22 100 -3三、程序阅读题17.S=4018.y=12919.max=820.S=29a) 程序设计题1. #include <iostream.h>float add(int x,int y){ return (float)(x+y);}float fac(int n){ int i;float s=1;For (i=1;i<=n;i++) s*=i;}void main(){ int m,ncout<<"输入整数m n:"; cin>>m>>n;cout<<m<<"!+"<<n<<"!="<<add(fac(m),fac(n))<<endl;}2. #include <iostream.h>#include <math.h>int isprime(int n){ int i;float k;k=sqrt(n);for (i=2;i<k;i++) if (n%i==0) return 0;return 1;}void main(){ int s=0,i;for (i=2;i<=100;i++)if (isprime(i)) s+=i; cout<<"和:"<<s<<endl; }3. 非递归:float pow(float a,int n) { int i;float s=1;for (i=1;i<=n;i++)s*=a;return s;}递归:float pow(float a,int n) { float s;if (n==0)return 1;elses=pow(a,n-1)*a; return s;}4.非递归:float sum(int n){ float s;int i;for (i=1;i<=n;i++) s+=i; return s;}递归:float sum(int n){ float s;if (n==1)retrun 1;elses=sum(n-1)+n; return s;}5. #include <iostream.h>inline int ischar(char n){ if (n<=127) return 1;return 0;}void main(){ char a;cout<<"输入字符:";cin>>a;if (ischar(a))cout<<a<<endl;elsecout<<"输入的不是英文字符:" }6.file1.cppfloat fac(int n){ int i;float s=1;For (i=1;i<=n;i++) s*=i;}File2.cpp#include <iostream.h>float pow(float a,int n){ int i;float s=1;for (i=1;i<=n;i++)s*=a;return s;}void main(){ int a,b,n;cout<<"输入a b n:";cin>>a>>b>>n;cout<<fac(a)/pow(b,n);}习题四程序设计题:1. #include <iostream.h>void main(){ int a[10],i,j,k,tem;for (i=0;i<10;i++){cout<<"输入第"<<i+1<<"个整数:"; cin>>a[i];} for (i=0;i<=8;i++){ k=i;for (j=i+1;j<=9;j++)if (a[k]<a[j]) k=j;tem=a[i];a[i]=a[k];a[k]=tem;cout<<a[i]<<"\t";}}2. 设:数组的大小为n,插入函数如下:int insert(int a[],int n){ int b,i=0,k;Cout<<"输入整数:";cin>>b;while (b>a[i] && i<=n) i++;if (i<=n){ for (k=n;k>i;k--) a[k]=a[k-1];a[i]=b;return 1;}elsecout<<"该数不能插入";return 0;}3.#include <iostream.h>int a[100],i,,k,b;void main(){ i=1;while (i<=100){ cout<<"输入第"<<i<<"个整数:";cin>>b;for (k=0;k<i-1;k++)if (a[k]==b) break;if (k==i-1){ a[i++-1]=b;}}}4. #include <iostream.h>#define lnum 10#define cnum 10void main(){ float a[lnum][cnum],max,min;int i,j,k,l,fb=1;//输入数给数组for (i=0;i<lnum;i++)for(j=0;j<cnum;j++){cout<<"输入"<<i<<"行"<<j<<"列数:";cin>>a[i][j];}//找鞍点,先找出一行中的最大点,然后在同列中确定是否为最小点for (i=0;i<lnum;i++){ l=0;for(k=1;k<cnum;k++)if (a[i][l]<a[i][k]) l=k;for(k=0;k<cnum;k++)if (a[i][l]>a[l][k]) break;if (k==cnum){ cout<<i<<"行"<<l<<"列元素为鞍点:";fb=0;}elseif (fb) cout<<"该数组无鞍点";}}5. void f(int a[],int n){ int i,tem;for (i=0;i<n/2;i++){tem=a[i];a[i]=a[n-1-i];a[n-1-i]=tem;}}6.int f(char *s){ int n=1;char *p,*p1;n=strlen(s);p=s;p1=s+n-1;while (p<p1){ if (*p!=*p1)return 0;else{p++;p1++}}return 1;}7. #include <iostream.h>#include <string.h>void main(){ char str1[100],str2[50],*p=str2;int n;Cout<<"输入字符串";Cin.get(str1,100);n=strlen(str1);for (i=0;i<n;i=i+2){*(str2+i/2)=str1[i];}*(Str2+i/2)=null;cout<<"str1:"<<str1<<endl;cout<<"str2:"<<str2<<endl;}8. #include <iostream>using namespace stdvoid main(){ int i,supercn=0,lowcn=0,spacecn=0,numbercn=0,othercn=0; char a[100];cout<<”输入字串:”;cin.get(a,100);while (a[i]){ { if (a[i]>=‟A‟ && a[i]<=‟Z‟) supercn++;else if (a[i]>=‟a‟ && a[i]<=‟z‟) lowcn++;else f (a[i]=‟ …) spacecn++;else if (a[i]>=‟0‟ & a[i]<=‟9‟) numbercn++;else othercn++;}}cout<<”大写字母数:”<<supercn<<endl;cout<<”小写字母数:”<<lowcn<<endl;cout<<”空格数:”<<spacecn<<endl;cout<<”数字字母数:”<<numbercn<<endl;cout<<”其它字母数:”<<supercn<<endl; }9.#include <iostream>using namespace stdvoid main(){ int i,lable=0,count=0;char a[100];cout<<”输入字串:”;cin.get(a,100);while (a[i]){ if (a[i]==‟ … && lable){count++;label=0;}else if(a[i]!=‟ ‟)lable=1;i++;}cout<<”单字个数:”<<count<<endl;}10. #include <iostream>#include <string>using namespace std;void main(){ int i,maxn=0,maxxb,m=0;char a[40][100];cout<<"输入各行:"<<endl;for (i=0;i<40;i++){ cin.getline(a[i],100);m=strlen(a[i]);if (m==0) break;if (m>maxn) {maxxb=i;maxn=m;}}cout<<a[maxxb]<<endl;}11.##include <iostream>#include <string>using namespace std;void main(){ int i,n,m,j,k;char a[40][100],b[100];cout<<"输入各国家名(一个国家一行):"<<endl;for (i=0;i<40;i++){ cin.getline(a[i],100);m=strlen(a[i]);if (m==0) break else n++;}for (i=0;i<n-2;i++){ k=i;for (j=i+1;j<n-1;j++)if (strcpy(a[k],a[j])>0) k=j;if (k!=i) {strcpy(b,a[i]);strcpy(a[i],a[k]);strcpy(a[k],b);)}}for (i=0;i<n;i++) {cout<<a[i]<<endl;}}12.int find(char *s,char *word){ char *p1,*p2,lable=1,firstspace=1;p1=s;p2=word;while (*p1){ if (*p1==' ')firstspace=1;else if(firstspace==1){ lable=1;while (*p1!=' ' && *p1 && *p2){if (*p1!=*p2) lable=0;p1++;p2++;}if (lable && !*p2 && (*p1==' ' || !*p1)) return 1;if (!*p1) return 0;if (*p1==' ') firstspace=1; else firstspace=0;p2=word;}p1++;}return 0;习题五一、选择题1.A2.D3.C4.A5.D二、填空题1. struct2.typedef3.1024.new delete三、程序阅读题程序1:65 A65 a程序2:10,20,7,9四、程序设计题1.#include <iostream>using namespace std;struct date{ int year;int month;};struct student{ long num;char name[9];char sex;date birth;float totalscore;char hometown[20];};V oid main(){ student s[5],s1;char i,j,m[5];for (i=0;i<5;i++){ cout<<”输入第”<<int(i+1)<<”个学生的学号:”;cin>>s[i].num;cout<<”姓名:”;cin.get(s[i].name,9);cin.readsome(m,5);cout<<”性别:”;cin>>s[i].sex;cin.readsome(m,5);cout<<”输入出生年月:”;cin>>s[i].birth.year>>s[i].birth.month;cout<<”输入总分:”;cin>>s[i].totalscore;cout<<”输入籍贯:”;cin.get(s[i].hometown,20);cin.readsome(m,5);}for(i=0;i<4;i++)for(j=i+1;j<5;j++)if (s[i].totalscore<s[j].totalscore){s1=s[i];s[i]=s[j];s[j]=s1;}for(i=0;i<5;i++){cout<<”学号\t姓名\t性别\t出生年月\t入学总分\t籍贯”<<endl;cout<<s[i].num<<”\t”<<s[i].name<<” ”<<s[i].sex<<”\t”<<s[i].birth.year;cout<<” ”<<s[i].birth.month<<”\t”<<s[i].score<<”\t”<<s[i].hometown;cout<<endl;}}2.3.链表就是把物理上不连续的存储块链接为逻辑上连续的存储块,每个存储块都包含一个指向下一个存储块的指针。
操作系统习题答案(中国铁道出版社_刘振鹏_李亚平_王煜_张明) (2)
if(p->size>=n)
{
if(p->size-n>=size)
p->size=p->size-n;
a=p;
p=p+n;
else
a=p;
remove(Free,p);
}
else
p=p->next
}
return a
}
⒎什么叫紧凑?为什么要进行紧凑?
答:为了解决碎片问题,可采用的一种方法是,将内存中的所有作业进行移动,使它们相邻接。这样,原来分散的多个小分区便拼接成一个大分区,从而就可以把作业装入运行,这种通过移动,把多个分散的小分区拼接成大分区的方法被称为紧凑。
⑴时间片轮转法;
⑵优先级调度;
⑶先来先服务(按照次序l0、6、2、4、8运行);
⑷最短作业优先。
对⑴,假设系统具有多道处理能力,每个作业均获得公平的CPU时间,对⑵到⑷假设任—时刻只有一个作业运行,直到结束。所有的作业都是CPU密集型作业。
答:时间片轮转法的平均周转时间是21(当时间片长短=6分钟时)
⒍系统采用不能移动已在主存储器中作业的可变分区方式管理主存储器,现有供用户使用的主存空间100K,系统配有4台磁带机,有一批作业见表2.6。
表2.6
作业序号进输入井时间要求计算时间需要主存量申请磁带机数
1 l0:00 25分钟15K 2台
2 10:20 30分钟60K 1台
3 10:30 10分钟50K 3台
优先级调度的平均周转时间是20
先来先服务的平均周转时间是19
最短作业优先的平均周转时间是14
⒎并发执行的进程在系统中通常表现为几种关系?各是在什么情况下发生的?
答:在这些进程之间可能存在以下两种关系:
c__面向对象程序设计_课后答案_中国铁道出版社_陈维兴_林小茶 2
第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
《C语言程序设计教程(第二版)》习题答案
1 【C语言】《C语言程序设计教程(第二版)》习题答案说明1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。
2 第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick\n");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d\n",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。
递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。
*/{printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 5589 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f\n",x);}执行结果:1.32471795725.源程序略。
C语言程序设计答案-(陈明晰)中国铁道出版社
习题一一、选择题1.C程序的基本单位是(A)。
A.函数B.文件C.语句D.字符2.C程序中的变量(B)。
A.不用说明B.先说明后引用C.先引用后说明D.引用和说明顺序无关3.变量的说明在(B)。
A.执行语句之后B.执行语句之前C.执行语句当中D.位置无关4.C语言是一种(C)。
A.机器语言B.符号语言C.高级语言D.面向对象的语言二、填空题1.一个C程序总是从主函数开始执行。
2.结构化程序由顺序、选择、循环三种基本结构构成。
3.一个C程序只有一个名为main的主函数。
4.C程序中的每个语句以分号结束。
5.C程序中,函数由函数首部和函数体组成。
6.每个基本结构有一个入口和一个出口,没有死循环和死语句。
7.算法是计算机解决问题所依据的步骤。
习题二一、选择题1.下列数据中属于字符串常量的是( B)。
A.ABC B."ABC" C.'abc' D.'A'2.在计算机内存中,'\n'占用的字节数是( C)。
A.4 B.3 C.1 D.23.字符串"ABC"在内存中占用的字节数是( D)。
A.6 B.8 C.3 D.44.在C语言中,合法的长整型常数是( B)。
A.568701400 B.0L C.0.03546287D.2.654e115.char型常量在内存中存放的是( A)。
A.ASCII代码值B.BCD代码值C.十进制代码值D.内码值6.下列各项中正确的标识符是( D)。
A.?bb B.a=8 C. b.βD.b_47.下列不正确的转义字符是( D)。
A.\\ B.\ 0 C.\" D.0x48.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。
A.0 B.1 C.2 D.39.设a的值为5,执行下列语句后,b的值不为2的是( C)。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/210.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( C)。
《C语言程序设计实验指导与习题集》练习题的参考答案(中国铁道出版社)
⑵
⑶
⑷
⑸
⑹
⑺
⑻
⑼
⑽
答案
B
A
C
C
D
D
B
A
A
C
编号
⑾
⑿
⒀
⒁
答案
A
C
D
B
(一)填空题
编号
答案
编号
答案
⑴
⑵
⑶
⑷
⑸
b=i+1
i<10j%3!=0
52
right
17
⑹
⑺
⑻
⑼
⑽
X
S=25489213**六、数组(一)选择题
编号
⑴
⑵
⑶
⑷
⑸
⑹
⑺
⑻
⑼
⑽
答案
C
D
C
D
D
A
C
A
A
B
编号
⑾
⑿
⒀
⒁
答案
D
B
A
D
(一)填空题
编号
答案
C
D
D
A
7
8
9
10
11
12
C
A
C
D
C
B
13
14
15
16
17
18
A
C
D
C
A
B
2.填空
(1)22(2)struct st(3)2,3(4)zhao
(5)13(6)380039(7)struct list q
9
十一文件
1.选择
1
2
3
4
5
6
C语言程序与设计课后答案(中国铁道出版社)
函数一、选择题1-5 ADCBD 6-10 DADAC11-15 DBDCC 16-17 DC二、填空题(1)3,2,2,3 (2)4,3,5 (3)t*10 (4)double max 从键盘上输入两个数据,输出最大值(5)m=fun(a,4)+fun(b,4)-fun(a+b,3) (6)a=1.0;b=1.0;s=1.0;(7)x x*x+1 (8)9 (10)-f指针一、选择题1-5 CADBC 6-10 CAACD 11-15 CACBD 16-20 ACCAA二、填空题(1)3 5 (2)5 3 (3)k *k (4)8 4 (5)0 7数组与指针一、选择题1-5 CBDCA 6-10 DCDAB 11-15 CADAD 16-20 BCBDD 21-25 ABBAC 26-30 DBDDB31-33 CCA二、填空题(1)1111 (2)24 (3)6 (4)19 (5)6 (6)5756 (7)2 4(8)1 2 3 (9)92 (10)580 5 60 0 9数组与函数一、选择题1-5 BADCA 6-10 BABCA 11-15 BACDA 16-17 BC二、填空题(1)s=18 (2)11 (3)br[i] (4)j<i a[i][j]=a[j][i] (5)x[i][i] x[i-1][j-1]+x[i-1][j](6)a[k][i] *sum x,&s (7)row a[row][colum] (8)j+1 i%2==1 (9)a[row][col]>max max<min字符串一、选择题1-5 CDAAC 6-10 ACBCB 11-15 DABDD 16-20 BCBDC 21-25 BDCBB 26-30 DAAAC31-35 CDDCA二、填空题(1)abcfg(2)efgh(3)*t(4)bcdefgha(5)gae(6)*2*4*6*8*(7)*t++(8)cdeab (9)s-1 *s++ (10)p+n(11)str+strlen(str)-1 t==0 huiwen(str) (12)s[i]>='0'&&s[i]<='9' (13)c=getchar() 1对C语言的深入讨论一、选择题1-5 CDCDB 6-10 DACDA 11-15 ADBDC 16-20 CAADA 21-25 CDDCB 26-28 DC 二、填空题(1)findbig (2)c(3)!knahT (4)3*sizeof(double) 1.50,2.50,3.75 (5)11110111 (6)/i结构体与共用体一、选择题1-5 DBDCB 6-10 CDBAD 11 (1)C (2)A (3)B 12-16 ACBDD二、填空题(1)struct node * (2)sizeof(struct node) (3)p!=NULL p->next (4)->next->data (5) 2002shangxian (6)struct DATE d={2006,10,1};文件一、选择题1-5 CDDBA 6-10 BCDCA 11-15 DBADA 16-17 DB二、填空题(1)"d1.dat","rb" (2)"a" (3)!feof(fp) (4)"wb""rb" (5)Hell (6)fopen ftell。
c程序设计第二版完整答案
第一章C++基础知识习题
1.1判断下列标识符的合法性。
sin book5arry _name Example2.1 main
int array[5]={1,2,3,4,5}; char s[]="Hello";
答:"China"文字常量
constint n=10;常变量
int m=5;变量
'a'文字常量
char ch='a'变量
int array[5]={1,2,3,4,5};变量
char s[]="Hello";变量
1.4将下列算式或叙述用C++表达式描述。
}
result=1;
for(i=2;i<=n;i++){
jch*=i; //jch是i的阶乘,注意n!=n*(n-1)!这样可少一层循环
result+=jch;
}
cout<<result<<endl;
return 0;
}
2.8
#include <iostream>
using namespace std;
}
m-=3;
}
解答:注意continue语句的使用
初值
m=0
k=1
第1次循环后
m=5
k=2
第2次循环后
m=2
k=3
第3次循环后
C语言程序设计(第二版)答案
参考答案习题二(P33)一.单选题1.C2.B3.D4.C5.A6.D7.D8.B9.B 10.D 11.D 12.C 13.C . 15. A 14题最后一句应为printf("%f\n",d*y);结果为2.2二.填空题1. 182. int float double3. 10 114. 八十六十5. %三.阅读程序题1.10,10,9,102.j=1,i=2k=3,i=3j=3,i=2k=1,i=1习题三(P52)一.单选题1.D2.C3.D4.B5.A6.B7.C8.A9.C 10.B 11. -1,37777777777,4294967295 二.填空题5. L6. -1三.阅读程序题1. 6 6 6.00 6.002. x=127,x= 127,x=177,x=7fY=123.4567 , y= 123.46 , y=123.456703. 2,14. 12345. 4,36. -6,-6四.程序设计题1.#include "stdio.h"#include "math.h"main(){float a,b,c,d,x1,x2;a=2;b=-3;c=-5;d=b*b-4*a*c;x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("x1=%.2f,x2=%.2f\n",x1,x2);}2.#include <stdio.h>main(){ float a,v,s;scanf("%f",&a);v=a*a*a;s=6*a*a;printf("v=%.2f,s=%.2f\n",v,s);}3.#include <stdio.h>main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);t=c;c=b;b=a;a=t;printf("a=%d,b=%d,c=%d\n",a,b,c);}4.#include <stdio.h>main(){ char s1,s2;s1=getchar();s2=s1-32;printf("%c\n",s2);}习题四(P70)一.单选题1.C2.D3.D4.B5.A6.D7.D8.B9.C 10.A 11.B 12.D 13.passwarnerror .14.C 15. C 16.B 17. B 18. C二.填空题1. 非0 02. k==03. n%7==0 && n%8==0 else三.阅读程序题1. a=1,b=02. c=1四.程序设计题1.#include <stdio.h>main(){ int a,b;char c;printf("INPUT A+(-*/)B\n");scanf("%d%c%d",&a,&c,&b);switch(c){case'+':printf("%d+%d=%d\n",a,b,a+b);break;case'-':printf("%d-%d=%d\n",a,b,a-b);break;case'*':printf("%d*%d=%d\n",a,b,a*b);break;case'/':printf("%d/%d=%d\n",a,b,a/b);break;default:printf("INPUT ERROR!");}}2.#include <stdio.h>main(){ float x,y;scanf("%f",&x);if(x==0||x==2)y=0;else if(x>0) y=(x+1)/(x-2);else y=(x-1)/(x-2);printf("y=%f\n",y);}3.#include <stdio.h>main(){ int g;printf("请输入学生成绩:");scanf("%d",&g);printf("g=%d:",g);switch(g/10){case 10:printf("A\n");break;case 9:printf("B\n");break;case 8:printf("C\n");break;case 7:printf("D\n");break;case 6:printf("E\n");break;default:printf("F\n");}}4.#include <stdio.h>main(){ int x,n=0;scanf("%d",&x);if(x<=0||x>=10000)printf("Data Error!\n");else{if(x<10)n=1;else if(x<100)n=2;else if(x<1000)n=3;else n=4;}printf("n=%d\n",n);}习题五(P87)一.单选题1.B2.D3.C4.C5.B6.C7.D8.C9.A 10.D 11.B 12.B 13.B 14.D 15. C 二.填空题1. for语句while语句do-while语句2. a=14,y=263. k=14,n= -14. 395. s=196. 222227. 108. 79. 810. 5,5三.改错题应改为for(i=0;i<5;i++)j++;应改为int j=0;while(j<10){j++;i=j;} 注while(j<10)后不应有分号应改为while(j<10); 注while(j<10)后分号不能少s*=i;i++;应改为{s*=i;i++;}continue 应改为break四.程序设计题1.#include <stdio.h>main(){ int i,j,s=0;for(i=1,j=1;i<=100;i++,j=j*(-1))s=s+i*j;printf("s=%d\n",s);}1.(另一做法)#include<stdio.h>main(){int i,s;for(i=1,s=0;i<=100;i++)if(i%2==0)s=s-i;else s=s+i;printf ("%d\n",s);}2.#include <stdio.h>main(){ int i,j,s1=0,s2=0;for(i=0;i<10;i++){scanf("%d",&j);if(j>0)s1=s1+j;else s2=s2+j;}printf("s1=%d,s2=%d\n",s1,s2);}3.#include<stdio.h>main(){int i,s;for(i=6,s=0;i<=96;i=i+1)if(i%10==6||i/10==6)s=s+i;printf ("%d\n",s);}4.#include<stdio.h>main(){int i,a,b,c;for(i=100;i<=999;i++){a=(i%10);b=(i/10%10);c=(i/100);if(i==a*a*a+b*b*b+c*c*c)printf ("%d\n",i);}}5.#include <stdio.h>main( ){int i,j,k=0;for (i=1;i<=4;i++){for (j=1;j<=i;j++){k++;printf("%d",k%10);}printf("\n");}}6.#include <stdio.h>main( ){int i,j,k=0;for (i=-3;i<=3;i++){if(i<0)k=-i;else k=i;for(j=1;j<=k;j++)printf(" ");for(j=1;j<=7-2*k;j++)printf("*");printf("\n");}}习题六(P111)一.单选题1.D2.B3.C4.C5.C6.D7.A8.B二.填空题1. 20 0 192. 数组名3. 越界4. 65. j==k a[j][k]=1; a[j][k]=0;三.阅读程序题1. 6 5 43 2 12.aaabbbccc ddd3.2,2,1四.程序设计题1.#include<stdio.h>main(){ int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s+=a[i][j];printf("%d",s);}2.#include <stdio.h>{ char a[80];int i,j=5; /*假设删除位置为5*/gets(a);for(i=j-1;a[i]!='\0';i++)a[i]=a[i+1];a[i]='\0';puts(a);}3.#include <stdio.h>#include <string.h>main(){ char a[80];int i,j=5; /*假设插入位置为5*/char s='t'; /*假设插入字符为t*/gets(a);for(i=strlen(a);i>j;i--)a[i+1]=a[i];a[j]='t';puts(a);}4.#include<stdio.h>main(){ int a[3][5]={1,3,5,7,9,2,4,6,8,10,3,5,8,7,6}; int i,j,s1[3]={0},s2[5]={0};for(i=0;i<3;i++)for(j=0;j<5;j++)s1[i]+=a[i][ j];for(i=0;i<5;i++)for(j=0;j<3;j++)s2[i]+=a[ j][i];for(i=0;i<3;i++){for(j=0;j<5;j++)printf("%6d",a[i][j]);printf (" |%6d\n",s1[i]);}for(i=0;i<33;i++) printf("-");printf("\n");for(i=0;i<5;i++) printf("%6d",s2[i]);printf("\n");}5.#include<stdio.h>{ char s[3][80];int a=0,b=0,c=0,d=0,e=0,i,j;for(i=0;i<3;i++) gets(s[i]);for(i=0;i<3;i++)for(j=0;s[i][j]!='\0';j++)if(s[i][j]>='A'&&s[i][j]<='Z')a++;else if(s[i][j]>='a'&&s[i][j]<='z')b++;else if(s[i][j]>='0'&&s[i][j]<='9')c++;else if(s[i][j]==32)d++;else e++;printf("%3d%3d%3d%3d%3d",a,b,c,d,e);}习题七(P145)一.单选题1.A2.B3.C4.A5.C6.D7.C8.B9.B 10.C 11.D 二.填空题1. 该函数内局部2. 整型3. k<=breturn y;4. x[i]return (ave);fun(a,20)5. 1;add(n-1);add(n);6. n*f(n-1)0;f(i)三.阅读程序,写出运行结果1.10,20,302.643.84. hlo5. sum=55四.程序设计题1.#include <stdio.h>main(){float add(float, float), sub(float, float);float aver(float, float),a,b;scanf("%f,%f",&a,&b);printf("add=%f, sub=%f\n ", add(a,b), sub(a,b)); printf("aver =%f", aver(a,b));}float add(float x, float y) {return(x+y);}float sub(float x, float y) {return(x-y);}float aver(float x, float y) {return((x+y)/2);} 2.#include<stdio.h>main(){ int a,b,c,abmax(int,int);scanf("%d%d%d",&a,&b,&c);printf("max=%d\n",abmax(abmax(a,b),c)); }int abmax(int a,int b){if(a>b)return a;else return b;}3.#include <stdio.h>main(){float x,fun(float, int);int n;scanf("%f%d",&x,&n);printf("%f\n", fun(x,n));}float fun(float x, int n){float y;if(n==0)y=1;else y=x*fun(x,n-1);return y;}4.#include <stdio.h>main(){long f(int);int n,k;scanf("%d",&n);for(k=1;k<=n;k++)printf("%ld,",f(k));printf("\n");}long f(int n){long y;if(n<=2)y=1;else y=f(n-1)+f(n-2); return y;}5.#include <stdio.h>#include <string.h> main(){char a[50];int n;void fun(char x[ ],int n); gets(a);n=strlen(a); fun(a,n);puts(a);}void fun(char a[ ],int n) {int k,s;for(k=0;k<n/2;k++) {s=a[k];a[k]=a[n-k-1];a[n-k-1]=s;}}5. (另一做法)#include <stdio.h>#include <string.h> main(){char a[50];int n;void fun(char x[ ],int n); gets(a);n=strlen(a); fun(a,n);puts(a);}void fun(char a[ ],int n) {int k;char b[50];for(k=0;k<n;k++)b[n-1-k]=a[k];b[k]=a[k];strcpy(a,b);}6.#include <stdio.h>#define KK 100main(){char a[KK];long sjz(char a[]);int i=0,f1=0;printf("input a data:");gets(a);for(i=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9'||a[i]>='A'&&a[i]<='F'||a[i]>='a'&&a[i]<='f') continue;else {f1=1;break;}}a[i]='\0';if(f1==1)printf("Data Error!\n");else printf("result is :%d\n",sjz(a));}long sjz(char a[]){long n=0,i;;for(i=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9')n=n*16+a[i]-'0';if(a[i]>='A'&&a[i]<='F')n=n*16+a[i]-'A'+10;if(a[i]>='a'&&a[i]<='f')n=n*16+a[i]-'a'+10;}return n;}6.(另一做法)#include <stdio.h>#define KK 100main(){char str[KK],c;long sjz(char a[]);int i=0,f1=0;printf("input a data:");while((c=getchar())!='\n'&&i<KK){if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f')str[i++]=c;else f1=1;}str[i]='\0';if(f1==1)printf("Data Error!\n");else printf("result is :%d\n",sjz(str));}long sjz(char a[]){long n=0,i;;for(i=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9')n=n*16+a[i]-'0';if(a[i]>='A'&&a[i]<='F')n=n*16+a[i]-'A'+10;if(a[i]>='a'&&a[i]<='f')n=n*16+a[i]-'a'+10;}return n;}习题八(P181) (注:无答案的题不在本课程讲授范围内)一.单选题1.D2.A3.C4.D5.C6.B7.C8.C9.C 13.D 14.B 15.A 16.C 17.A 二.填空题1. 指向取地址2. 2 +23. 286. *(p+5)7. ABCD A三.阅读程序题1.102.103.04. 3,65. 1 2 3 4四.程序填空题1.a,b,c或者&x,&y,&z max=*b或者max=y max=*c或者max=z2. ++ =*q ++ ++4. int *a,int *b b[j]=a[i] b[i++]5. *str+=3 *str>’z’&&*str<’a’||*str>’z’ a6. else 0 t[2*j+1]五.程序设计题1.#include <stdio.h>main(){int a[10],*p,*q,t;p=a;for(q=a;q<a+10;q++)scanf("%d",q);for(q=a;q<a+10;q++)printf("%5d",*q);printf("\n");q--;for(;p<q;p++,q--){t=*p;*p=*q;*q=t;}for(p=a;p<a+10;p++)printf("%5d",*p);printf("\n");}2.#include <stdio.h>#include <string.h>void main( ){ char a[50],*p1,*p2,t,n;gets(a);n=strlen(a);p1=a; p2=a+n-1;for(; p1<p2; p1++, p2--){t=*p1; *p1=*p2; *p2=t;}puts(a);}另一做法#include <stdio.h>main(){char str[20],*p=str;gets(str);while(*p)p++;p--;while(p>=str){printf("%c",*p);p--;}printf("\n");}3.#include <stdio.h>main(){int a[10],*p,*max,*min,t;for(p=a;p<a+10;p++)scanf("%d",p); for(p=a;p<a+10;p++)printf("%5d",*p); printf("\n");max=min=a;for(p=a+1;p<a+10;p++){if(*p>*max)max=p;if(*p<*min)min=p;}t=a[0];a[0]=*min;*min=t;t=a[9];a[9]=*max;*max=t;for(p=a;p<a+10;p++)printf("%5d",*p); printf("\n");}5.#include <stdio.h>int length(char *s){int n=0;while(*s){n++;s++;}return n;}main(){char str[20];int n;gets(str);n=length(str);printf("The string length is %d\n",n);}6.#include <stdio.h>main(){char str[81],*p=str,*q,t;gets(str);printf("The origenal string:\n");puts(str);for(p=str;*(p+1);p++)for(q=p+1;*q;q++)if(*q<*p){t=*p;*p=*q;*q=t;}printf("The result string:\n");puts(str);}习题九(P222) (注:无答案的题不在本课程讲授范围内)一.单选题1.D2.A3.B4.D 8.B 9.B 10.C二.填空题1. 结构体成员结构体指针指向2. 343. 224.ex三.阅读程序题1.92.10,x3.134. 46 40 415. 06. 3839。
《C语言程序设计》课后习题答案(第四版)
第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); // 存活期存款。
Visual Basic程序设计教程(中国铁道出版社)课后习题参考答案
5.1; 2; 4; Shift; Ctrl; Alt
6.1; 2; 4;左;右;中
7.ClipBoard; SetText; SetData; Clear
8.RichTextBoxrt1.SaveFile“D:\MyFolder\MyDoc.rft”, 0
9.InitDir; 1;“c:\winnt\*.Doc”;“*.Doc”; 2;”c:\winnt\*.txt”;“*.txt”
二﹑选择题
1-5ACBDC6-10DDCDA
第2题C选项应该为ABCDEFG
第九章
一﹑填空题
1.编译错误、运行错误、逻辑错误
2.设计模式、运行模式、中断模式窗口标题栏
3.切换断点、跟踪调试、调试窗口
第十章
略
第十一章
略
4.false
5.Interval
6.这题按书上的代码打出来后,运行是错误的。我觉得是题目错了,感觉题目的本意是想让答案是B。所以要想横线上填B,就把1改为2, 3改为0就行了。
7.ABC, DEF
第三章
一﹑选择题
1-5CADDA6-9ABCC
其中第3题题目错了,题目中的c应改为e,还有选项中的函数名开头字母应该大写。
参考答案
第一章
一﹑选择题
1-5CBCBC6-8ACA
二﹑填空题
1.对象
2.设计,运行,中断
3.vbp,frm
4.用来设计应用程序的窗口
5.windows
第二章
一﹑选择题
1-5CCDBB6-9BCDB
二﹑填空题
1.Autosize
2.Scrollbar,Multiline,True
