C++程序语言设计(清华大学出版社)复习要点_第1页
C++程序语言设计(清华大学出版社)复习要点_第2页
C++程序语言设计(清华大学出版社)复习要点_第3页
C++程序语言设计(清华大学出版社)复习要点_第4页
C++程序语言设计(清华大学出版社)复习要点_第5页
已阅读5页,还剩292页未读 继续免费阅读

下载本文档

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

文档简介

试卷编号:8172

所属语言:C++

试卷方案:题库182道设计题

试卷总分:1820分

共有题型:1种

一、程序设计共182题(共计1820分)

第1题(10.0分)题号:664

/*--------------------------------------

【程序设计】

题目:已知有结构体类型定义:

structnode

{intdata;

structnode*nextPtr;

};

请编写函数voidcomputingList(node*head),对head

指向的单向链表,分别统计结点的data成员值为负数、0、

正数的结点个数分别存入变量neglive、zero、positive中。

注意:部分源程序给出如下。请勿改动主函数main和其它函数中

的任何内容,仅在函数的花括号中填入所编写的若干语句。

---------------------------------------------------------*/

#include<iostream>

#include<fstream>

usingnamespacestd;

voidgrading(int,int,int);

structnode

{

intdata;

structnode*nextPtr;

);

voidcomputingList(node*head)

intpositive=0,negtive=0,zero=0;

/**********Prograiii**********/

/**********End**********/

〃忽略阅读

grading(positive,zero,negtive);

//忽略阅读结束

)

structnode*createList(void)

(

node*head=NULL,*pl,*p2;

inti;

inta[10]={-1,3,4,0,9,4,11,-6,2,-10};

head=p2=pl=newnode;

pl->data=a[0];

for(i=l;i<10;i++)

{

pl=newnode;

pl->data=a[i];

p2->nextPtr=pl;

p2=pl;

}

p2->nextPtr=NULL;

return(head);

)

intmain()

(

structnode*head;

head=createList();

computingList(head);

return0;

)

〃以下忽略阅读

voidgrading(inta,intb,intc)

fstrearnmyfile;

myfile.open("out.txt〃,ios::out);

myfile«a<<z,,z<<b«,/z/«c«endl;

myfile.close();

)

答案:structnode*p;

p=head;

while(p!=NULL)

