C程序设计习题与实验教程参考(习题部分)解读_第1页
C程序设计习题与实验教程参考(习题部分)解读_第2页
C程序设计习题与实验教程参考(习题部分)解读_第3页
C程序设计习题与实验教程参考(习题部分)解读_第4页
C程序设计习题与实验教程参考(习题部分)解读_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章归纳一、选择题题号

1

2

3

4答案

B

B

B

A二、填空题1.主或main2.#include<iostream.h>或#include””3.①编译②连接(构件)4.{}5.;6.①.cpp②.obj③.exe三、编程题#include<iostream.h>voidmain(){cout<<"我的姓名是XX,"<<’\n’<<”我的学号为XXX”<<endl;}第2章数据种类与表达式一、选择题题号123456789答案AADCCBACC题号101112131415161718答案ADDDDBCBB勘误:3.其中“a=(m+n,m--n);”改为“a=(m+n,m-n);”二、填空题1.double2.3.①fabs()②4.?:5.06.x>5&&!(x%2)或x>5&&x%2!=07.true或18.b%a==0&&c%a==09.(float)x或float(x)10.11.①1②212.①4②5勘误:a和b的值分别为①、②。13.①20②32③32④16⑤2014.①A②B15.①3②116.17.1318.4三、编程题1.互换两个整数的地址#include<iostream.h>voidmain(){intx,y,t;cin>>x>>y;cout<<x<<’t’<<y<<endl;t=x;x=y;y=t;cout<<"互换后的两个数为:"<<x<<’t’<<y<<endl;}2.求三角形面积#include<iostream.h>#include<math.h>voidmain(void){inta,b,c;doubles,area;cout<<"输入三角形三边长a,b,c:"<<endl;cin>>a>>b>>c;s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"三角形面积为:"<<area<<endl;}第3章流程控制语句一、选择题题号12345678910答案CBBDDCCBCB题号11121314151617181920答案DACADCDBBA题号21222324252627282930答案ACBCABDADD勘误:3.A选项改为“if(x>3)if(y>5)z=6;elsez=7”其中“合法的”改为“不合法的”二、填空题1.switch2.字符型3.44.①5②3③y=05.1,6.5,y=-87.2,3,y=58.3,09.4,0,B10.1,2,311.5,0,D12.0,5,5013.①1②514.*15.①@@###②###16.012340123417.357111318.319.①y1*y2>0②x1=x,y1=3*x1*x1*x1-5*x1+13③x2=x20.①n<999②b=n/10%10③(a+b+c)%5==0勘误:“各个数位的数字之和等于5的整数”改为“各位数字之和是5的倍数的整数”21.①12②1522.(100-cock-hen)%3==0)勘误:for(cock=0;cock<=20;cock++)for(hen=0;hen<=33;hen++)23.①

n++

②r>eps24.①

isprime=1

②j>125.①

intr=1

②break26.①

x<=200

②x%2==027.①28.①

c!=''s=0

②c>='A'&&c<='Z'||c>='a'&&c<='z'②t+=i

