c++编程题.docx
《c++编程题.docx》由会员分享,可在线阅读,更多相关《c++编程题.docx(15页珍藏版)》请在冰豆网上搜索。
c++编程题
编程题1:
sizeof测试字节数
编写程序,测试以下类型在内存中所占空间大小:
char、int、short、long、unsignedint、float、double,输出时给出较清晰的提示信息。
本题无输入,输出结果如下:
sizeof(char)=1
sizeof(int)=4
sizeof(short)=2
sizeof(long)=4
sizeof(unsignedint)=4
sizeof(float)=4
sizeof(double)=8
1#include
2intmain()
3{
4printf("sizeof(char)=%d\n",sizeof(char));
5printf("sizeof(int)=%d\n",sizeof(int));
6printf("sizeof(short)=%d\n",sizeof(short));
7printf("sizeof(long)=%d\n",sizeof(long));
8printf("sizeof(unsignedint)=%d\n",sizeof(unsignedint));
9printf("sizeof(float)=%d\n",sizeof(float));
10printf("sizeof(double)=%d\n",sizeof(double));
11return0;
12}
编程题2:
输入/输出练习
编写程序,定义一个int型变量a,一个float型变量b,一个double型变量c,a变量用20初始化,b变量赋值为12.345,c变量的值通过cin从键盘输入,按测试用例形式输出三个变量的值。
13#include
14intmain()
15{
16inta=20;
17floatb;
18doublec;
19b=12.345;
20scanf("%lf",&c);
21printf("a=%d\n",a);
22printf("b=%g\n",b);
23printf("c=%g\n",c);
24return0;
25}
编程题3:
求圆的面积与周长
用C++语言的编程风格编程实现一个输入半径,输出其面积和周长的程序
提示:
(1)定义符号常量:
constdoublePI=3.14159;
(2)程序中的输出语句为:
cout<<"s="<
(3)半径从键盘输入,程序中无输入提示语句
26#include
27usingnamespacestd;
28constdoublePI=3.14159;
29intmain()
30{
31doubles,c,r;
32cin>>r;
33s=PI*r*r;
34c=2*PI*r;
35cout<<"s="<
36return0;
37}
编程题4:
用if语句求解分段函数
分段函数求解:
定义double型的两个变量x和y,输入x,计算并输出y的值:
y=x+100(当x<20)
y=x(当20≤x≤100)
y=x-100(当x>100)
提示:
程序中的输出请复制语句:
cout<<"x="<38#include
39usingnamespacestd;
40intmain()
41{
42doublex,y;
43cin>>x;
44if(x<20)y=x+100;
45elseif(x>100)y=x-100;
46elsey=x;
47cout<<"x="<48return0;
49}
编程题5:
打印每月有几天
读入一个年份和月份,在年号和月号均正确时打印出该月有多少天(考虑闰年),用switch语句实现根据年号月号求当月天数。
若年号为负数,则输出提示信息:
erroryear直接结束程序,若月号不在1~12之间,则输出提示信息:
errormonth直接结束程序.
提示:
(1)在程序任何位置结束程序调用函数exit(0);
(2)输出请复制语句:
cout<50#include
51usingnamespacestd;
52intmain()
53{
54intyear,month,day,leapyear;
55cin>>year>>month;
56if(year<0)
57{cout<<"erroryear"<58exit(0);}
59if(month<1||month>12)
60{cout<<"errormonth"<61exit(0);}
62leapyear=((year%4==0&&year%100!
=0)||(year%400==0));
63switch(month)
64{case1:
65case3:
66case5:
67case7:
68case8:
69case10:
70case12:
day=31;break;
71case2:
{if(leapyear)
72day=29;
73elseday=28;}break;
74case4:
75case6:
76case9:
77case11:
day=30;break;}
78cout<79return0;
80}
编程题6:
输出所有的3位数字的质数
以每行5个的形式输出所有的3位数字的质数。
说明:
(1)每个质数占6列,因此请用输出语句:
cout<为格式控制请在程序开头用#include包含std名空间中的头文件iomanip
(2)最后一个质数后面要输出一个换行符,即使该行不足5个数。
(3)如果需要用到平方根函数,请在程序开头用:
#include包含std名空间中的头文件cmath,对整型m调用的正确方式:
sqrt(double(m)),函数结果为double值,程序中根据需要进行必要的类型强制转换
81#include
82#include
83#include
84usingnamespacestd;
85intmain()
86{
87intnum=100;
88inti,j;
89j=0;
90boolflag;
91while(num<=999)
92{
93flag=true;
94for(i=2;i95{
96if(num%i==0){
97flag=false;
98break;
99}
100}
101if(flag)
102{
103cout<104j=j+1;
105if(j>4)
106{cout<107j=0;}
108}
109num++;
110}
111cout<112return0;
}
**编程题7:
根据条件求和
(较难)题目:
从键盘上读入任意一个0.0至5.0之间的double型变量x,计算x-x^2/2!
+x^3/3!
-……,直到最后一项的绝对值小于1e-5
提示:
(1)请复制下面语句输出最后的和值:
cout<<"sum="<(2)此题项数不确定,与初始读入的x有关
113#include
114usingnamespacestd;
115intmain()
116{
117inta,b,n=1;
118doublex,t=1,sum=0;
119cin>>x;
120for(a=1;t>=1e-5||t<=-1e-5;a++)
121{t=1;
122for(b=1;b<=a;b++)
123t=t*(x/b);
124sum=sum+n*t;
125n=-n;
126}
127cout<<"sum="<128return0;
129}
编程题8:
用数组实现Fibonacci数列
编程首先计算Fibonacci数列1,1,2,3,5,8,13,21,......的前n项(1<=n<=40)存入一维整型数组f中,然后每6个元素一行输出所有的元素。
Fibonacci数列的规律是:
第一项和第二项值为1,从第三项开始当前项的值为相邻前两项之和。
提示:
(1)直接用cin>>n;输入数列项n,前面不需要有任何输入提示;
(2)输出当前项的语句请复制:
cout<包含std名字空间中的文件iomanip
(3)最后一行一定是换行的,无论元素个数是否是6的倍数,但一定要注意,不能重复换行,例如,n为18的时候,不能多输出一个空行
130#include
131#include
132usingnamespacestd;
133
134intmain(){
135intn,i;
136int*f;
137
138cin>>n;
139if(n<=0)return0;
140if(n<=2){
141for(i=0;i142cout<143}
144cout<145return0;
146}
147f=newint[n];
148f[0]=f[1]=1;
149for(i=2;i150f[i]=f[i-1]+f[i-2];
151}
152for(i=0;i153cout<154if((i+1)%6==0)cout<155}
156if(i%6!
=0)cout<157
158delete[]f;
159return0;
160}
*编程题9:
求数组元素的平均值
定义一个含20个元素的一维整型数组,从键盘上输入20个元素,求去掉最大值和最小值以后那些元素的平均值。
提示:
(1)数组中最大、最小元素值可能不止一个,都应该去掉,不统计求和求平均
(2)可能数组中只有两个不同元素值,则无法求解,此时用语句cout<<"noaverage.\n";给出提示信息。
请复制该语句。
(3)输出计算结果的句子:
cout<<"average="<<你自己的表达式<161#include
162usingnamespacestd;
163#defineN20
164intmain()
165{
166intnum[N],i=0,j=0;
167inttemp,max,min,sum=0,count=0;
168
169for(i=0;i170{
171cin>>num[i];
172}
173
174for(i=1;i175{
176for(j=0;j177{
178if(num[j]>num[j+1])
179{
180temp=num[j];
181num[j]=num[j+1];
182num[j+1]=temp;
183}
184}
185}
186
187min=num[0];
188max=num[N-1];
189
190for(i=0;i191{
192if(num[i]!
=min&&num[i]!
=max)
193{
194sum+=num[i];
195count++;
196}
197}
198
199if(count>0)
200{
201cout<<"average="<202}
203else
204{
205cout<<"noaverage.\n";
206}
207
208system("pause");
209return0;
}
*编程题10:
打印杨辉三角形
编程打印如下形式的杨辉三角形,每个整数占5列宽度,行数由键盘读入,少于10行。
1
11
121
1331
14641
15101051
提示:
(1)定义一个10*10的二维整型数组,用来存储对应行列上的需要打印的数值
(2)注意元素之间的大小关系,满足:
y[i][j]=y[i-1][j-1]+y[i-1][j],即下一行某列的值等于上一行本列及前一列二者之和。
(3)输出元素用语句cout<210#include
211#include
212usingnamespacestd;
213intmain()
214{
215inty[10][10];
216inti,j,n;
217cin>>n;
218for(i=0;i219{
220y[i][0]=1;
221for(j=1;j<=i;j++)
222y[i][j]=1;
223}
224for(i=2;i225for(j=1;j
226y[i][j]=y[i-1][j-1]+y[i-1][j];}
227}
228for(i=0;i229for(j=0;j<=i;j++){
230cout<231cout<232}
233system("pause");
234return0;
}
编程题13:
判断矩阵是否对称
成绩:
100/折扣:
0.9
定义一个4*4的二维整型数组arr,主函数中由键盘读入所有元素,判断该矩阵是否对称。
(所谓对称,就是满足:
arr[i][j]==arr[j][i])对称输出“Yes”,否则输出“No”。
提示:
输出语句请复制:
cout<<"Yes\n";和cout<<"No\n";
*编程题14:
动态空间管理
用new运算符为一个包含20个整数的数组分配内存,输入若干个值到数组中,分别统计其中正数和负数的个数,输出结果,再用delete运算符释放动态内存空间。
提示:
(1)变量定义:
intnum,positive=0,negative=0;//这三个变量分别表示读入到数组的元素个数,正数的个数,负数的个数
程序中所用到的所有变量因编译器的原因,应当集中在语句块起始位置定义,类似for(inti=0;i<10;i++)这种用法在服务器端编译可能会出错
需要定义指针变量申请和释放动态空间
(2)在输入数据之前无需屏幕提示信息
(3)程序中的输出语句为:
如果num的值超过20或不足1,则用语句cout<<"numbererror.\n";输出提示信息,不再输入数组元素。
正常情况下,无需输出所有的元素,用以下3条语句输出结果:
cout<<"Thereare"<cout<cout<235#include
236usingnamespacestd;
237int*p=newint[20];
238intmain()
239{
240intnum,positive=0,negative=0;
241cin>>num;
242if(num<1||num>20){
243cout<<"numbererror.\n";
244}
245else{
246inti;
247for(i=0;i248cin>>p[i];
249}
250for(i=0;i251if(p[i]>0)positive++;
252elseif(p[i]<0)negative++;
253}
254cout<<"Thereare"<255cout<256cout<257}
258delete[]p;
259return0;
}