c++题库简版.docx
- 文档编号:2301998
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:79
- 大小:47.04KB
c++题库简版.docx
《c++题库简版.docx》由会员分享,可在线阅读,更多相关《c++题库简版.docx(79页珍藏版)》请在冰豆网上搜索。
c++题库简版
第1题〔10.0分〕题号:
664
题目:
有结构体类型定义:
structnode
{intdata;
structnode*nextPtr;
};
编写函数voidprintList(structnode*head),对head指向
的单向链表,找出data成员值为正数的所有结点,输出这些结
点在链表中的序号〔第1个结点序号为1〕和data成员值。
答案:
voidprintList(structnode*head)
{
structnode*p;
inti=1;
p=head;
while(p!
=NULL)
{
if(p->data>0)cout<<"\n数据:
"<
"<
i++;
p=p->nextPtr;
}
}
第2题〔10.0分〕题号:
693
题目:
编写一段程序,计算输入流input中第一个$之前的
字符数目,存入count变量。
答案:
while(input.get(ch)&&ch!
='$')
count++;
第3题〔10.0分〕题号:
592
题目:
用“辗转相除方法〞计算两个数x,y的最大公约
数
答案:
n=x%y;
while(n!
=0)
{x=y;y=n;n=x%y;}
第4题〔10.0分〕题号:
708
题目:
从文件中读入n个字符串,将其中以字母A开头的字符串复制
到二维字符数组str1中。
答案:
for(i=0;i { if((strcmp(str[i],"A")>=0)&&(strcmp(str[i],"B")<0)) {strcpy(str1[j],str[i]); j++; } } 第5题〔10.0分〕题号: 639 题目: 从键盘输入一个正整数n,该正整数可以分解成两个正整数k1 和k2之和〔允许k1和k2相等〕。 请编写一个函数求使两个正 整数的乘积最大的分解方案,并返回乘积max。 答案: inti,max; max=1*(n-1); for(i=2;i if(i*(n-i)>max) { max=i*(n-i); } 第6题〔10.0分〕题号: 686 题目: 写一个函数统计字符串中,大写字母和小写字母 的个数,并分别保存在全局变量Supper和Low中。 答案: inti=0; while(input[i]! ='\0') { if(input[i]<='Z'&&input[i]>='A') Supper++; if(input[i]<='z'&&input[i]>='a') Low++; i++; } 第7题〔10.0分〕题号: 628 题目: 求100以(不含100)能被3整除且个位数为6的所有整数, 答案: inti,count=0; for(i=0;i<100;i++) if(i%3==0&&i%10==6) { a[count++]=i; cout< } 第8题〔10.0分〕题号: 647 题目: 下面程序中的函数voidins(inta[],intlen,intn); 将n插入到一个包含len个从小到大排好序的整数数组a中,插入 后保证数组的有序性。 完成该函数的编写。 例如: a)调用ins(a,0,3)后,数组a中为3 b)调用ins(a,1,2)后,数组a中为2,3 c)调用ins(a,2,6)后,数组a中为2,3,6 答案: inti; for(i=len;i>0;i--) { if(i>0&&a[i-1]>n) a[i]=a[i-1]; else break; } a[i]=n; 第9题〔10.0分〕题号: 704 题目: 编写函数,把一个数字字符组成的字符串转换为相应的整数〔如"1234"转换为1234〕。 答案: inta2i(chards[]) { intv=0; for(inti=0;ds[i]! ='\0';i++) { v=v*10+ds[i]-'0'; } returnv; } 第10题〔10.0分〕题号: 728 题目: 求400之的一对亲密对数。 所谓亲密对数A和B,即A不等于B,且A的所有因子(如,6的因子是1、2、3〕 之和等于B,B的所有因子之和等于A。 求出的亲密对数存放在A和B中,且A 答案: for(intn=1;n<400;n++) {intsum_a=0,sum_b=0; inta=n,b; for(inti=1;i<=a/2;i++) { if(a%i==0) sum_a+=i; } b=sum_a; if(b<=400) { for(intj=1;j<=b/2;j++) { if(b%j==0) sum_b+=j; } if(sum_b==a&&a! =b) { A=a; B=b; break; } } } 第11题〔10.0分〕题号: 696 题目: 请输出个、十、百位数字各不一样的所有三位数, 结果写入f2.txt中,一个数一行。 要求: 输出时按从小到大的顺序输出。 答案: 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< count++; if(count==60) { count=0; output< } else output<<""; } } 第12题〔10.0分〕题号: 635 题目: 3025这个数具有一种独特的性质: 将它平分为二段,即30和25, 使之相加后求平方,即(30+25)*(30+25),恰好等于3025本身。 请求出具有abcd=(ab+cd)*(ab+cd)这样性质的全部四位数并使用变 量num记录满足条件的数的总个数。 要求: 调用output()函数将求出的数写入文件f2.txt中,例如output(3025)。 答案: intn,a,b; for(n=1000;n<10000;n++) { a=n/100; b=n%100; if((a+b)*(a+b)==n) { cout< output(n); num++; } } 第13题〔10.0分〕题号: 621 题目: 假设文件"f1.txt"和"f2.txt"以文本方式分别 存放着两个长度一样的实数向量,但是具体长度未知。 请编写函数 doubleprod(char*s1,char*s2) 求二向量的积。 其中,s1和s2分别是存放两个向量的文件名。 (向量的积公式如图) 答案: ifstreaminf1(s1,ios: : in); ifstreaminf2(s2,ios: : in); doublem,n; doubles=0; while(inf1>>m&&inf2>>n) s+=m*n; inf1.close(); inf2.close(); returns; 第14题〔10.0分〕题号: 623 题目: 试编写一个判断6位密码是否正确的函数codec, 假如密码正确返回1,密码不正确返回0,出现错误返回-1。 密码规如此是: 第i位数字是第i-1位数字加1后的3次方的个位数〔2<=i<=6〕。 比如: 密码272727中第2位的'7'是第1位的'2'加1后的3次方的个位数 〔(2+1)的3次方为27,其个位数为7〕,第3位的'2'是第2位的'7'加1后的3次方 的个位数〔(7+1)的3次方为512,其个位数为2〕,以此类推。 答案: if(result! =-1) for(i=1;i<6;i++) if(a[i]! =((a[i-1]+1)*(a[i-1]+1)*(a[i-1]+1))%10)result=0; 第15题〔10.0分〕题号: 616 题目: 请编写函数 intnum_of_facs(intn); 计算一个正整数n的因子个数〔包括1和自身〕。 答案: intm=0; for(inti=1;i if(! (n%i)) m++; m++; returnm; 第16题〔10.0分〕题号: 634 题目: 马克思手稿中的数学题 马克思手稿中有一道趣味数学问题: 有30个人,其中可能有男 人、女人和小孩,准备在一家饭馆花50先令吃饭;规定每个男 人可花3先令,每个女人可花2先令,每个小孩可花1先令; 问: 男人、女人和小孩可各有几人? 要求将求出的每一组解以与解的总个数都通过调用output()函 数写入文件f2.txt中。 例如0、20、10是一组解,如此应使用 output(0);output(20);output(10)三条语句将这组解写入结果 答案: for(m=0;m<=10;m++) { f=20-2*m; c=30-m-f; if(3*m+2*f+c==50) { cout< output(m); output(f); output(c); num++; } } 第17题〔10.0分〕题号: 263 题目: n,计算n以的所有素数之和sum。 提醒: 在写程序时,可自己输入n。 但是最终提交时,请 从给定的文件读入n,即不要修改不允许修改的代码。 答案: for(outerindex=2;outerindex { prime=true; temp=(int)sqrt((float)outerindex); for(innerindex=2;innerindex<=temp;innerindex++) if(outerindex%innerindex==0) { prime=false; break; } if(prime) { sum+=outerindex; } } 第18题〔10.0分〕题号: 722 题目: 编写函数countWeek,根据给定的星期数〔其中星 期日用0表示、星期一用1表示、......,以此类推 〕,请计算n天后是星期几,并将结果返回。 答案: return(week+n)%7; 第19题〔10.0分〕题号: 266 题目: 100个数求最大值与最小值以与它们的差。 例如 8,43,7,18,2,56,37,123,25,26如此 max=132,min=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 题库