文档库 最新最全的文档下载
当前位置:文档库 › C++编程题集

C++编程题集

C++编程题集
C++编程题集

Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。根据里氏强度地震的后果如下:

里氏强度后果

小于4 很小

4.0到

5.0 窗户晃动

5.0到

6.0 墙倒塌;不结实的建筑物被破坏

6.0到

7.0 烟囱倒塌;普通建筑物被破坏

7.0到8.0 地下管线破裂;结实的建筑物也被破坏

超过8.0 地面波浪状起伏;大多数建筑物损毁

**输入格式要求:实数,提示信息:cout << "请输入地震的里氏强度: " << endl; **输出格式要求:

"本次地震后果:很小!"

"本次地震后果:窗户晃动!"

"本次地震后果:墙倒塌;不结实的建筑物被破坏!"

"本次地震后果:烟囱倒塌;普通建筑物被破坏!"

"本次地震后果:地下管线破裂;结实的建筑物也被破坏!"

"本次地震后果:地面波浪状起伏;大多数建筑物损毁!"

#include

using namespace std;

int main()

{

int i;

cout<<"请输入地震的里氏强度: "<

cin>>i;

if(i>=8)

cout<< "本次地震后果:地面波浪状起伏;大多数建筑物损毁!"<

else if(i>=7&&i<8)

cout << "本次地震后果:地下管线破裂;结实的建筑物也被破坏!"<

else if(i>=6&&i<7)

cout << "本次地震后果:烟囱倒塌;普通建筑物被破坏!"<

else if(i>=5&&i<6)

cout<< "本次地震后果:墙倒塌;不结实的建筑物被破坏!"<

else if(i>=4&&i<5)

cout<<"本次地震后果:窗户晃动!"<< endl;

else if(i < 4)

cout << "本次地震后果:很小!"<< endl;

}

Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,2代表星期一,3代表星期二等。根据用户输入的数字显示相应的星期几。如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。

**输入格式要求:整数,提示信息:cout << "Please input a single numeral(1-7): ";

**输出格式要求:"Monday" (星期几的英文单词首字母大写加换行)

提示信息:"Invalid - please input a single numeral(1-7)."(加换行)

#include

using namespace std;

int main()

{

int n;

cout << "Please input a single numeral(1-7): ";

cin >> n;

if(n >= 1 && n <= 7)

{

switch(n)

{

case1:

cout << "Sunday"<< endl;

break;

case2:

cout << "Monday"<< endl;

break;

case3:

cout << "Tuesday"<< endl;

break;

case4:

cout << "Wensday"<< endl;

break;

case5:

cout << "Thursday"<< endl;

break;

case6:

cout << "Friday"<< endl;

break;

case7:

cout << "Saturday"<< endl;

break;

}

}

else

cout << "Invalid - please input a single numeral(1-7)." << endl;

return0;

}

Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱……。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。

**输入提示信息和数据格式:无

**输出提示信息和数据格式:cout << "百万富翁给陌生人:" << toStranger << "元" << endl;

cout << "陌生人给百万富翁:" << toRichman << "元" << endl;

#include

using namespace std;

int main()

{

double toStranger =0.01,toRichman=0;

for(int i=1;i<=30;i++)

{

toStranger*=2;

toRichman+=100000;

}

cout << "百万富翁给陌生人:"<< toStranger << "元"<< endl;

cout << "陌生人给百万富翁:"<< toRichman << "元"<< endl;

}

Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。统计并输出实际累加的项数。

要求输出结果为: sum=1071225

count =45

#include

using namespace std;

int main()

{

int i=1,count=0,s,sum=0;

do

{

s=i*i*i;

sum+=s;

count++;

i++;

}while(sum<1000000);

cout<<"sum="<

cout<<"count ="<

return0;

}

Q9.(10分)求多项式 1!+2!+3!+……+15!的值。

输出格式要求:cout<<"s="<

#include

using namespace std;

int main()

{

int i,sum=1;

int n=15,s=0;

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

{

sum=sum*i;

s+=sum;

}

cout<<"s="<

return0;

}

Q10.(10分)求1至200之间的所有质数,将质数和存入变量 sum 中并输出。质数(素数)的说明:“质数是只能被1和其本身整除的数”。

输入提示要求:无

输出结果格式要求:质数之间以一个空格隔开

输出所有质数后换行输出:sum=4227

#include

#include

using namespace std;

int Prime(int m)

{

int i,k;

k=(int)sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0) return0;

return1;

}