③c=cin.get()勘误:“t=1”改为“t=0”29.①s2=1②n③s1+=n%1030.①9②min>s③n/=10三、编程题1.从大到小排列3个整数#include<iostream.h>voidmain(){inta,b,c,d;cin>>a>>b>>c;if(a<b){d=a;a=b;b=d;}if(a<c){d=a;a=c;c=d;}if(b<c){d=b;b=c;c=d;}cout<<a<<'\t'<<b<<'\t'<<c<<'\n';}2.100~300满足条件的数#include<iostream.h>voidmain(){intk=0;for(inti=101;i<300;i+=2)if((i*i)%6==3){cout<<i<<'\t';k++;if(k%5==0)cout<<'\n';}cout<<'\n';}3.逆序显示16进制数#include<iostream.h>voidmain(){inta,k,n;cin>>a;k=a;while(k){n=k%16;k/=16;switch(n){case10:cout<<'A';break;case11:cout<<'B';break;case12:cout<<'C';break;case13:cout<<'D';break;case14:cout<<'E';break;case15:cout<<'F';break;default:cout<<n;}}cout<<'\n';}第4章数组一、选择题题号1234567891011答案DDBBBCDBABB题号1213141516171819202122答案DCBADBAABCC勘误:其中“s3[20]=”abc””改为“s3[20]=”abc””(字符c后有一个空格)二、填空题1.①3②242.首地址3.①i②i+j③i/7④i%7⑤i*7+j4.①7②8③7④505.①字符(char)型②cin.getline(str,80);6.1234567.FMBS勘误:“for(inti=0;i<4;i++,p++)cout<<*p[i];”改为“for(inti=0;i<4;i++)cout<<*s[i];”8.①a:5d:1e:4f:1g:1②i:1l:1m:1o:3r:3③s:2u:1y:39.①Itis4:30pm.②I③43010.①<100:3②<200:2③<300:5④<400:2⑤<500:311.D8012.①500②800③90013.①26②2014.①s2+31②n③t%2+'0'④!strcmp(s1,p2)15.①num[i++]②s=0③flag=1④j<=k16.①i<len1②j>=len2③b[k]=b[k-1]④++i%5==017.①pa>=a&&pb>=b②j+k+carry③ps++④p<ps18.①t[n++]②continue③t[k+1]=t[k]④n++19.①*p1②*p1++③p1++,p2++④*p1='\0'20.①n/10%10②i==j||j==k||i==k③i*i==n④(i+1)%5==021.①char*p3②*p1>='A'&&*p1<='Z'||*p1>='a'&&*p1<='z'③p2++④char(*p4)[20]22.①&a[i]②*p[k]<*p[j]③int*t④*p[i]三、编程题1.互换一维数组中的最大元素与最小元素的地址#include<iostream.h>voidmain(void){inta[6]={18,16,19,15,11,8};inti,max,min,j,k,t;cout<<"原数组为:\n";for(i=0;i<6;i++)cout<<a[i]<<'\t';cout<<endl;for(j=k=0,max=min=a[0],i=1;i<6;i++){if(max<a[i])max=a[i],j=i;if(min>a[i])min=a[i],k=i;}t=a[j],a[j]=a[k],a[k]=t;cout<<"互换后的数组为:\n";for(i=0;i<6;i++)cout<<a[i]<<'\t';cout<<endl;}2.二维数组右移一列#include<iostream.h>#defineROW3#defineCOL4voidmain(void){inta[ROW][COL]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,t;cout<<"搬动前的数组为:\n";for(i=0;i<ROW;i++){for(j=0;j<COL;j++)cout<<a[i][j]<<'\t';cout<<'\n';}for(i=0;i<ROW;i++){t=a[i][COL-1];for(j=COL-1;j>0;j--)a[i][j]=a[i][j-1];a[i][j]=t;//a[i][0]=t;}cout<<"搬动后的数组为:\n";for(i=0;i<ROW;i++){for(j=0;j<COL;j++)cout<<a[i][j]<<'\t';cout<<'\n';}}3.统计字符串中种类字符的个数#include<iostream.h>voidmain(){charstr[50],*p=str;intcon=0,num=0,eng=0,oth=0;cout<<"请输入一个字符串:";cin.getline(str,50);while(*p){if(*p<32)con++;elseif(*p>='0'&&*p<='9')num++;elseif(*p>='A'&&*p<='Z'||*p>='a'&&*p<='z')eng++;elseoth++;p++;}cout<<str<<"中有控制字符"<<con<<"个,数字字符"<<num<<"个,英文字母"<<eng<<"个,其他字符"<<oth<<"个。\n";}4.一维数组插入有序二维数组#include<iostream.h>#include<iomanip.h>#defineROW4#defineCOL3voidmain(){inta[ROW][COL]={{1,3,2},{4,6,8},{8,9,10}},b[COL]={2,7,1};inti,j;cout<<"插入前的数组为:\n";for(i=0;i<ROW-1;i++){for(intj=0;j<COL;j++)cout<<setw(5)<<a[i][j];cout<<endl;}for(i=0;i<COL;i++){for(j=ROW-1;j>0;j--)if(a[j-1][i]>b[i])a[j][i]=a[j-1][i];elsebreak;a[j][i]=b[i];}cout<<"插入后的数组为:\n";for(i=0;i<ROW;i++){for(intj=0;j<COL;j++)cout<<setw(5)<<a[i][j];cout<<endl;}}5.二维数组正数和负数的均值#include<iostream.h>voidmain(void){intb[3][5]={{1,12,3,0,-2},{7,-12,-13,18},{-20,0,9,-5,7}};floatave1=0,ave2=0;inti,j,count1=0,count2=0,(*p)[5]=b;for(i=0;i<3;i++)for(j=0;j<5;j++){if(p[i][j]>0){ave1+=b[i][j];count1++;}if(*(*(p+i)+j)<0){ave2+=b[i][j];count2++;}}cout<<"正数的平均值为"<<ave1/count1<<",负数的平均值为"<<ave2/count2<<endl;}6.查找一维数组中的元素#include<iostream.h>voidmain(){floata[10]={3,5,8,1,7,9,10,2,6,4};floatk,*p=a;cout<<"输入要查找的元素:";cin>>k;inti,index=-1;for(i=0;i<10;i++){if(*p==k){index=i;break;}p++;}if(index==-1)cout<<k<<"没有出现在数组中。\n";elsecout<<k<<"是数组中下标为"<<index<<"的元素。\n";}7.删除字符串中的指定字符#include<iostream.h>#include<string.h>voidmain(){charstring[100],ch,*p=string;cout<<"请输入字符串:\n";cin.getline(p,100);cout<<"请输入要删除的字符:";cin.get(ch);while(*p){if(*p==ch)strcpy(p,p+1);elsep++;}cout<<"删除字符"<<ch<<"后的字符串为:\n";cout<<string<<endl;}第5章函数与编译预办理一、选择题题号12345678910答案DCDABCDDCC题号11121314151617181920答案ABCCCADCDC勘误:D选项“和种类均不同样”改为“或种类不同样”二、填空题1.①值传达②地址传达③引用传达inline3.①文件包含②宏定义③条件编译4.①形参名②函数先使用后定义5.①形式参数②实质参数③参数种类④参数个数⑤参数序次6.①void②int①静态储藏地域②08.①void(*fp)(char*s,inta[])②fp=f;或(*fp)=f;①sum1=5②sum2=-1510.①②s1=0,s2=4,s3=2③5011.①11②1331③3112.①0101②010111③013.①12345②3214514.①-414②-1814③-321415.①x=5,y=3②y=1016.①15-1121410②26714332017.①1a②3b③5c18.①i+1②k=j③str[k]=str[k+1]④del(s)19.①i++②a[j]=x③add_sort(b,x,n)④n20.①*sum②n/=10③fun(i,&s)④i%11==0&&s==1321.①k=j②a[i]%2!=0③count++④on_off(a,LAMP,CHILD)22.①str[i]②substr[k+1]=='\0'③k++④f(s1,s2)三、编程题字符排序#include<iostream.h>voidsort_char(char*str){char*p1,*p2,*q;charc;for(p1=str;*(p1+1)!='\0';p1++){q=p1;for(p2=p1+1;*p2!='\0';p2++)if(*p2<*q)q=p2;if(q!=p1){c=*p1;*p1=*q;*q=c;}}}voidmain(){chars[]="gabhdecf";cout<<"原字符串为:"<<s<<endl;sort_char(s);cout<<"排序后的字符串为:"<<s<<endl;}互换前后奇数地址的元素#include<iostream.h>#include<string.h>voidfun(char*str){inti,j;charc;if(strlen(str)<3)return;if(strlen(str)%2==0)j=strlen(str)-1;elsej=strlen(str);for(i=1;i<j;i+=2,j-=2){c=str[i];str[i]=str[j];str[j]=c;}}voidmain(){chars[]="ggoiromndno";cout<<"原字符串为:"<<s<<endl;fun(s);cout<<"互换后的字符串为:"<<s<<endl;}查找自反数#include<iostream.h>#include<string.h>intfun(intn){inta[50];inti=0,k=n;while(k){a[i]=k%10;k/=10;i++;}i--;for(intj=0;j<i;j++,i--)if(a[j]!=a[i])break;if(j>=i)return1;elsereturn0;}voidmain(){intbase,num;cout<<"请输入基数base和需要查找的自反数的个数num:"<<endl;cin>>base>>num;intn=base,count=0;while(count<num){if(fun(n)){cout<<n<<'\t';count++;if(count%5==0)cout<<endl;}n++;}cout<<endl;}第6章构造体与简单链表一、选择题题号123456789答案DCBBBCDAC题号101112131415161718答案DDBACBBCB勘误:其中“不正确”改为“有语法错误”二、填空题构造体变量各成员所占内存长度之和2.①typedefnodeNODE;②NODEs1,s2;delete动向new或deletep->next->next==NULL7.①p==head②p->next==NULL③p0->next=p->next④deletep⑤p0->next=p1⑥p1->next=p8.20129.1343110.gh11.①a[i].con=0②a[i].con++③continue12.①h1->data>=h2->data②h1!=NULL&&h2!=NULL③p->next=h1④h=merge(h1,h2)13.①head->next=p1②returnhead③head->next=p2④p2=p2->next14.①newNode②p->next=top③top->next④deletep15.①p②returnh③p=newND④p->next=h16.①node*h②h2->next③temp④h217.①p=p->next②p1->next=p③h=h->next④p->next=h118.①p->next=head②p1=p1->next③pmax1->next=pmax->next④DeleteMax(head)三、编程题1.建立链表,求输出总分最高和最低的学生#include<iostream.h>structnode{intdata;node*next;};node*fun(node*head){node*p=head,*even=0,*old=0,*p1=0,*p2=0;if(head==NULL)returnhead;while(p){if(p->data%2)//改为if(p->data%2)if(old==0){old=p,p1=p;}else{p1->next=p;p1=p;}elseif(even==0){even=p;p2=p;}else{p2->next=p;p2=p;}p=p->next;}if(old)p1->next=0;if(even){head=even;p2->next=old;}elsehead=old;returnhead;}voidprint(node*p)//输出链表{while(p){cout<<p->data<<'\t';p=p->next;}cout<<'\n';}voidmain(void){node*head=NULL,*p,*p1;inta;cout<<"输入数据,等于-1时,输入结束!\n";cin>>a;while(a!=-1){p=newnode;p->data=a;if(head==0){head=p;p1=p;}else{p1->next=p;p1=p;}cout<<"请输入数据:";cin>>a;}p->next=0;print(head);head=fun(head);print(head);}2.建立链表,输出总分最高和最低的学生#include<iostream.h>//#defineNULL0structNODE{intid;charname[10];floatc,maths,english;NODE*next;};NODE*Create(intn){NODE*p1,*p2,*h=0;inti=0;while(i<n){p1=newNODE;cin>>p1->id>>p1->name>>p1->c>>p1->maths>>p1->english;if(h==0){h=p1;p2=p1;}else{p2->next=p1;p2=p1;}i++;}p2->next=0;returnh;}voidprint(NODE*h){NODE*p;p=h;NODE*max,*min;max=min=h;floatsum=0;while(p!=0){sum=(p->c+p->maths+p->english);if(sum>(max->c+max->maths+max->english))max=p;if(sum<(min->c+min->maths+min->english))min=p;p=p->next;}cout<<"最高分:"<<max->id<<'\t'<<max->name<<'\t'<<max->c<<'\t'<<max->maths<<'\t'<<max->english<<endl;cout<<"最低分:"<<min->id<<'\t'<<min->name<<'\t'<<min->c<<'\t'<<min->maths<<'\t'<<min->english<<endl;cout<<endl;}voiddeletechain(NODE*h){NODE*p;while(h){p=h;h=h->next;deletep;}}voidmain(){intn;cout<<"请输入班级人数!"<<endl<<"班级人数为:";cin>>n;cout<<endl;cout<<"请输入班级学生信息!"<<endl;cout<<"学号姓名C++成绩mathsenglish"<<endl;NODE*h;h=Create(n);cout<<endl<<"学号姓名C++mathsenglish"<<endl;print(h);deletechain(h);}将链表依照产品种类分类#include<iostream.h>#include<string.h>structnode{charproduct[20];charcategory[10];node*next;};node*create(void){nodetemp,*p2=&temp;charproduct[20],category[10];while①{cout<<"输入产品名称和种类,当输入产品名称为end时表示结束:";cin>>product>>category;if(strcmp(product,"end")==0)break;p2->next=newnode;p2=p2->next;strcpy(p2->product,product);strcpy(p2->category,category);}p2->next=NULL;returntemp.next;}voidprint(node*h){while(h){cout<<h->product<<'\t'<<h->category<<endl;h=h->next;}cout<<endl;}voiddeletechain(node*h){node*p;while(p=h){h=h->next;deletep;}}node*insertascategory(node*h,node*p){node*p2=0,*p1=h;if(h==0){p->next=0;returnp;}while(p1&&strcmp(p1->category,p->category)){p2=p1;p1=p1->next;}while(p1&&strcmp(p1->category,p->category)==0){p2=p1;p1=p1->next;}p->next=p1;p2->next=p;returnh;}node*classify(node*h){node*h2=0,*p;while(h){p=h;h=h->next;h2=insertascategory(h2,p);}returnh2;}voidmain(void){node*h;h=create();print(h);h=classify(h);print(h);deletechain(h);}以x值为界把链表分为两部分structnode{intdata;node*next;};node*change(node*pa,intx){node*p1,*p2,*p,*q;p1=p2=pa;p=newnode;p->data=x;while(p2->data<x&&p2->next!=0){p1=p2;p2=p2->next;}if(p2->next!=0){p->next=p2;p1->next=p;q=p1;while(p2!=0){if(p2->data<x){p1->next=p2->next;p2->next=p;q->next=p2;q=p2;p2=p1->next;}else{p1=p2;p2=p2->next;}}}else{p1=p2;p->next=0;}returnpa;}voidmain(){nodea[10]={{3},{4},{2},{1},{9},{6},{5},{0},{10},{6}},*head=a,*p;inti,x;for(i=0;i<9;i++)a[i].next=&a[i+1];a[9].next=NULL;cout<<"输入x的值:";cin>>x;head=change(head,x);p=head;while(p){cout<<p->data<<'\t';p=p->next;}cout<<endl;}通讯录#include<iostream.h>#include<string.h>#include<stdlib.h>#defineN3structSTUDENT{charid[15];charname[20];charphone[15];charroom[5];};STUDENTstu[N];intflage;voidInput(STUDENT*);voidOutput(STUDENT*);voidOutput1(STUDENT*);voidSearch_face(STUDENT*);voidSearch1(STUDENT*);voidSearch2(STUDENT*);voidSearch3(STUDENT*);voidSearch4(STUDENT*);voidSort_face(STUDENT*);voidSort1(STUDENT*);voidSort2(STUDENT*);voidSort3(STUDENT*);voidSort4(STUDENT*);voidface(){inti;cout<<endl<<'\t';for(i=0;i<57;i++)cout<<'*';cout<<endl;cout<<"\t*"<<"\t\t\t\t\t\t\t*\n";cout<<"\t*"<<"\t\t\t学生通讯录\t\t\t*\n";cout<<"\t*"<<"\t\t\t\t\t\t\t*\n";cout<<"\t*"<<"\t1、输入\t2、盘问\t3、排序\t4、输出\t5、退出\t\t*\n";cout<<"\t*"<<"\t\t\t\t\t\t\t*\n"<<'\t';for(i=0;i<57;i++)cout<<'*';cout<<endl<<endl;do{cout<<"请输入各功能的序号,执行!cin>>i;}while(i<1||i>5);cout<<endl;switch(i){case1:Input(stu);break;case2:Search_face(stu);break;case3:Sort_face(stu);break;case4:Output(stu);break;case5:exit(0);

