c++题库简版Word文档格式.docx
- 文档编号:21830780
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:81
- 大小:47.21KB
c++题库简版Word文档格式.docx
《c++题库简版Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++题库简版Word文档格式.docx(81页珍藏版)》请在冰豆网上搜索。
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;
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'
a'
Low++;
i++;
第7题(10.0分)题号:
628
求100以内(不含100)能被3整除且个位数为6的所有整数,
inti,count=0;
for(i=0;
100;
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]!
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<
B。
for(intn=1;
n<
400;
n++)
{intsum_a=0,sum_b=0;
inta=n,b;
for(inti=1;
=a/2;
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;
for(j=0;
j<
j++)
for(k=1;
k<
k++)
{
if(i!
=j&
j!
=k&
i!
=k)
{
output<
i;
count++;
if(count==60)
{
count=0;
output<
endl;
}
else
}
}
第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;
10000;
n++)
a=n/100;
b=n%100;
if((a+b)*(a+b)==n)
'
'
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:
doublem,n;
doubles=0;
while(inf1>
>
m&
inf2>
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位的'
加1后的3次方
的个位数((7+1)的3次方为512,其个位数为2),以此类推。
if(result!
=-1)
for(i=1;
i<
6;
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;
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)三条语句将这组解写入结果
文件f2.txt
for(m=0;
m<
=10;
m++)
f=20-2*m;
c=30-m-f;
if(3*m+2*f+c==50)
f<
c<
endl;
output(m);
output(f);
output(c);
第17题(10.0分)题号:
263
已知n,计算n以内的所有素数之和sum。
提醒:
在写程序时,可自己输入n。
但是最终提交时,请
从给定的文件读入n,即不要修改不允许修改的代码。
for(outerindex=2;
outerindex<
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=2,ca=130。
max=min=a[0];
10;
{if(a[i]>
max)max=a[i];
if(a[i]<
min)min=a[i];
ca=max-min;
第20题(10.0分)题号:
680
某个公司采用公用电话传递数据,
数据是四位的整数,在传递过程中是加密的,
加密规则如下:
每位数字都加上5,
然后用和除以10的余数代替该数字,
再将第一位和第四位交换,
第二位和第三位交换。
写一个函数实现这个算法,
函数原型是intchangeinfo(intinfo)
intchangeinfo(intinfo)
inta[4];
a[0]=info%10;
a[1]=info%100/10;
a[2]=info%1000/100;
a[3]=info/1000;
=3;
{a[i]+=5;
a[i]%=10;
for(i=0;
=3/2;
intt=a[i];
a[i]=a[3-i];
a[3-i]=t;
returna[0]+a[1]*10+a[2]*100+a[3]*1000;
}
第21题(10.0分)题号:
588
定义函数mymult(intm),已知一个正整数m,求m的各位数字之积 f 。
voidmymult(intm)
while(m!
{n=m%10;
f*=n;
m=m/10;
第22题(10.0分)题号:
717
//自建题库第161题题号:
从文件in中读入20个整数,将其中为
奇数的整数输出到显示器和文件out161.txt中,
每个奇数占一行。
if(num%2)
num<
第23题(10.0分)题号:
594
利用冒泡法将200个数按降序排列
200;
for(j=0;
if(arr[j+1]>
arr[j])
k=arr[j+1];
arr[j+1]=arr[j];
arr[j]=k;
第24题(10.0分)题号:
622
已知某文本文件in.txt中存放有若干整数,请将其按照
从小到大的顺序排列后存入另一文件out.dat。
你需要完成三个函数
1.voidread_in(node*&
p_head,char*s_file)
负责从某个文件s_file中读入,并存在以p_head
为头部指针的链表中;
2.voidsort(node*p_head)
将链表内的元素按照从小到大的顺序排序;
3.voidwrite_out(node*p_head,char*s_file)
将链表中的元素依次写入到s_file中
(注意,写入的元素以回车分割)。
其中,链表节点结构node已经定义。
voidread_in(node*&
node*p_tail=p_head;
ifstreaminf(s_);
intm;
while(inf>
m)
node*p_new=newnode;
p_new->
data=m;
next=NULL;
if(!
p_head||!
p_tail)
p_tail=p_head=p_new;
p_tail->
next=p_new;
p_tail=p_new;
inf.close();
voidsort(node*p_head)
for(node*p_i=p_head;
p_i;
p_i=p_i->
next)
node*p_k=p_i;
for(node*p_j=p_i;
p_j;
p_j=p_j->
if(p_j->
data<
p_k->
data)
p_k=p_j;
intx=p_i->
data;
p_i->
data=p_k->
p_k->
data=x;
voidwrite_out(node*p_head,char*s_file)
ofstreamouf(s_);
for(node*p_cur=p_head;
p_cur;
p_cur=p_cur->
ouf<
p_cur->
ouf.close();
第25题(10.0分)题号:
632
打鱼还是晒网
中国有句俗语叫"
三天打鱼两天晒网"
。
某人从1990年1月1日起开始"
,
问这个人在以后的某一天中是"
打鱼"
还是"
晒网"
for(year=1990;
year<
today.year;
year++)
term.year=year;
yearday+=days(term);
yearday+=days(today);
第26题(10.0分)题号:
582
在包含10个数的一维整数数组a中查找给定的数据num。
如果找到则返回1,未找到返回0.
for(inti=0;
if(a[i]==num)
return1;
return0;
第27题(10.0分)题号:
679
写一个函数charmyfun(intscore),
实现百分制成绩与等级之间的转换关系:
90分以上为"
,80-89为"
,依次类推,
60分以下为"
E"
,并将等级返回
charmyfun(intscore)
switch(score/10)
case10:
case9:
return'
case8:
B'
case7:
C'
case6:
D'
default:
E'
第28题(10.0分)题号:
598
从文件中读入6个数到数组中,计算其中正数的平均值aver.
aver=0;
for(j=0;
if(a[j]>
0)
n++;
aver+=a[j];
aver/=n;
第29题(10.0分)题号:
702
编写一个函数voidchangeString(charstr[]);
功能是把其中的大写字母变成小写字母,小写字母变成大写字母,
非字母的字符不作变换。
变换结果依旧保存在str数组内。
大写字母的ASCII码值比对应的小写字母的ASCII码值小32,
如'
的ASCII码值比'
的ASCII码值小32。
voidchangeString(charstr[])
str[i]!
if(str[i]>
str[i]<
str[i]-=32;
elseif(str[i]>
str[i]+=32;
第30题(10.0分)题号:
657
写一个函数,计算x的n次方。
函数原型是doublemyfun(intx,intn)
intx1=1;
while(n>
x1=x1*x;
n--;
returnx1;
第31题(10.0分)题号:
645
下面程序中的函数voidconv(char*s);
将字符串s中
的所有字符逆序存放,例如s中为”abc”时,调用该函数后
s中的字符串变为”cba”,完成该函数。
intlen=strlen(s),j;
for(j=0;
len/2;
charc=s[j];
s[j]=s[len-1-j];
s[len-1-j]=c;
第32题(10.0分)题号:
590
计算1--1,000,000之间所有对称数的个数。
例如1221,2332都是对称数。
inta,b,c,d;
a=i/1000;
b=i%1000/100;
c=i%100/10;
d=i%10;
if(a==d&
c==b)
第33题(10.0分)题号:
670
函数myStrLen(char*a)返回字符串a的长度。
填写
适当的代码,使得myStrLen()完成正确的功能。
while(str[i])
returni;
第34题(10.0分)题号:
644
下面的程序计算一个4*5的浮点数组s中每列的平均值,
并将结果存入到数组ave中,如第0列的平均值存入到ave[0]中。
完成该程序。
5;
floatm=0;
for(i=0;
4;
m+=s[i][j];
m=m/4;
ave[j]=m;
第35题(10.0分)题号:
177
某服装店经营套服,也单件出售。
若买的不少于50套,
每套80元;
若不足50套,则每套90元;
单件上衣
,每件60元;
单条裤子,每条45元。
已知要买的上衣和裤子数,编写函数计算应付款。
函数原型是intPayfor(intyifu,intkuzi);
第一个参数表示衣服的数量,第二个参数表示裤子的数量
intPayfor(intyifu,intkuzi)
inttao=0;
intpay=0;
if(yifu<
=kuzi)
tao=yifu;
kuzi-=yifu;
pay=45*kuzi;
}else
tao=kuzi;
yifu-=kuzi;
pay=60*yifu;
if(tao>
=50)
pay+=tao*80;
else
pay+=tao*90;
returnpay;
第36题(10.0分)题号:
659
一个首项大于0的递增等差数列前四项和为26,前四项积为880,
写一个函数myfun()返回该数列的第20项的值。
提示:
如果一个数列从第二项起,每一项与它的前一项的差等于同一个常数,
这个数列就叫做等差数列,这个常数叫做等差数列的公差。
如等差数列:
1,3,5,7,9,11。
公差是2,该数列的第5项值是9
in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 题库