int main()

{

int a;

int sum=0;

for(a=2;a<=200;a++)

{

if(Prime(a))

{

sum+=a;

cout<

}

}

cout<

cout<<"sum="<

return0;

}

Q11.(10分)在一个已知的一维数组中分类统计正数和负数的个数。正数的个数存入变量C1中,负数个数存入变量C2中.

输出格式要求:cout << "c1=" << c1 << endl;

cout << "c2=" << c2 << endl;

#include

using namespace std;

int main()

{

int a[10] = {1, -2, 0, 4, -5, 0, 7, 8, -9, 10};

int c1 = 0, c2 = 0;

int i;

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

if(a[i] > 0)

c1++;

else if(a[i] < 0)

c2++;

cout << "c1="<< c1 << endl;

cout << "c2="<< c2 << endl;

return0;

}

Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。输出格式要求:cout << "最大元素:" << max << endl;

cout << "最小元素:" << min << endl;

#include

using namespace std;

int main()

{

int a[10] = {32, 43, 65, 23, 432, 543, 543, 54, 542, 87};

int i;

int max, min;

max = a[0], min = a[0];

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

{

if (a[i] > max) max = a[i];

if (a[i] < min) min = a[i];

}

cout << "最大元素:" << max << endl;

cout << "最小元素:" << min << endl;

return 0;

}

Q13.(10分)用while循环编程,求自然数1至100之间各奇数平方和sum。输出结果格式为:sum=166650

#include

using namespace std;

int main()

{

int i=1,sum=0;

while(i<=100)

{

if(i%2!=0)

{

sum=sum+i*i;

}

i++;

}

cout<<"sum="<

}

Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是)

输出结果:0

#include

using namespace std;

int main()

{

int a=23437;

int c,flag;

double b;

b=sqrt(a);

for(c=2;c<=a;c++)

{

if(a%c==0)

break;

}

if(c>b)

flag=1;

else

flag=0;

if(flag==1)

cout<

else if(flag==0)

cout<

return0;

}

Q15.(10分)已知一个数m(=252),用循环求各位数字之和。

输出结果格式:s=9

#include

using namespace std;

int main()

{

int m[3] = {2, 5, 2}, s = 0;

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

{

s += m[i];

}

cout<<"s="<< s << endl;

return0;

}

Q16.(10分)已知一个数m(=252),用循环求各位数字之积。输出结果格式:f=20

#include

using namespace std;

int main()

{

int m[3]={2,5,2},f=1;

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

{

f*=m[i];

}

cout<<"f="<

return0;

}

Q17.(10分)已知10个四位数输出所有对称数及个数n。例如1221,2332都是对称数。设:int m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};

输出结果:1221

2332

#include

using namespace std;

int main()

{

int m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};

int a, b, c, d;

for (int i = 0; i <= 9; i++)

{

a = m[i] / 1000;

b = m[i] % 1000 / 100;

c = m[i] % 1000 % 100 / 10;

d = m[i] % 10;

if (a == d && b == c)

cout << m[i] << endl;

}

return 0;

}

Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。

输出结果格式:n=225

#include

using namespace std;

int main()

{

int n=0;

for(int i=1;i<=100;i++)

{

if(i%2!=0&&n<=200)

n+=i;

}

cout<<"n="<

return0;

}

Q19.(10分)从键盘上输入三个整数,编写程序求出三个数中的最大值。输入格式要求:cout<<"请输入三个整数:";

输出格式要求:cout<<"最大值是:"<

#include

using namespace std;

int main()

{

int a, b, c, t, max;

cout << "请输入三个整数:";

cin >> a >> b >> c;

if(a < b)

{

t = b;

b = a;

a = t;

}

if(a < c)

{

t = c;

c = a;

a = t;

}

max = a;

cout << "最大值是:"<< max << endl;

return0;

}

Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。

输入格式要求: cout << "请输入年份和月份:";

输出格式要求:cout << year << "年" << month << "月" << "是" << day << "天。" << endl;

#include

using namespace std;

int isLeap(int year)

{

if( year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))

{

return1;

}

else

{

return0;

}

}

int main()