";}}voidInput(STUDENT*ps){flage=1;cout<<"请输入学生信息!\n\n";cout<<"学号姓名for(inti=0;i<N;i++){

电话

宿舍号

\n";cin>>ps[i].id>>ps[i].name>>ps[i].phone>>ps[i].room;}face();}voidSearch_face(STUDENT*ps){if(flage==0){cout<<"你还没输入数据!请输入!";face();}cout<<endl<<'\t';for(inti=0;i<57;i++)cout<<'*';cout<<endl;cout<<"\t*"<<"\t\t\t\t\t\t\t*\n";cout<<"\t*"<<"\t\t\t

盘问\t\t\t\t*\n";cout<<"\t*"<<"\t\t\t\t\t\t\t*\n";cout<<"\t*"<<"\t1

、姓名

\t2、学号

\t3、电话

\t4、宿舍\t5、退出\t\t*\n";cout<<"\t*"<<"\t\t\t\t\t\t\t*\n"<<'\t';for(i=0;i<57;i++)cout<<'*';cout<<endl<<endl;do{cout<<"请输入盘问方式的序号,执行!cin>>i;}while(i<1||i>5);cout<<endl;switch(i){case1:Search1(stu);break;case2:Search2(stu);break;case3:Search3(stu);break;case4:Search4(stu);break;case5:face();

";}}voidSort_face(STUDENT*ps){if(flage==0){cout<<"你还没输入数据!请输入!face();}cout<<endl<<'\t';for(inti=0;i<57;i++)cout<<'*';cout<<endl;cout<<"\t*"<<"\t\t\t\t\t\t\t*\n";