(

if(p->data>0)

positive++;

elseif(p->data<0)

negtive++;

elseif(p->data==0)

zero++;

p=p->nextPtr;

第2题(10.0分)题号:522

/*-------------------------

【程序设计】

题目:设计函数charcapitalize(char);将小写英文字符变为对应的大写字符。

注意:

1.部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在*program*

和*end*所标记的区域内完成题干要求的函数功能。

2.〃标记开始与〃标记结束内的程序可以忽略阅读。

-----------------------------------------------------------------------------*/

#include<iostream>

#include<fstream>

usingnamespacestd;

voidwwjt();

/********Program********/

charcapitalize(charch)

(

if(ch>=,a'&&ch〈二'z')

returnch,a'+'A';

elsereturnch;

)

/********End********/

intmain()

(

inti=0;

charcp[30];

cout<〈〃请输入包含小写字母的句子:〃《endl;

cin.getline(cp,30);

while(cp[i]!='\0')

cout<<capitaiize(cp[i++]);

cout«endl;

//忽略阅读

wwjt();

〃忽略阅读结束

return0;

)

〃忽略阅读

voidwwjt()

(

charins[250];

inti=0;

fstreaminfile,outfile;

infile,open("in.txt〃,ios::in);

outfile.open("out.txt,z,ios::out);

infile,getline(ins,250);

while(ins[i]!-\0*)

(

outfile<<capitalize(ins[i]);

i++;

}

infile,close();

outfile.close();

)

〃忽略阅读结束

答案:charcapitalize(charch)

{

if(ch>=*a&&ch<=,z')

returnch-'a'+'A,;

elsereturnch;

)

第3题(10.0分)题号:672

/*-------------------------

【程序设计】

题目:函数mySum(inta[][],intm,intn)返回二维

整数数组a中所有元素的和,m、n分别为数组a的行

数、列数。填写适当的代码,使得mySum()完成正确

的功能。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

-----------------------------------------------*/

tlinclude<iostream>

[include<fstream>

usingnamespacestd;

intmySum(inta[2][3],intm,intn);

voidgfkd();

voidmain()

inta[2][3]={{1,2,3},{4,5,6}};

cout«mySum(a,2,3)«endl;

//-------main。函数此后部分可以不阅读-

gfkdO;

)

intmySum(inta[2][3],intm,intn)

(

/***************Program*****************/

/***************End^jy***************,,

)

voidgfkd()

{fstreammyF;

inta[2][3];

myF.open("in.dat〃,ios::in);

myF.read((char*)a,sizeof(int)*2*3);

myF.close();

myF.open("out.dat,z,ios::out);

myF«mySum(a,2,3);

myF.closeO;

)

答案:inti,j,s=0;

for(i=0;i<m;i++)

for(j=0;j<n;j++)

s=s+a[i][j];

returns;

第4题(10.0分)题号:588

/*-----------------------------

【程序设计】

题目:求1T000之间同构数的个数n。同构数是:

”某数与其自身的平方数的后几位相同

例如:25X25=625,25是同构数。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

-----------------------------------------------------*/

#include<fstream>

#include<iostream>

usingnamespacestd;

voidwriteinfile(intn);

voidmain()

intm,k,j,n=0;

for(m=l;m<=1000;m++)

/**********Program**********/

inti=l;

k=m;

while(k!=0)

(

k/=10;

i*=10;

)

if(j%i==m)

n++;

/********格End********桥/

)

writeinfile(n);

)

voidwriteinfile(intn)

(

fstreammyfile;

myfile.open(,zf.txt",ios::out);

myfile<<n<<endl;

myfile.close();

)

答案:inti=l;

k二m;

while(k!=0)

(

k/=10;

i*=10;

}

if(j%i==m)

n++;

第5题(10.0分)题号:725

/*----------------------------

【程序设计】

题目:补充函数aver的代码,该函数计算n个学生成绩(通

过参数cj传入)的平均分数。

注意:部分源程序给出如下。仅在标有〃Program〃和〃End〃

的注释行之间补充代码,请勿改动其它内容。

-----------------------------------------------------*/

#include<iostream>

#include<fstream>

usingnamespacestd;

voidgrading0;

floataver(intcj,intn)

(

/**********Program**********/

/**********End**********/

)

intmain()

(

grading0;

return0;

)

voidgrading()

(

fstreaminfile,myfile;

intb[50];

inti;

infile,open(,zin.txt〃,ios::in);

myfile,open(,zout.txt",ios::out);

for(i=0;i<50;i++)

infile>>b[i];

myfile<<(int)aver(b,50)<<endl;

infile,close();

myfile.close();

答案:intsum=0;

inti;

for(i=0;i〈n;i++)

sum+=cj[i];

return(float)sum/n;

第6题(10.0分)题号:709

/*----------------------------

【程序设计】

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

-----------------------------------------------------*/

#include<iostream>

ttinclude<fstream>

usingnamespacestd;

intgrading();

intgcd(intm,intn)

(

intr;

r=m%n;

/**********Program**********/

/**********End**********/

returnn;

}

intmain()

intm,n;

cout<〈”请输入两个数:\n〃;

cin»m»n;

if(m<n)

(

inttemp;

temp=m;

m=n;

n=temp;

)

cout«m<<"和的最大公约数是“<<gcd(m,n)«endl;

cout«m<<"和“<<n<<"的最小公倍数是"<<m*n/gcd(m,n)«endl;

〃忽略阅读

grading();

〃忽略阅读结束

return0;

)

〃以下忽略阅读

intgrading()

(

intm,n;

ifstreaminfile("in.txt〃,ios::in);

ofstreamoutfile(〃out.txt〃,ios::out);

if(!infile.is_open()||loutfile.is_open())

(

cout«/zFileOpenError!,z«endl;

return_1;

)

for(inti=0;i<8;i++){

infile»m»n;

outfile«gcd(m,n)<<"〃<<ni*n/gcd(m,n)«endl;

}

infile,close();

outfile.close();

return0;

)

答案:while(r!=O)

(

m=n;

n=r;

r=m%n;

}

第7题(10.0分)题号:667

/*--------------------------

【程序设计】

题目:编程计算,计算公式如右图所示。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

--------------------------------------------------------*/

#include<iostream>

ttinclude<fstream>

usingnamespacestd;

intcalcO

(

/**********Program***料*****/

/**********End***科*****/

}

voidmain(void)

intvalue;

value=calc();

cout<<“累计和s为:〃<<value<<endl;

fstreamoutfile;

outfile.open(/zout.txt〃,ios::out);

outfile«”累计和s为:〃«value«endl;

outfile.close();

)

答案:inti,k,s;

s=0;

for(i=l;i<=20;i++)

for(k=l;k<=3;k++)

s=s+(i+l)*(i+l)*(k+2)*(k+2);

returns;

第8题(10.0分)题号:265

/*---------------------------------------------

【程序设计】

题目:完成函数cal,该函数计算数组a中的所有数据的

最大值及最小值以及它们的差,并存入到全局变

量max、min、ca中。例如数组a中包含8,43,7,

18,2,56,37,123,25,26则max=123,min=2,

ca=121o

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

--------------------------------------------------*/

#include<iostream>

Winclude<fstream>

usingnamespacestd;

intgradingO;

intmax,min,ca;

voidcal(inta[],intsize)

/**********Program**********/

/**********End**********/

)

intmain()

{

inta[100]={8,43,7,18,2,56,37,123,25,26);

cal(a,10);

cout«z,max=z,<<max<<endl;

cout«,/min=/z<<min<<endl;

cout«,zca=zz«ca«endl;

〃忽略阅读

grading();

〃忽略阅读结束

return0;

)

〃以下忽略阅读

intgrading()

(

fstreaminfile,outfile;

inta[100],i;

infile,open(,zin.txt〃,ios::in);

outfile.open("out.txt〃,ios::out);

for(i=0;i<20;i++)

{

infile>>a[i];

)

cal(a,20);

outfile<<max<<,zz,<<min<<z,〃<<ca<<endl;

for(i=0;i<15;i++)

infile»a[i];

)

cal(a,15);

outfile<<max«z,/z<<min«z//z«ca«endl;

infile,close();

outfile.closeO;

return0;

}

答案:inti;

max=min=a[0];

for(i=0;i<size;i++)

(

if(a[i]>max)

max=a[i];

if(a[i]<min)

min=a[i];

)

ca=max-min;

第9题(10.0分)题号:707

/*-------------------------

【程序设计】

题目:从文件中读入n个字符串,将其中以字母A开头的字符串复制

到二维字符数组str1中。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

------------------------------------------------*/

#include<iostream>

#include<fstream>

#include<string>

usingnamespacestd;

#definen5

#defineM20

voidwwjt(intlen);

charstrl[n][M];

voidmain()

inti;

charstr[n][M];

ifstreaminfile("in.txt,z,ios::in);

if(!infile,isopen())

(

cout<<,zFileOpenError!z,<<endl;

return;

)

for(i=0;i<n;i++)

infile»str[i];

infile,close();

intj=0;

/**********Program**********/

/**********End**********/

wwjt(j);

)

voidwwjt(intlen)

(

ofstreamoutfile(z/out.txt〃,ios::out);

if(loutfile.is_open())

(

cout<<z/FileOpenErrorz,«endl;

return;

}

for(inti=0;i<len;i++)

outfile<<strl[i]«"\n";

outfile.close();

}

答案:for(i=0;i<n;i++)

(

if((strcmp(str[i],/ZA,Z)>=0)&&(strcmp(str[i],<0))

{strcpy(strl[j],str[i]);

j++;

}

)

第10题(10.0分)题号:673

/*-----------------------------------------------------

【程序设计】

题目:函数myStrCat(char*dst,char*src)将字符串src

连接到字符串dst的后面。填写适当的代码,使得

mySum()完成正确的功能。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

-----------------------------------------------*/

#include<iostream>

#include<fstream>

usingnamespacestd;

voidmyStrCat(char*dst,char*src);

voidgfkd();

voidmain()

{chardst[100]=,zHello,

charsrc[100]="Goodluck!”;

myStrCat(dst,src);

cout«dst«endl;

//-------main。函数此后部分可以不阅读一

gfkd();

)

voidmyStrCat(char*dst,char*src)

(

/***************Program*************我**/

End*****************/

)

voidgfkd()

fstreammyF;

chardst[100],src[100];

myF.open(z,in.dat〃,ios::in);

myF.read(dst,100);

myF.read(src,100);

myF.closeO;

myF.open(z,out.dat〃,ios::out);

myStrCat(dst,src);

myF«dst;

myF.closeO;

)

答案:inii=0,len;

1en=strlen(dst);

while(src[i])

dst[len++]=src[i++];

dst[len]='\0';

第11题(10.0分)题号:723

/*----------------------------

【程序设计】

题目:编写函数eachPrime,判断两个正整数m和n是否为

互质数。若是,返回1;否则,返回

互质数:最大公约数为1的两个数称为互质数。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

不妥//

#include<iostream>

^include<fstream>

#include<cstring>

usingnamespacestd;

inteachPrime(intm,intn)

/**********Program**********/

/**********End**********/

voidgrading();

intmain()

{

intnuml,num2,result;

cout<<"Pleaseentertwointeger(>0):\n〃;

cin»numl»num2;

if(numl<=0I|num2<=0)

cout«Inputerror!\n/z;

result=eachPrime(numl,num2);

if(result==1)

cout«numl«和«num2<<”是互质数!\n〃;

else

cout«numl«和〃<<num2<<“不是互质数!\n〃;

〃忽略阅读

grading();

〃忽略阅读结束

return0;

)

〃以下忽略阅读

voidgrading()

(

intnl,n2,result;

fstreaminfilel72,myfile;

infilel72.open(,zin172.txt〃,ios::in);

myfile.open("out172.txt〃,ios::out);

for(inti=0;i<10;i++)

infilel72»nl»n2;

result=eachPrime(nl,n2);

myfile<<result<<endl;

!

infilel72.close();

myfile.close();

答案:inttemp;

while(n!=0)

(

temp=m;

m=n;

n=temp%n;

}

if(m=1)

return1;

else

return-1;

第12题(10.0分)题号:529

/*----------------------------

【程序设计】

题目:定义函数doublemax(doublea,doubleb,doublec)实现求三个实数中的最大值。

注意:

1.部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在*program*

和*end*所标记的区域内完成题干要求的函数功能。

2.〃忽略阅读与〃忽略阅读结束内的程序可以忽略阅读。

----------------------------------------------------------------------------------*/

#include<iostream>

#include<fstream>

usingnamespacestd;

voidwjt();

/*********Program****桥***/

/*********End*********/

voidmainO

(

cout«max(3.2,7.4,4.5)«endl;

〃忽略阅读

wwjt();

〃忽略阅读结束

)

〃忽略阅读

voidwwjt()

(

doublem,n,1;

fstreaminfile,outfile;

infile,open(〃in.txt",ios::in);

outfile.open("out.txt,z,ios::out);

for(inti=0;i<2;i++)

{

infile»m;

infile»n;

infile»l;

outfile«max(m,n,l)«endl;

}

infile,close();

outfile.close();

)

〃忽略阅读结束

答案:doublemax(doublea,doubleb,doublec)

(

if(a>b&&a>c)returna;

if(b>a&&b>c)returnb;

returnc;

)

第13题(10.0分)题号:697

/*-----------------------------

【程序设计】

题目:邮政汇款的收费标准是汇款金额的1%,但单笔收费上限是50元。

编写一个函数doubleshouFei(doublemoney),根据输入的

汇款金额money,返回所要收取的费用。

注意:仅在标有〃Program〃和〃End〃的注释行之间补充填写代码。

请勿改动主函数main和其它任何已有内容。

------------------------------------------------*/

#include<iostream.h>

#include<fstream.h>

voidwriteinfile();

/**********Program**********/

/**********End**********/

voidmain()

(

cout<〈〃输入汇款金额:〃;

doublem;

cin>>m;

cout<<“本次汇款收费:〃<<shouFei(m)«endl;

writeinfile();

)

voidwriteinfile()

(

doublem;

ifstreaminFile("in.txt〃,ios::in|ios::nocreate);

if(linFile)

(

cerr<<”无法打开数据文件in.txt。需要核查!"<<endl;

return;

)

fstreammyfile;

myfile.open(〃out.txt〃,ios::out);

if(!myfile.is_open())

cerr<<”无法打开数据文件out.txt。需要核查!“<<endl;

return;

}

for(inti=0;i<3;i++)

(

inFile»m;

if(inFile.fail())break;

myfile<<shouFei(m)<<endl;

}

inFile,close();

myfile.close();

)

答案:doubleshouFei(doublemoney)

(

doublesf=0;

if(money<0)return0;

sf=money*。.01;

if(sf>50.0)

sf=50.0;

returnsf;

)

第14题(10.0分)题号:695

/*---------------------------------

【程序设计】

题目:请输出个、十、百位数字各不相同的所有三位数,

结果写入f2.txt中,一个数一行。

要求:输出时按从小到大的顺序输出。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在注释形式标识Program和

End之间填入所编写的若干语句。

*/

^include<iostream>

#include<fstream>

usingnamespacestd;

intmain()

(

inti,j,k,count=0;

ofstreamoutput;

output,open(〃f2.txt",ios::out);

/**********Program**********/

/**********End**********/

output,close();

cout«z/Presstheenterkeytoexit!«endl;

cin.ignore(cin.rdbuf()->in_avail()+1);

return0;

}

答案:for(i=0;i<10;i++)

for(j=0;j<10;j++)

for(k=1;k<10;k++)

(

if(i!=j&&j!=k&&i!=k)

(

output<<k«j«i;

count++:

if(count==60)

(

count=0;

output«endl;

)

else

output<<〃;

}

第15题(10.0分)题号:647

/*--------------------------

【程序设计】

题目:下面程序中的函数char*delc(char*s,charc);

去掉字符串s中的字符c,并将新得到的字符串返回,完成

该函数。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

---------------------------------------------------*/

#include<fstream>

#include<iostream>

#include<string>

usingnamespacestd;

char*delc(char*s,charc);

intniainO

(

inti;

chars[100],c='a';

fstreaminfile,outfile;

infile,openin.txt",ios::in);

outfile.open(/zout.txt",ios::out);

for(i=0;i〈20;i++)

(

infile»s;

dele(s,c);

outfile«s«endl;

c++;

)

infile,close();

outfile.closeO;

return0;

}

char*delc(char*s,charc)

/**********Prograiii**********/

/**********End**********/

答案:char*p;

while(p=strchr(s,c))

(

strcpy(p,p+1);

)

returns;

第16题(10.0分)题号:595

/*-----------------------------

【程序设计】

题目:己知三个数a,b,c,按由小到大的顺序存入a,b,

c中并输出。

三个数a,b,c的值从已有文件infile596.txt中读

取。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

-----------------------------------------------------*/

#include<fstream>

#include<iostream>

usingnamespacestd;

#include<stdio.h>

voidwriteinfile(inta,intb,intc);

voidmain()

(

inta,b,c,t;

ifstreamifile;

ifile.open(,zinfile596.txt〃,ios::in);

if(!ifile)

cout<<〃文件打开失败〃;

return1;

)

ifile»a»b»c;

ifile.close();

/**********Program**********/

/**********End**********/

writeinfile(a,b,c);

return0;

}

voidwriteinfile(inta,intb,intc)

(

fstreammyfile;

myfile.open(,zf.txt",ios:;out);

myfile<Xa<<",”<Xc〈〈endl;

myfile.close();

}

答案:

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

第17题(10.0分)题号:699

/*--------------------------

【程序设计】

题目:编写函数pfh,功能是返回两个实数的平方和。

注意:仅在标有"Program"和"End"的注释行之间补充填写代码。

请勿改动主函数main和其它任何已有内容。

------------------------------------------------*/

#include<iostream.h>

#include<fstream.h>

/**********Program**********/

/**********End**********/

intgrading();

intmain()

(

cout<〈〃输入实数x,y:〃;

doublex,y;

cin»x>>y;

cout<<“它们的平方和是:"<<pfh(x,y)«endl;

〃忽略阅读

grading();

〃忽略阅读结束

return0;

}

〃以下忽略阅读

intgrading()

(

doublex,y;

ifstreaminFile(〃in.txt〃,ios::in|ios::nocreate);

if(!inFile)

(

cerr<<〃无法打开数据文件in.txt。需要核查!〃<<endl;

return1;

)

fstreammyfile;

myfile.open("out.txt〃,ios::out);

if(!myfile.is_open())

cem«”无法打开数据文件out.txt。需要核查!"<<endl;

return1;

}

for(inti=0;i<4;i++){

inFile»x»y;

myfile«(int)pfh(x,y)«endl;〃在此仅输出整数部分

)

inFile.close();

myfile.close();

return0;

)

答案:doublepfh(doublex,doubley)

(

returnx*x+y*y;

)

第18题(10.0分)题号:586

【程序设计】

题目:编写函数getSumO求整数m的各位数字之和并返回该值。

例如m=252时,各位数字之和为9。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

—―――——---------------------------------———-------——*/

#include<fstream>

#include<iostream>

usingnamespacestd;

#include<stdio.h>

voidwriteinfile();

intgetSum(intm)

/**********program**********/

/**********End**********/

}

voidmain()

(

intm,s=0;

m=252;

s=getSum(m);

cout«s;

writeinfileO;

)

voidwriteinfile()

(

fstreammyfile;

myfile.open(,,f2.txt〃,ios::out);

myfile«getSum(252)«endl;

myfile«getSum(1457)<<endl;

myfile.close0;

)

答案:---------------------

ints=0,n;

while(m!=0)

{n=m%10;s+=n;m=m/10;)

returns;

第19题(10.0分)题号:636

/*--------------------------

【程序设计】

题目:约瑟夫问题

这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15个

非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个

办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,

如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在函数的花括号中填入所编

写的若干语句。

-------------------------------------------------------*/

#include<iostream>

#include<fstream>

usingnamespacestd;

voidoutput(inti);

voidcircle(structnodelink[]);

structnode

(

intnextp;/*指向下一个人的指针(下一个人的数组下标)*/

intno_out;/*是否被扔下海的标记。1:没有被扔下海。0:已被扔下海*/

}link[31];/*30个人,0号元素没有使用*/

intmain()

(

inti;

for(i=l;i<=30;i++)/*初始化结构数组*/

(

1ink[i].nextp=i+1;/*指针指向下一个人(数组元素下标)*/

link[i].no_out=l;/*标志置为1,表示人都在船上*/

}

link[30].nextp=1;/*笫30个人的指针指向第一个人以构成环*/

circle(link);

for(i=l;i<=30;i++)/*输出排列结果*/

(

cout<X(link[i].noout?〃教徒〃:"非教徒");

output(link[i].no_out?l:0);/*0:表示被扔下海的非教徒,1:表示在船I:

的教徒*/

)

cout«endl;

return0;

voidcircle(structnodelink[])

/**********program**********/

/**********Prograiii**********/

voidoutput(inti)

ofstreammyfile;

myfile.open(〃f2.txt〃,ios::app);

myfile<<i;

myfile.close();

答案:

inti,j,k;

j=30;/*j:指向已经处理完毕的数组元素,从link[i]指向的人开始计数*/

for(i=0;i<15;i++)/*i:已扔下海的人数计数器*/

(

for(k=0;;)/*k:决定哪个人被扔下海的计数器*/

if(k<9)

(

j=link[j].nextp;/*修改指针,取下一个人*/

k+=link[j].no_out;/*进行计数。因已扔下海的人计标记为0*/

)

elsebreak;/*计数到15则停止计数*/

link[j].no_out=0;/*将标记置0,表示该人已被扔下海*/

第20题(10.0分)题号:688

/*----------------------------

【程序设计】

题目:函数compare比较两个长度为N的数组是否相等(即

两数组中下标相同的数组元素均相等)。请完成该

函数。

注意:部分源程序给出如下。请勿改动主函数main和其它

函数中的任何内容,仅在注释形式标识Program和

End之间填入所编写的若干语句。

------------------------------------------------*/

#include<fstream>

#include<iostream>

usingnamespacestd;

voidcompare(inta[],intb[],intN)

{

boolequal=true;

ofstreamoutfile;

outfile.open(,zf2.txt",ios::out);

/**********Program**********/

/**********End**********/

if(equal)

outfile<<"Equal!”<<endl;

else

outfile«”Notequal!z/<<endl;

outfile.close();

)

voidinput(inta[],intb[])

(

intindex;

ifstreaminput;

input,open(〃fl.txt",ios::in);

for(index=0;index<200;index++)

input»a[index];

for(index=0;index<200;index++)

input»b[index];

)

intmainO

(

inta[200],b[200]:

input(a,b);

compare(a,b,200);

cout«z/Presstheenterkeytoexit!”«endl;

cin.ignore(cin.rdbuf()->inavail()+1);

return0;

)

答案:for(intindex=0;index<200;index++)

{

if(a[index]!=b[index])

(

equal=false;

break;

}

)

第21题(10.0分)题号:621

/*--------------------------------------------------

【程序设计】

题目:已知某文本文件in.txt中存放有若干整数,请将其按照

从小到大的顺序

温馨提示

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

评论

0/150

提交评论