{

int year;

int month;

int a[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

cout << "请输入年份和月份:";

cin >> year >> month;

if(isLeap(year))

{

a[1] = a[1] + 1;

}

cout << year << "年"<< month << "月"<< "是"<< a[month - 1] << "天。"<< endl;

return0;

}

Q21.(10分)

编写程序,求解下面的分段函数:

输入格式要求:cout << "请输入x:";

输出格式要求:cout << "y="<< y << endl;

#include

using namespace std;

int main()

{

double x, y;

cout << "请输入x:";

cin >> x;

if(x > -10 && x < 0) y = x - 8;

if(x == 0) y = x;

if(x > 0 && x < 10) y = x * x;

cout << "y="<< y << endl;

return0;

}

Q22.(10分)用“辗转相除方法”计算两个数 x,y 的最大公约数。输入格式要求:无,直接输入

输出格式要求:无,直接输出结果

#include

using namespace std;

int main()

{

int x,y,r;

cin>>x>>y;

while(y!=0)

{

r=x%y;

x=y;

y=r;

}

cout<

return0;

}

Q23.(10分)利用选择法将下面10个数按降序排列。

有如下定义:int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7};

输入格式要求:无

输出格式要求:以逗号分隔降序数列

#include

#include

using namespace std;

int main()

{

int

a[10]={5,6,4,2,3,7,8,5,6,7},i,j,k,t;

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

{

k=i;

for(j=i+1;j<=9;j++)

if(a[k]

if(k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

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

{

cout<

}

cout<

return0;

}

Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志。

输入格式要求:无

输出格式要求:cout << "高于平均分的人数:" << k << endl;

Q25.(10分)已知三个数a,b,c,按由小到大的顺序存入a,b,c中并输出. 输入格式要求:cout << "输入三个整数:";

输出格式要求:如果输入三个数5 6 4,则输出为:

由小到大的顺序是:4,5,6

#include

using namespace std;

main()

{

int a, b, c, t;

cout << "输入三个整数:";

cin >> a >> b >> c;

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;

}

cout << "由小到大的顺序是:"<< a << ","<< b << ","<< c;

return0;

}

Q26.(10分)编程计算 sum=1!+2!+...+9!。

输入格式要求: 无

输出格式要求: cout <<"sum= " << sum << endl;

#include

using namespace std;

int main()

{

int i, b = 1, sum = 0;

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

{

b = b * i;

sum = sum + b;

}

cout << "sum= "<< sum << endl;

}

Q27.(10分)编写函数,删除字符串中的指定字符,函数原型为:

void deletechar(char *string, char ch);

设char c[100] = "abcdabcd aabbccdd";

输出结果:bcdbcd bbccdd

#include

#include

using namespace std;

void deletechar(char *string, char ch)

{

int i(0),k(0);

while (string[i++] != '\0')

if (string[i] != ch)

string[k++] = string[i];

string[k] = '\0';

}

int main()

{

char c[100] = "abcdabcd aabbccdd";

deletechar(c, 'a');

cout << c << endl;

return 0;

}

Q28.(10分)编写函数,将一个十进制无符号整数转换为二进制整数,函数原型为:

void transform(char*p,long i,int base=2);

#include

using namespace std;

void transform(char*p, long i, int base = 2)

{

int r(0), k(0);

char t[128];

while (i > 0)

{

r = i % base;

if (r < 10)

t[k] = r + 48;

else

t[k] = r + 55;

i = i / base;

k++;

}

k--;

r = 0;

while (k >= 0)

{

*(p + r) = t[k];

r++;

k--;

}

*(p + r) = '\0';

}

int main()

{

char c[256];

transform(c,45678,2);

cout << c << endl;

return 0;

}

Q29.(10分)输入10个学生的成绩,存放在一个一维数组中,求出总分和平均分。

输入提示信息格式要求: cout << "请输入学生的分数:";

输出结果格式要求:cout << "学生的总分是:" << sum << endl;

cout << "学生的平均分是:" << aver << endl;

#include

using namespace std;

int main()

{

int a[10],i,sum=0,aver;

cout << "请输入学生的分数:";

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

{

cin>>a[i];

sum+=a[i];

}

aver=sum/10;

cout << "学生的总分是:"<< sum << endl;

cout << "学生的平均分是:"<< aver << endl;

return0;

}

Q30.(10分)输入10个学生的成绩,存放在一个一维数组中,找出其中的最高

分和所对应的学生。

输入提示信息格式要求:cout << "请输入学生的分数:";

输出提示信息格式要求:cout << "第" << n + 1 << "名学生的分数最高,是:" << max << endl;

#include

using namespace std;

int main()

{

int a[10],i,max=0,n=0;

cout << "请输入学生的分数:";

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

{

cin>>a[i];

if(a[i]>max)

{

max=a[i];

n=i;

}

}

cout << "第"<< n + 1 << "名学生的分数最高,是:"<< max << endl; return0;

}

Q31.(10分)求一个3×3矩阵的对角线元素之和。

输入提示信息格式要求: cout << "请输入3行3列矩阵的元素:" << endl; 输出提示信息格式要求: cout << "请输出这个3行3列的矩阵:" << endl; cout << "对角线元素之和为:" << sum << endl;

#include

#include

using namespace std;

int main()

{

double a[3][3], sum = 0;

int i, j;

cout << "请输入3行3列矩阵的元素:"<< endl;

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

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

cin >> a[i][j];

cout << "请输出这个3行3列的矩阵:"<< endl;

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

{

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

cout << setw(5) << a[i][j];

cout << endl;

}

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

sum += a[i][i];

cout << "对角线元素之和为:"<< sum << endl;

return0;

}

Q32.(10分)用公式π=4-4/3+4/5-4/7+...)计算π的近似值,直到最后一项绝对值小于1e-5

输入格式要求:无

输出结果格式要求: cout << "pi =" << pi << endl;

#include

using namespace std;

int main()

{

double pi = 0;

double n = 1;

int f = 1;

while(4 / n >= 1e-5)

{

pi = pi + f * 4 /

n;

n = n + 2;

f = -f;

}

cout << "pi ="<< pi <<

endl;

return0;

}

Q33.(10分)求一个4×4矩阵的四周元素之和。

输入提示信息格式要求:cout << "请输入4行4列矩阵的元素:" << endl;

输出提示信息格式要求:cout << "请输出这个4行4列的矩阵:" << endl;

cout << "四周元素之和为:" << sum << endl;

#include

#include

using namespace std;

int main()

{

double a[4][4], sum = 0;

int i, j;

cout << "请输入4行4列矩阵的元素:"<< endl;

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

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

cin >> a[i][j];

cout << "请输出这个4行4列的矩阵:"<< endl;

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

{

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

cout << setw(5) << a[i][j];

cout << endl;

}

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

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

if(i == 0 || i == 3 || j == 0 || j == 3)

sum += a[i][i];

cout << "四周元素之和为:"<< sum << endl;

return0;

}

34.(10分)4个学生学习5门功课,要求输入所有学生的各门功课的成绩,并分别求出每门功课的平均成绩。

输入提示信息格式要求: cout << "输入第" << i + 1 << "个学生成绩:";

输出提示信息格式要求: cout << "第" << i + 1 << "个学生平均成绩:" << setprecision(3) << sum / 5 << endl;

}