";cout<<"\t*"<<"\t\t\t

排序\t\t\t\t*\n";cout<<"\t*"<<"\t\t\t\t\t\t\t*\n";cout<<"\t*"<<"\t1

、姓名

\t2、学号

\t3、电话

\t4、宿舍\t5、退出\t\t*\n";cout<<"\t*"<<"\t\t\t\t\t\t\t*\n"<<'\t';for(i=0;i<57;i++)cout<<'*';cout<<endl<<endl;do{cout<<"请输入排序方式的序号,执行!cin>>i;}while(i<1||i>5);cout<<endl;switch(i){case1:Sort1(stu);break;case2:Sort2(stu);break;case3:Sort3(stu);break;case4:Sort4(stu);break;case5:face();

";}}voidPrint(STUDENTst){cout<<"学号姓名电话宿舍号\n";cout<<""<<st.id<<'\t'<<<<'\t'<<st.phone<<'\t'<<st.room<<'\n';}voidSearch1(STUDENT*ps){intk=0;charstr[20];cout<<"请输入盘问信息(姓名):";cin>>str;for(inti=0;i<N;i++)if(strcmp(ps[i].name,str)==0){k=1;break;}if(k){cout<<"盘问结果是:\n";Print(ps[i]);}elsecout<<"该学生不存在!";Search_face(stu);}voidSearch2(STUDENT*ps){intk=0;charstr[20];cout<<"请输入盘问信息(学号):";cin>>str;for(inti=0;i<N;i++)if(strcmp(ps[i].id,str)==0){k=1;break;}if(k){cout<<"盘问结果是:\n";Print(ps[i]);}elsecout<<"该学生不存在!";Search_face(stu);}voidSearch3(STUDENT*ps){intk=0;charstr[20];cout<<"请输入盘问信息(电话):";cin>>str;for(inti=0;i<N;i++)if(strcmp(ps[i].phone,str)==0){k=1;break;}if(k){cout<<"盘问结果是:\n";Print(ps[i]);}elsecout<<"该学生不存在!";Search_face(stu);}voidSearch4(STUDENT*ps){intk=0;charstr[20];cout<<"请输入盘问信息(宿舍):";cin>>str;for(inti=0;i<N;i++)if(strcmp(ps[i].room,str)==0){k=1;break;}if(k){cout<<"盘问结果是:\n";Print(ps[i]);}elsecout<<"该学生不存在!";Search_face(stu);}voidSort1(STUDENT*ps){STUDENTs;for(inti=0;i<N-1;i++)for(intj=i;j<N;j++)if(strcmp(ps[i].name,ps[j].name)>0){s=ps[i];ps[i]=ps[j];ps[j]=s;}cout<<"排序结果是:\n";Output1(ps);Sort_face(stu);}voidSort2(STUDENT*ps){STUDENTs;for(inti=0;i<N-1;i++)for(intj=i;j<N;j++)if(strcmp(ps[i].id,ps[j].id)>0){s=ps[i];ps[i]=ps[j];ps[j]=s;}cout<<"排序结果是:\n";Output1(ps);Sort_face(stu);}voidSort3(STUDENT*ps){STUDENTs;for(inti=0;i<N-1;i++)for(intj=i;j<N;j++)if(strcmp(ps[i].phone,ps[j].phone)>0){s=ps[i];ps[i]=ps[j];ps[j]=s;}cout<<"排序结果是:\n";Output1(ps);Sort_face(stu);}voidSort4(STUDENT*ps){STUDENTs;for(inti=0;i<N-1;i++)for(intj=i;j<N;j++)if(strcmp(ps[i].room,ps[j].room)>0){s=ps[i];ps[i]=ps[j];ps[j]=s;}cout<<"排序结果是:Output1(ps);Sort_face(stu);

\n";}voidOutput(STUDENT*ps){if(flage==0){cout<<"你还没输入数据!请输入!face();}cout<<"学号姓名电话for(inti=0;i<N;i++)

