高级C++编程题库.docx
《高级C++编程题库.docx》由会员分享,可在线阅读,更多相关《高级C++编程题库.docx(26页珍藏版)》请在冰豆网上搜索。
高级C++编程题库
“高级语言程序设计”编程题
1.从键盘输入3个整数,求其中的最大数和最小数,并输出结果。
2.从键盘上输入一个3*3的整数矩阵,求其各行的平均值并输出,输出时保留两位小数。
3.输出x2的值,x取值从0到10。
4.从键盘上输入一个3*4的整数矩阵,要求输出其最大元素的值,以及它的行号和列号。
5.编写一个程序从键盘输入10个数,要求输出其中最小的。
6.编写一个函数根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
s=
7.输出1000年(包括1000年)到1999年之间的所有闰年,要求每三个一行,分行输出。
8.编写程序打印所有的“水仙花数”。
“水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153是一个“水仙花数”,因为153=1×1×1+3×3×3+5×5×5。
9.编写一个程序,输入一个3位数的正整数,然后反向输出对应的数。
如:
123,则输出321。
参考答案:
#include
voidmain(){
inti,s=0,j;
scanf("%d",&i);
if(i>=100&&i<=999){
j=i%10;
s=s+j;
j=(i-j)/10%10;
s=s*10+j;
j=i/100;
s=s*10+j;
printf("theinversenumberis%d",s);
}
else
printf("inputerroe!
");
}
10.从键盘输入10名学生的C语言成绩存入一维数组内,编写程序计算10名学生的最高分、平均分和及格人数。
参考答案:
#include
voidmain(){
inti,score[10],max,min;
floatave;
for(i=0;i<10;i++)
scanf("%d",&score[i]);
max=score[0];
min=score[0];
ave=score[0];
for(i=1;i<10;i++){
if(score[i]>max)
max=score[i];
if(score[i]min=score[i];
ave=ave+score[i];
}
ave=ave/10.0;
printf("max=%d,min=%d,ave=%f",max,min,ave);
}
11.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“anumericalcharacter”,
否则输出“othercharacter”。
参考答案:
#include
voidmain(){
charch;
ch=getchar();
if(ch>='0'&&ch<='9')
printf("anumericalcharacter");
else
printf("othercharacter");
}
12.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号。
参考答案:
#include
voidmain(){
inti,j,a[3][4],max,index_i,index_j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
index_i=0;
index_j=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max){
max=a[i][j];
index_i=i;
index_j=j;
}
printf("max=%d,index_x=%d,index_y=%d",max,index_i,index_j);
}
13.打印所有的“水仙花数”,所谓“水仙花数”是指一个三位正整数,其各位数字的立方和等于该数本身。
参考答案:
#include
voidmain()
{
inti,j,k,n;
printf("resultis:
");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
printf("\n");
}
14.利用函数将给定的3×3二维数组转置。
参考答案:
#include"stdio.h"
voidconvert(intarray[3][3])
{
inti,j,k;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{
k=array[i][j];
array[i][j]=array[j][i];
array[j][i]=k;
}
}
voidmain()
{
inti,j;
inta[3][3]={1,2,3,4,5,6,7,8,9};
printf("转换前:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("\t%d",a[i][j]);
printf("\n");
}
convert(a);
printf("\n转换后:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("\t%d",a[i][j]);
printf("\n");
}
}
15.编程输入a、b、c的值后,输出一元二次方程ax2+bx+c=0的解。
参考答案:
#include
#include
voidmain()
{
floata,b,c,d,x1,x2;
printf("inputa,b,c:
");
scanf("%f%f%f",&a,&b,&c);
d=sqrt(b*b-4*a*c);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
printf("x1=%.2fx2=%.2f\n",x1,x2);
}
16.从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果。
参考答案:
#include
voidmain()
{
floata,b;
inttag=0;
charch;
floatresult;
printf("inputtwonumber:
");
scanf("%f%f",&a,&b);
fflush(stdin);
printf("inputarithmeticlable(+-*/):
");
scanf("%c",&ch);
switch(ch)
{
case'+':
result=a+b;break;
case'-':
result=a-b;break;
case'*':
result=a*b;break;
case'/':
if(!
b)
{
printf("divisoriszero!
\n");
tag=1;
}
else
result=a/b;
break;
default:
printf("illegalarithmeticlable\n");
tag=1;
}
if(!
tag)
printf("%.2f%c%.2f=%.2f\n",a,ch,b,result);
}
17.编写输入一个字符串,计算其中空格的个数。
18.采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的成绩。
19.编写程序,逆转字符串。
20.编写程序,统计一个英语文本中的英语单词个数。
21.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
参考答案:
#include“stdio.h”
voidmain()
{
inti,j,k,n;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
{
n=i*100+j*10+k;
printf("n=%d\n",n);
}
}
22.有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
参考答案:
#include"stdio.h"
main()
{
intn,t,number=20;
floata=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;
}
printf("sumis%9.6f\n",s);
}
23.找出101~200中所有的素数。
参考答案:
#include
#include
intisprimer(intn)
{
inti,m;
m=(int)(sqrt(n));
for(i=2;i<=m;i++)
{
if(n%i==0)
return0;
}
return1;
}
voidmain()
{
inti;
for(i=101;i<=200;i++)
if(isprimer(i))
printf("%d\n",i);
}
24.使用循环结构编写程序,打印出如下图案
*
***
*****
参考答案:
#include“stdio.h”
voidmain()
{
inti,j,k;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
25.用冒泡排序法将10个整数由大到小排序。
参考答案:
#include
voidmain()
{inta[10],i,j,t;
printf("input%dnumbers:
\n",10);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
}
26.输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右到左读一样,如12321)。
参考答案:
#include
voidmain()
{intn,m=0,s,r;
printf("Inputdatais:
");
scanf("%d",&n);
s=n;
while(s!
=0)
{r=s%10;
m=10*m+r;
s=s/10;
}
if(m==n)
printf("yes\n");
else
printf("no\n");
}
27.求出10至1000之内能同时被2、3、7整除的数,并输出。
28.输入一字符串,检查是否回文(回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。
29.设计一个函数,用来判断一个整数是否为素数。
参考答案:
#include
#include
intIsPrimer(intn)
{inti;
if(n<=1)
return0;
for(i=2;i<=(int)sqrt(n);i++)
{if(n%i==0)
return0;}
return1;
}
voidmain()
{inti;
scanf("%d",&i);
if(IsPrimer(i))
printf("这是素数\n");
else
printf("这不是素数\n");
}
printf("thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
}
30.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
参考答案:
#include
voidmain()
{
floatx[1000],sum=0,ave,a;
intn=0,i;
printf("Entermark:
\n");
scanf("%f",&a);
while(a>=0&&a<=100&&n<1000)
{
sum+=a;
x[n]=a;
n++;
scanf("%f",&a);
}
ave=sum/n;
printf("Output:
\n");
printf("ave=%f\n",ave);
for(i=0;iif(x[i]printf("%f\n",x[i]);
}
31.设计一个函数,用来判断一个整数是否为素数。
参考答案:
#include
#include
intIsPrimer(intn)
{inti;
if(n<=1)
return0;
for(i=2;i<=(int)sqrt(n);i++)
{if(n%i==0)
return0;}
return1;
}
voidmain()
{inti;
scanf("%d",&i);
if(IsPrimer(i))
printf("这是素数\n");
else
printf("这不是素数\n");
}
printf("thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
}
32.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
参考答案:
#include
voidmain()
{
floatx[1000],sum=0,ave,a;
intn=0,i;
printf("Entermark:
\n");
scanf("%f",&a);
while(a>=0&&a<=100&&n<1000)
{
sum+=a;
x[n]=a;
n++;
scanf("%f",&a);
}
ave=sum/n;
printf("Output:
\n");
printf("ave=%f\n",ave);
for(i=0;iif(x[i]printf("%f\n",x[i]);
}
33.输入三个整型数,找出其中数值最大者并输出。
34.编写程序在屏幕上显示如下图形:
12345
51234
45123
34512
23451
35.编写猜数游戏,程序给定某个整数,从键盘上反复输入数据进行猜测。
如果未猜中,程序提示输入过大或者过小;如果猜中,则输出猜的次数,最多允许猜10次。
参考答案:
#include
voidmain()
{
intx=58,t=0,a,flag=0;
do{
printf("请输入您猜的数:
");
scanf("%d",&a);
t++;
if(a==x)
{
flag=1;
printf("您猜对了!
总共猜了%d次。
\n",t);
break;
}
elseif(a>x)
printf("您猜的数大了\n");
else
printf("您猜的数小了\n");
}while(t<10);
if(flag==0)printf("次数已到。
游戏结束!
");
}
36.将一个数组中的值按逆序重新存放。
例如,原来顺序为a,b,c,d,e,f,g,现在顺序为g,f,e,d,c,b,a.(数组长度不限)
参考答案:
#include
#defineN10
voidmain()
{
inti,M;
chara[N],t;
for(i=0;iscanf(“%c”,&a[i]);
M=N-1;
for(i=0;i{
t=a[i];a[i]=a[M];a[M]=t;
}
for(i=0;iprintf(“%c”,a[i]);
}
37.有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。
参考答案:
#include
#include
voidmain()
{
charstr[3][80],c;
inte[3]={0},x[3]={0},d[3]={0},s[3]={0},o[3]={0};
inti,j;
for(i=0;i<3;i++)
gets(str[i]);
for(i=0;i<3;i++)
for(j=0;str[i][j]!
='\0';j++)
{
c=str[i][j];
if(c>='A'&&c<='Z')e[i]++;
elseif(c>='a'&&c<='z')x[i]++;
elseif(c>='0'&&c<='9')d[i]++;
elseif(c=='')s[i]++;
elseo[i]++;
}
for(i=0;i<3;i++)
printf("第%行:
大写字母有%d个,小写字母有%d个,数字有%d个,空格有%d个,其他字符有%d个。
\n",i,e[i],x[i],d[i],s[i],o[i]);
}
38.求
参考答案:
#include
voidmain()
{
inti,sum1=0,sum2=0;
doublesum3;
for(i=1;i<=100;i++)
sum1+=i;
for(i=1;i<=50;i++)
sum2+=i*i;
for(i=1;i<=10;i++)
sum3+=1.0/i;
printf(“Theresultis%.2f”,sum1+sum2+sum3);
}
39.将十个整数输入数组,求出其平均值并输出。
40.将十个实型数输入数组(floatn[10];)逆序存放后再输出。
41.编写程序:
输出x2的值,x取值从1到10。
(8’)
参考答案:
#include
voidmain(){
intx;
for(x=1;x<10;x++)
printf(“%d\n”,x*x)
}
42.设计程序:
定义可以存储1000个整数的数组;在该数组中依次存入1到1000;在屏幕上打印出数组中所有17的倍数。
(10’)
参考答案:
#include
voidmain(){
inti,a[1000];
for(i=0;i<1000;i++)
a[i]=i+1;
for(i=0;i<1000;i++)
if(i%17==0)printf(“%d\n”,a[i]);
43.设计一个函数,用来判断一个整数是否为素数;并在main()函数中调用该函数,在屏幕上打印出100以内的所有素数。
(12’)
参考答案:
#include
#include
boolIsPrimer(intn)
{
inti,m;
m=int(sqrt(n));
for(i=2;i<=m;i++)
{
if(n%i==0)
returnfalse;
}
returntrue;
}
voidmain()
{
inti;
for(i=0;i<=100;i++)
if(IsPrimer(i))
printf("%d\n",i);
}
44.写出一个函数,求n!
.(n!
=1*2*3*………*n)
参考答案:
#include
unsigneddoublefact(unsigneddoublen)
{
if(n==0)return1;
returnn*fact(n-1);
}
voidmain()
{
printf("%d",fact(10));
}
45.使用一维数组计算学生的平均成绩。
用输入负数结束输入。
参考答案:
#include〞stdio.h〞
voidmain(void)
{
intscore[30],NumMax=30;
inti,num=0,sum=0;
doubleaverage;
printf("inputthe