#include

#include

using namespace std;

int main()

{

double s[4][5], sum;

int i, j, n;

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

{

cout << "输入第"<< i + 1 << "个学生成绩:";

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

cin >> s[i][j];

}

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

{

sum = 0;

n = 0;

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

sum += s[i][j];

cout << "第"<< i + 1 << "个学生平均成绩:"<< setprecision(3) << sum / 5 << endl;

}

return0;

}

Q35.(10分)请输入10个整数到一个一维数组,并逆序输出。

输入提示信息格式要求:无

输出提示信息格式要求:cout << a[i] << " ";

#include

using namespace std;

int main()

{

int a[10],i;

for(i=0; i < 10;

i++)

cin >> a[i];

for(i= 9; i>= 0; i--)

cout << a[i] <<

" ";

return0;

}

Q36.(10分)在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并在c数组中。

设: int a[10] = {2, 4, 5, 8, 9, 19}, an = 5;

int b[10] = {2, 3, 4, 8, 12, 18}, bn = 5;

输出格式要求:输出结果用2个空格隔开

cout << endl;

#include

using namespace std;

int main()

{

int a[10] = {2, 4, 5, 8, 9, 19}, an = 5;

int b[10] = {2, 3, 4, 8, 12, 18}, bn = 5;

int i, j, k, c[20], max = 999;

a[an + 1] = b[bn + 1] = max;

i = j = k = 0;

while ((a[i] != max) || (b[j] != max))

if (a[i] < b[j])

{

c[k] = a[i];

k++;

i++;

}

else

{

c[k] = b[j];

k++;

j++;

}

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

cout << c[i] << " ";

cout << endl;

return 0;

}

Q37.(10分)请输出如下方阵:

1 2 2 2 2 2 1

3 1 2 2 2 1 4

3 3 1 2 1

4 4

3 3 3 1

4 4 4

3 3 1 5 1

4 4

3 1 5 5 5 1 4

相关文档