";

宿舍号

\n";cout<<""<<ps[i].id<<'\t'<<ps[i].name<<'\t'<<ps[i].phone<<'\t'<<ps[i].room<<'\n';face();}voidOutput1(STUDENT*ps){cout<<"学号姓名电话宿舍号\n";for(inti=0;i<N;i++)cout<<""<<ps[i].id<<'\t'<<ps[i].name<<'\t'<<ps[i].phone<<'\t'<<ps[i].room<<'\n';}voidmain(){

while①face();}第7章类和对象一、选择题题号12345678910答案CDBBDDDDDB题号11121314151617181920答案CDACACDADD勘误:其中“合法的”改为“不合法的”二、填空题1.①类名和作用域运算符

②对象名和成员运算符

或指针变量名和指针成员运算符2.①私有的②公有的3.this4.①

public

returna;

cout<<a<<

’t’<<b<<endl;

④*this⑤A::A(intx,inty)⑥t2=t1.add()⑦t1.print()⑧cout<<t2.geta()<<endl5.①str=newchar[strlen(s)+1]②strcpy(str,s)③delete[]str④Stringst(“abcde”)⑤st.print()6.D(2001,10,1),D(2002,10,1),D(2003,110,1)7.①A*p=a1;②*(p+i)=A(i)③p++->print()8.①newchar[strlen(s1)+1]②delete[]p9.①staticintcountP②countP++③countP--④staticvoid⑤intPoint::⑥2⑦7⑧210.①000②123③5103④24611.246412.①构造函数A②构造函数B③2031④析构函数~A三、编程题1.求n!的类#include<iostream.h>classA{intn,nn;public:A(intx=0){n=x;}voidset(intx){n=x;}voidfun(){nn=1;for(inti=1;i<=n;i++)nn*=i;}voidprint(){cout<<"n="<<n<<endl;cout<<"nn="<<nn<<endl;}};voidmain(){a1;a1.fun();a1.print();a1.set(5);a1.fun();a1.print();}2.字符串类#include<iostream.h>#include<string.h>classSTR{char*p;public:STR(char*s=0){if(s){p=newchar[strlen(s)+1];strcpy(p,s);}}voidset(char*s=0){if(p)delete[]p;if(s){p=newchar[strlen(s)+1];strcpy(p,s);}elsep=0;}voidjoin(char*s){intn1=strlen(p),n2=strlen(s);char*p0=newchar[n1+n2+1],*p1=p0,*p2=p;while(*p1++=*p2++);p1--;p2=s;while(*p1++=*p2++);delete[]p;p=newchar[n1+n2+1];p1=p;p2=p0;while(*p1++=*p2++);delete[]p0;}voidbackward(){char*p1=p,*p2=p;while(*p2++);p2-=2;while(p1<p2){chart=*p1;*p1=*p2;*p2=t;p1++;p2--;}}~STR(){if(p)delete[]p;}voidprint(){if(p)cout<<p<<endl;

}};voidmain(){STRst1("12345");st1.print();st1.set("abcde");st1.print();st1.join("12345");st1.print();st1.backward();st1.print();}3.学生类#include<iostream.h>#include<string.h>classSTU{charname[15];floateng,math,phy,pro,total,ave;public:voidinput(){cout<<"请输入学生姓名、英语成绩、数学成绩、物理成绩、程序成绩:cin>>name>>eng>>math>>phy>>pro;total=eng+math+phy+pro;ave=total/4;

";}floatget_total(){

returntotal;

}floatget_ave(){

returnave;

}voidprint(){cout<<name<<endl;cout<<"英语:"<<eng<<',';cout<<"数学:"<<math<<',';cout<<"物理:"<<phy<<',';cout<<"程序设计:"<<pro<<',';cout<<"总分:"<<total<<',';cout<<"平均分:"<<ave<<'\n';}};voidinput(STUt[],intn){for(inti=0;i<n;i++)t[i].input();}voidsort(STUt[],intn){for(inti=0;i<n-1;i++)for(intj=i+1;j<n;j++)if(t[i].get_ave()<t[j].get_ave()){STUt0(t[i]);t[i]=t[j];t[j]=t0;}}voidprint(STUt[],intn){for(inti=0;i<n;i++)t[i].print();}voidmain(){STUst[5];input(st,5);print(st,5);sort(st,5);print(st,5);}4.二维数组类Array#include<iostream.h>classArray{floata[4][5],b[5][4];public:Array(floatt[4][5]){for(inti=0;i<4;i++)for(intj=0;j<5;j++){a[i][j]=t[i][j];b[j][i]=0;}}voidfun(){for(inti=0;i<5;i++)for(intj=0;j<4;j++){intn,i0,j0;n=i*4+j;i0=n/5;j0=n-i0*5;b[i][j]=(a[(i0+3)%4][j0]+a[(i0+1)%4][j0]+a[i0][(j0+4)%5]+a[i0][(j0+1)%5])/4;}}voidprint(){cout<<"数组a:\n";for(inti=0;i<4*5;i++){cout<<*(*a+i)<<'\t';if((i+1)%5==0)cout<<'\n';}cout<<"数组b:\n";for(i=0;i<5*4;i++){cout<<*(*b+i)<<'\t';if((i+1)%4==0)cout<<'\n';}}};voidmain(){floatt[4][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};Arraytest(t);test.fun();test.print();}5.时间类Time#include<iostream.h>#include<string.h>classtime{inth,m,s;char*str_t;public:time(inthh=0,intmm=0,intss=0){h=(hh>=0&&hh<24?hh:0);m=(mm>=0&&mm<60?mm:0);s=(ss>=0&&ss<60?ss:0);str_t=newchar[9];*str_t='\0';}~time(){delete[]str_t;}voidset_t(int,int,int);voidconvert();voidprint()const{cout<<str_t<<endl;}};char*itoa(intn){char*tmp=newchar[3];if(n<10){*tmp='0';*(tmp+1)=n+'0';}else{*tmp=n/10+'0';*(tmp+1)=n%10+'0';}*(tmp+2)='\0';returntmp;}voidtime::set_t(inthh,intmm,intss){h=(hh>=0&&hh<24?hh:0);m=(mm>=0&&mm<60?mm:0);s=(ss>=0&&ss<60?ss:0);*str_t='\0';convert();}voidtime::convert(){char*tmp;tmp=itoa(h);strcat(str_t,tmp);strcat(str_t,":");tmp=itoa(m);strcat(str_t,tmp);strcat(str_t,":");tmp=itoa(s);strcat(str_t,tmp);delete[]tmp;}voidmain(){timet1;t1.convert();t1.print();t1.set_t(11,5,30);t1.print();}第8章继承与多态性一、选择题题号12345678910答案CDADABCBDD题号11121314151617181920答案DDACBCCCAC二、填空题1.(1)①a、b、c、x、y、z②b、y③c、z④a、x⑤b、c、x、y、z⑥b、y(2)①y②b、c、z③a、x④b、c、x、y、z⑤y(3)①y②z③a、b、c、x④b、c、x、y、z⑤y2.私有3.抽象4.虚基5.①基类②对象6.①静态②编译③虚函数7.①21②058.①10020030030②10100③202009.①510②end.③201010.①classAclassB②end.③~classB~classA11.①10②buildB③buildC④releaseA12.①classB②classC③classD④513.①55②202014.①10②102015.①1②3③5④1001016.①B::f()②B::fun()③A::f()④B::fun()17.①姓名陈涛年薪万元。②姓名李原③姓名李原月薪水4000元18.①110②222019.①protected或public②Base1(s1),Base2(s2)或Base2(s2),Base1(s1)③Base1::str④test.print()20.①virtualvoidshow()=0②C(int,int,int)(注:参数可有任一名称)③b1(y)④&t三、编程题1.求长方形的面积和长方体的表面积、体积#include<iostream.h>classRectangle{protected:floatL;floatW;floatarea;public:

//长方形的长//长方形的宽//长方形的面积Rectangle(floatL1,floatW1){L=L1;W=W1;}voidfunction(){area=L*W;}voidshow(){cout<<"长为"<<L<<"

,宽为

"<<W<<"

的长方形面积为

"<<area<<endl;}};classCuboid:publicRectangle{floatH;//长方体的高floatvolume;//长方体的体积public:Cuboid(floata,floatb,floatc):Rectangle(a,b){H=c;}voidfunction(){area=(L*W+L*H+W*H)*2;}voidfun(){volume=L*W*H;}voidshow(){cout<<"长为"<<L<<"

,宽为"<<W<<"

,高为"<<H<<"

的长方体表面积为

"<<area<<",体积为"<<volume<<endl;}};voidmain(){Rectangler(2,3);Cuboidc(2,3,4);

r.function();c.function();

r.show();c.fun();

c.show();}2.产生并输出圆桌信息#include<iostream.h>#include<string.h>classCircle{protected:doubleradius;doublearea;public:Circle(doubler){radius=r;}};classTable{protected:doubleheight;public:Table(doubleh){height=h;}};classRoundtable:publicTable,publicCircle{char*color;public:Roundtable(doubleh,doubler,charc[]):Circle(r),Table(h){color=newchar[strlen(c)+1];strcpy(color,c);}voidfun(){area=3.14*radius*radius;}voidshow(){cout<<"高度:"<<height<<"米"<<endl;cout<<"面积:"<<area<<"平方米"<<endl;cout<<"颜色:"<<color<<endl;}~Roundtable(){delete[]color;}};voidmain(){Roundtablert(0.75,1.1,"黑色");rt.fun();rt.show();}3.计算企业的经营税#include<iostream.h>#include<string.h>classTax{protected:charname[50];doubleincome;

//企业名称//经营收入doubletaxes;

//税金public:Tax(char*n,doublein){strcpy(name,n);income=in;}virtualvoidfun()=0;voidshow(){cout<<name<<"的经营收入为"<<income<<"万元,税金为"<<taxes<<"万元\n";}};classService:publicTax{public:Service(char*n,doublein):Tax(n,in){}voidfun(){taxes=income*5/100;}};classFabrication:publicTax{public:Fabrication(char*n,doublein):Tax(n,in){}voidfun(){taxes=income*17/100;}};voidprint(Tax&t){t.fun();t.show();}voidmain(){charname[50];intincome;cout<<"请输入服务性企业名称:";cout<<"请输入经营收入(万元):";

cin>>name;cin>>income;Services(name,income);print(s);cout<<"请输入生产性企业名称:";cout<<"请输入经营收入(万元):";

cin>>name;cin>>income;Fabricationf(name,income);print(f);}4.把原始体育成绩变换为等第#include<iostream.h>classSports{protected:intitem;charname[20];

//项目//姓名doublescore;chargrade[10];public:Sports(inti,char*n){

//原始成绩//评定等第item=i;strcpy(name,n);cout<<"请输入原始成绩:";cin>>score;}voidshow(){cout<<name<<"的"<<item<<"米成绩为"<<score<<"秒,等第为"<<grade<<endl;}virtualvoidchange()=0;};classRun50:publicSports{public:Run50(inti,char*n):Sports(i,n){}voidchange(){if(score<=6.50)strcpy(grade,"优秀");elseif(score<=6.70)strcpy(grade,"优秀");elseif(score<=7.10)strcpy(grade,"及格");elsestrcpy(grade,"不及格");}};classRun100:publicSports{public:Run100(inti,char*n):Sports(i,n){}voidchange(){if(score<=13.10)strcpy(grade,"优秀");elseif(score<=13.70)strcpy(grade,"优秀");elseif(score<=14.90)strcpy(grade,"及格");elsestrcpy(grade,"不及格");}};classRun1000:publicSports{public:Run1000(inti,char*n):Sports(i,n){}voidchange(){if(score<=203.00)strcpy(grade,"优秀");elseif(score<=213.00)strcpy(grade,"优秀");elseif(score<=233.00)strcpy(grade,"及格");elsestrcpy(grade,"不及格");}};classRun1500:publicSports{public:Run1500(inti,char*n):Sports(i,n){}voidchange(){if(score<=323.00)strcpy(grade,"优秀");elseif(score<=337.00)strcpy(grade,"优秀");elseif(score<=365.00)strcpy(grade,"及格");elsestrcpy(grade,"不及格");}};voidmain(){Sports*s;intit;cout<<"请输入项目(50/100/1000/1500):";cin>>it;charna[20];cout<<"请输入姓名:";cin>>na;if(it==50){Run50r50(it,na);s=&r50;s->change();s->show();}elseif(it==100){Run100r100(it,na);s=&r100;s->change();s->show();}elseif(it==1000){Run1000r1000(it,na);s=&r1000;s->change();s->show();elseif(it==1500){Run1500r1500(it,na);s=&r1500;s->change();s->show();else{cout<<"输入项目错误\n";exit(0);}

}

}}第9章友元函数与运算符重载一、选择题题号12345678910答案CCDDAACCAD题号11121314151617181920答案CDDAADADCC二、填空题A封装性或隐蔽性友元函数①当前对象②该函数的参数友元x.operator+(operator*(y,z))静态赋值运算符重载函数A&operator=(A&);1020102012点(1,2)点(2,3)点(3,4)点(2,3)102020216,84,515.①Tpoint::a②b③(a.a-b.a)*(a.a-b.a)+(a.b-b.b)*(a.b-b.b)16.①Fraction(){}②f.num=-num③returnf17.①Array(){}②ArrayArray::operator^(Arrayarr)③j<arr.ar[i]④*this18.①t.geta()②*this19.①strlen(s)+1②ptr-=2③delete[]str20.①intindex②data[index]③a[i]三、编程题圆锥体类#include<iostream.h>#include<math.h>constfloatPI=3.1415926;classV{floatr,h;public:V(floata,floatb){r=a;h=b;}floatv1(){returnPI*pow(r,2)*h/3;}friendfloatvolum(V&);};floatvolum(V&a){returnPI*a.r*a.r*a.h/3;}voidmain(){Va1(25,40);cout<<"圆锥体的体积为:\n";cout<<volum(a1)<<endl;cout<<a1.v1()<<endl;}矩阵类Array#include<iostream.h>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论