C++编程题集

更新时间:2024-06-26 05:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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<<\本次地震后果:窗户晃动!\ else if (i < 4)

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

Q6.(10分)写一个程序从键盘输入1到7中的某个数字,其中1代表星期天,

2代表星期一,3代表星期二等。根据用户输入的数字显示相应的星期几。如果用户输入的数字超出了1到7的范围,显示输出一个错误提示信息。 **输入格式要求:整数, 提示信息:cout << \numeral(1-7): \

**输出格式要求:\(星期几的英文单词首字母大写加换行) 提示信息:\加换行) #include using namespace std; int main() {

int n;

cout << \ cin >> n;

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

switch (n) { case 1:

cout << \ << endl; break; case 2:

cout << \ << endl; break; case 3:

cout << \ << endl; break; case 4:

cout << \ << endl; break; case 5:

cout << \ << endl; break; case 6:

cout << \ << endl; break; case 7:

cout << \ << endl; break; } }

else

cout << \ << endl;

return 0; }

Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱

的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱??。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。 **输入提示信息和数据格式:无

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

cout << \陌生人给百万富翁:\<< toRichman << \元\

#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<<\

cout<<\ return 0;

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

输出格式要求:cout<<\#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<<\ return 0; }

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) return 0;

return 1; }

int main() {

int a;

int sum=0;

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

if(Prime(a)) {

sum+=a;

cout<

cout<

cout<<\ return 0; }

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

量C1中,负数个数存入变量C2中.

输出格式要求:cout << \ cout << \#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 << endl; cout << \ << c2 << endl; return 0; }

Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。

输出格式要求:cout << \最大元素:\ cout << \最小元素:\#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<<\ }

Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数

flag,flag为1代表是素数,为0代表不是) 输出结果:0

#include

#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<

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 << endl; return 0; }

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

输出结果格式:f=20 #include

#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<<\ return 0; }

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<<\ return 0; }

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; return 0; }

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

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

输出格式要求:cout << year << \年\月\是\天。\

#include using namespace std; int isLeap(int year) {

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

return 1; } else {

return 0; } }

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;

return 0; }

Q21.(10分)

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

输入格式要求: cout << \请输入x:\; 输出格式要求: cout << \<< 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 << endl; return 0; }

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<

}

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<

Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的

人数k,用-1做结束标志。 输入格式要求:无

输出格式要求:cout << \高于平均分的人数:\

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; return 0;

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

输入格式要求: 无

输出格式要求: cout <<\#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 << endl; }

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

void deletechar(char *string, char ch); 设char c[100] = \输出结果: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] = \; 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 << \学生的总分是:\ cout << \学生的平均分是:\#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; return 0; }

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

分和所对应的学生。

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

输出提示信息格式要求:cout << \第\名学生的分数最高,是:\#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; return 0; }

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

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

#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; return 0; }

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

项绝对值小于1e-5 输入格式要求:无

输出结果格式要求: cout << \#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 << endl;

return 0; }

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

输入提示信息格式要求:cout << \请输入4行4列矩阵的元素:\输出提示信息格式要求:cout << \请输出这个4行4列的矩阵:\ cout << \四周元素之和为:\#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; return 0; }

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

每门功课的平均成绩。

输入提示信息格式要求: cout << \输入第\个学生成绩:\输出提示信息格式要求: 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; }

return 0; }

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] << \ \

return 0; }

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

1 5 5 5 5 5 1

输出格式要求:数据之间用2个空格隔开。

#include using namespace std; int main() {

int a[7][7], i, j;

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

for (j = 0; j < 7; j++) {

if (i == j || i + j == 6) a[i][j] = 1;

else if (i < j && i + j < 6) a[i][j] = 2;

else if (i > j && i + j < 6) a[i][j] = 3;

else if (i < j && i + j > 6) a[i][j] = 4; else

a[i][j] = 5; }

for (i = 0; i < 7; i++) {

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

cout << a[i][j] << \; cout << endl; }

return 0; }

Q38.(10分)输入20个整数,统计非负数的个数,并计算它们的和,然后将非负数从

小到大进行排序并输出。 输入信息提示要求:无

输出提示信息格式要求:cout<<\非负数有:\个\ cout<<\非负数是:\ cout << setw(5) << a[i];

cout<<\非负数的和是:\

cout<<\将非负数从小到大排序输出:\ cout << setw(5) << a[i]; #include #include using namespace std; int main() {

int a[20], s = 0, n = 0, i, j, t; for (i = 0; i <= 19; i++) cin >> a[i];

for (i = 0; i <= 19; i++) {

if (a[i] > 0) {

a[n] = a[i]; n++; } }

cout << \非负数有:\ << n << \个\ << endl; cout << \非负数是:\ << endl; for (i = 0; i < n; i++)

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

for (i = 0; i < n; i++) s = s + a[i];

cout << \非负数的和是:\ << s << endl; for (i = 0; i <= n - 2; i++)

for (j = i + 1; j <= n - 1; j++) if (a[i] > a[j]) {

t = a[i]; a[i] = a[j]; a[j] = t; }

cout << \将非负数从小到大排序输出:\ << endl; for (i = 0; i < n; i++)

cout << setw(5) << a[i]; cout << endl; return 0; }

Q39.(10分)输入10名学生语文、数学、外语课成绩,计算每名学生三门课

的平均成绩,输出每人各科成绩及平均成绩,并分析三门课程的优秀率,90分以上为优秀。

输入提示信息格式控制:cout<<\输入第\个学生成绩:\输出提示信息格式控制:cout<<\第\个学生的各科成绩:\ cout<<\平均成绩:\ cout<<\第\门课程的优秀率为:\

#include #include

using namespace std; int main() {

int score[10][3], sum; int i, j, n;

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

cout << \输入第\ << i + 1 << \个学生成绩:\; for (j = 0; j < 3; j++) cin >> score[i][j]; }

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

sum = 0;

cout << \第\ << i + 1 << \个学生的各科成绩:\; for (j = 0; j < 3; j++) {

sum += score[i][j];

cout << setw(4) << score[i][j]; }

cout << \平均成绩:\ << sum / 3 << endl; }

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

n = 0;

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

if (score[i][j] >= 90) n++;

cout << \第\ << j + 1 << \门课程的优秀率为:\ << n / 10.0 << endl; }

return 0; }

Q40.(10分)

程序设计,已知平面上有一个圆,圆心坐标为(2,2),半径r为1。请输入一个点M的坐标(x,y),判断点M是在圆内、圆上还是在圆外。

要点分析:点M到圆心之间的距离d=圆的关系。

,比较d和r的大小确定点与

输入格式要求:cout << \请出入点M的坐标(x,y):\

输出格式要求:\点M在圆外。\

\点M在圆上。\

\点M在圆内

#include #include

using namespace std; int main() {

double x, y, d, r = 1;

cout << \请输入点M的坐标(x,y):\; cin >> x >> y;

d = sqrt((x - 2) * (x - 2) + (y - 2) * (y - 2)); if (d > r)

cout << \点M在圆外。\ << endl; if (d == r)

cout << \点M在圆上。\ << endl; if (d < r)

cout << \点M在圆内\ << endl; return 0; }

Q41.(10分)有若干个数放入数组中,计算其中正数的平均值aver.

设:float a[6] = {39, -47, 21, 2, -8, 15}, aver; 输入格式要求:无

输出结果为:aver=19.25 #include #include

using namespace std; int main() {

int n=0;

}

float sum=0;

float a[6]={39,-47,21,2,-8,15},aver; for(int i=0;i<=5;i++) {

if(a[i]>0) {

sum+=a[i]; n++; } }

aver=sum/n;

cout<<\ cout<

Q42.(10分)以下程序的功能是以每行5个数来输出300以内能被7或17整

除的偶数,并求出其和。 输入格式:无

输出格式:每个数据以一个空格隔开,5个一行 和另起一行输出

cout << \#include #include

using namespace std; int main() {

int i, n, sum; sum = 0; n = 0;

for (i = 1; i <= 300; i++) {

if (i % 2 == 0) {

if (i % 7 == 0||i % 17 == 0) {

sum = sum + i; n++;

cout <

cout <<'\\n'; } }

}

}

cout<

cout << \ << sum << endl; return 0;

Q43.(10分)判断输入的测试数据是奇数还是偶数。

输入提示信息格式要求:cout<<\输出提示信息格式要求:cout<<\ cout<<\#include using namespace std; int main( ) {

int n;

cout << \ cin >> n;

if (n % 2 == 0)

cout << \ << endl; else

cout << \ << endl; return 0; }

Q44.(10分)对给定的10个数按逆序排列,必须用循环完成。

设: int n[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 输入格式要求:无

输出结果:10,9,8,7,6,5,4,3,2,1, #include using namespace std; int main() {

int n[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, m[10]; int k, t;

for (k = 9; k >= 0; k--) {

m[9 - k] = n[k];

cout << m[9 - k] << \

}

return 0; }

Q45.(10分)输入4个整数a,b,c,d,将它们从小到大输出。

要点分析:可通过比较和交换将最小数交换存储到变量a,再依次确定b,c,d的值。

输入提示信息格式要求:cout<<\请出入4个整数:\

输出提示信息格式要求:cout<<\从小到大输出4个整数:\ 结果以\隔开

#include using namespace std; int main( )

{

int a, b, c, d, t;

cout << \请出入4个整数:\;

cin >> a >> b >> c >> d; if (a > b) {

t = a; a = b; b = t; }

if (a > c) {

t = a; a = c; c = t; }

if (a > d) {

t = a; a = d; d = t; }

if (b > c) {

t = b; b = c;

c = t;

}

if (b > d) {

t = b; b = d; d = t; }

if (c > d) {

t = c; c = d; d = t; }

cout << \从小到大输出4个整数:\ << endl;

cout << a << '\\t'<

Q46.(10分)以下程序的功能是用公式π/4=1-1/3+1/5-1/7+......求π的

近似值。要求直到最后一项的绝对值小于1e-6为止。 输出提示信息格式控制: cout << \#include using namespace std; int main() {

double pi=0; double n=1; int f=1;

while(4/n>=1e-6) {

pi=pi+f*4/n; n=n+2; f=-f; }

cout<<\ return 0; }

Q47.(10分)求具有10个数的数组中的最大值和次最大值。

设:int a[10] = {39, -47, 21, 2, -8, 15, 98, -3, 87, 56}; 输入格式要求:无

输出提示信息:\最大值:\ \次最大值:\

\ \输出结果:最大值:98 次最大值:87 a[0]=98 a[1]=87

#include using namespace std; int main() {

int a[10] = {39, -47, 21, 2, -8, 15, 98, -3, 87, 56}, i, j, max, cmax, l, m, n, t; max = a[0]; m = 0;

for (i = 1; i < 10; i++) if (a[i] > max) {

max = a[i]; m = i; }

t = a[0]; a[0] = a[m]; a[m] = t; cmax = a[1]; n = 1;

for (j = 2; j < 10; j++) if ( a[j]>cmax) {

cmax = a[j]; n = j; }

l = a[1]; a[1] = a[n]; a[n] = 1;

cout << \最大值:\ << max << endl; cout << \次最大值:\ << cmax << endl; cout << \ << a[0] << endl; cout << \ << a[1] << endl; return 0; }

Q48.(10分)产生并输出杨辉三角的前七行。

输出提示信息格式控制: cout << setw(6) << a[i][j]; #include

#include using namespace std; int main ( ) {

int a[7][7]; int i, j;

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

for (j = 0; j <= i; j++) {

if (j == 0 || i == j) a[i][j] = 1; else

a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; }

for (i = 0; i < 7; i++) {

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

cout << setw(6) << a[i][j]; cout << endl; }

return 0; }

Q49.(10分)利用switch语句结构完成程序功能如下:从键盘输入1-3之间

任意数字时,程序输出数字本身;输入其它数字时程序输出OK!。 输入提示信息格式要求:cout<<\请输入i:\输出提示信息格式要求:cout<<\ cout<<\#include using namespace std; int main() {

int i;

cout<<\请输入i:\ cin>>i;

if(i>=1&&i<=3) {

switch(i) case 3: case 2: case 1:

cout<

cout<<\\

return 0; }

Q50.(10分)已知n,计算n以内的所有素数之和sum 。

输入提示信息:无

输出结果格式要求:\#include using namespace std; int main() {

int n, k, m, l, sum = 0; cin >> n;

for (k = 2; k <= n; k++) {

m = 1;

for (l = 2; l <= k / 2 && m == 1; l++) if (k % l == 0)m = 0; if (m)sum += k; }

cout << \ << sum << endl; return 0; }

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

void transf2to10(char*p,long &i,int base=2); #include using namespace std;

void transform(char*p, long &i, int base) {

while (*p != '\\0') {

i = i * base + (*p - '0'); p++; } }

int main() {

char c[256]; long a(0); int base = 2;

//cout<<\请选择哪种数制向十进制转换:(16、8,2)\ //cin>>base;

cout << \请输入转换前数值:\; cin >> c;

transform(c, a, base);

cout << c << \ << a << endl; return 0; }

Q52(10分)编写函数,统计一行文本中,每个字母的出现个数,要求区分

大小写字母。函数原型为:void count_ch(char *p, int *q);

设:char p[100] = \输出提示信息格式:cout << \字母出现的频率依次为:\<< endl; #include #include

using namespace std;

void count_ch(char *p, int *q) {

while (*p != '\\0') {

if (*p >= 'A' && *p <= 'Z') q[*p - 'A']++;

else if (*p >= 'a' && *p <= 'z') q[*p - 'a' + 26]++; p++; } }

int main() {

char p[100] = \WXYZ\

int q[52] = {0}; count_ch(p, q);

cout << \字母出现的频率依次为:\<< endl; for (int i = 0; i < 52; i++) cout << setw(4) << q[i]; cout << endl; return 0; }

Q53.(10分)编写函数,将指定字符串中的字符顺序颠倒排列。函数原型为:

void strrev( char *string);

提示:求字符串长度可以调用库函数strlen(),程序首部加入: #include

输入提示信息格式要求:cout << \请输入一行文本:\输出提示信息格式要求:\输入文本的倒序为:\#include #include using namespace std;

void str_rev( char *string);

//int commonmultiple(int m,int n); int main() {

char string[256];

cout << \请输入一行文本:\; cin >> string; str_rev(string);

cout << \输入文本的倒序为:\ << string << endl; return 0; }

void str_rev( char *string) {

int r = strlen(string);

}

Q54.(10分)编写函数,将一个字符串中从第n个字符开始的m个字符复制到指定字符

中,函数原型为:void strcpypart(char*p, char*q ,int n=1,int m=1); 输入信息格式要求:char p[100]=\输出信息格式要求:cout< #include using namespace std;

void strcpypart(char*p, char*q , int n = 1, int m = 1) {

int i(0), j(0);

if (n <= 0 || m < 0) {

cout << \输入错误不能执行!\ << endl; exit(1);

}

n = n - 1;

while ((p[i + n] != '\\0') && (i < m)) {

q[i] = p[i + n]; i++; }

q[i] = '\\0'; }

int main() {

char p[100] = \, q[100]; strcpypart(p, q, 4, 10); cout << q << endl; strcpypart(p, q); cout << q << endl; return 0; }

Q55(10分)已知10个数求最大值及最小值以及它们的差.

设:

int a[] = {8, 92, 7, 8, 1, 56, 37, 23, 25, 26}, max, min, ca;

输入格式格式要求:无

输出格式要求:max=92,min=1,ca=91 #include using namespace std; int main() {

int a[] = {8, 92, 7, 8, 1, 56, 37, 23, 25, 26}, max, min, ca, i;

max = min = a[0];

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

if (a[i] > max)max = a[i]; if (a[i] < min)min = a[i]; }

ca = max - min;

cout << \<< max << \<< min << \<< ca << endl; }

Q56.(10分)编写函数,求一个数的三次方,要求实参可以分别为int、float和double

类型。

提示:应用函数重载技术

设若输入数据分别为6.75,6,6.7588

则输出结果立方值分别为: 6.75的立方值为:307.547 6的立方值为:216

6.7588的立方值为:308.751 #include using namespace std; int cub(int x) {

return(x * x * x); }

float cub(float x) {

return(x * x * x); }

double cub(double x) {

return(x * x * x); }

int main() {

cout << 6.75 << \的立方值为:\ << cub(6.75) << endl; cout << 6 << \的立方值为:\ << cub(6) << endl;

cout << 6.75879659 << \的立方值为:\ << cub(6.75879659) << endl; return 0; }

Q57Q57.(10分)文本替换加密:

加密规则:将明文(键盘输入的一行英文文本)中小写字母用其后面第k个字母替换(k小于26),大写字母用其后面第l个字母替换(l小于26),可将字母表看成是首尾相接的,例如:当k=3时,字母c替换为f,字母y替换为b。 解密规则:输入密钥(加密用到的数字k和l),将密文(加密后的一行英文文本)中小写字母用其前面第k个字母替换,大写字母用其前面第l个字母替换(l小于26),可将字母表看成是首尾相接的。解密过程是加密过程的逆过程。 请编写程序实现这一过程。

输入提示信息要求: cout << \请输入一行英文文本:\<< endl; cout << \请输入两个加密密钥:\<< endl;

输出提示信息要求: cout << \加密后文本密文为:\<< endl; cout << \将密文解密后文本

为:\<< endl;

#include #include

using namespace std;

void encode(char *p, int n, int m) {

while (*p != '\\0') {

if (*p >= 'A' && *p <= 'Z') {

*p = *p + n; if (*p > 'Z')

*p = *p - 26; }

else if (*p >= 'a' && *p <= {

*p = *p + m; if (*p > 'z')

*p = *p - 26; } p++; } }

void decode(char *p, int n, int m) {

while (*p != '\\0') {

if (*p >= 'A' && *p <= 'Z') {

*p = *p - n; if (*p < 'A')

*p = *p + 26; }

else if (*p >= 'a' && *p <= {

*p = *p - m; if (*p < 'a')

*p = *p + 26; } p++; } }

int main() {

'z') 'z') }

int n, m;

char string[256];

cout << \请输入一行英文文本:\<< endl; cin >> string;

cout << \请输入两个加密密钥:\<< endl; cin >> n >> m;

encode(string, n, m);

cout << \加密后文本密文为:\<< endl; cout << string << endl; decode(string, n, m);

cout << \将密文解密后文本为:\<< endl; cout << string << endl; return 0;

Q58.(10分)打印水仙花数及个数 n (水仙花数是三位数,每位数字的立方

和等于这个数本身)。 输入格式要求:无

输出结果:153,370,371,407,n=4 #include using namespace std; int main()

{

int a,b,c,d,n=0;

for(a=100;a<=999;a++) {

b=a/100;

c=(a-100*b)/10; d=a-100*b-10*c;

if(b*b*b+c*c*c+d*d*d==a) {

cout<

cout<<\ return 0; }

Q59.(10分)程序设计:avg函数的作用是计算数组a的平均值并返回

输入提示信息格式要求: float a[10];

输出提示信息格式要求: cout << \这组数的平均值为:\

#include

using namespace std;

float avg(float *array, int n) {

float average, sum = 0;

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

sum = sum + array[i];//sum=sum+*(array+i); average = sum / n ; return average; }

int main() {

float a[10]; int n;

cout << \请输入求平均值数的数量:\; cin >> n;

cout << \请输入一组实数,数量为\ << n << \; for (int i = 0; i < n; i++) cin >> a[i]; float t;

t = avg(a, n);

cout << \这组数的平均值为:\ << t << endl; return 0; }

Q60.(10分)一个数列,它的第一项是0,第二项是1,以后每项都是前两项

之和,求前20项之和 s。 输入格式要求:无 输出结果:s=10945 #include #include using namespace std; int main() {

int f[21],i,s=0; f[1]=0; f[2]=1;

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

f[i]=f[i-1]+f[i-2]; for(i=1;i<=20;i++) {

s+=f[i];

}

cout<<\ return 0; }

Q61.(10分)用迭代法解方程 x+sin(x)-3=0

输入格式要求:无 迭代次数:200

每隔10次查看迭代误差,格式: cout << \迭代误差 = \<< fabs(x - xx) << endl; 输出结果格式: x=2.17976 #include #include

using namespace std; int main() {

double x = 0.1, y = -0.2; double xx, yy;

for (int n = 1; n <= 200; n++) {

xx = x; yy = y;

x = 3 - sin(xx); if (n % 10 == 0) {

cout << \迭代误差 = \ << fabs(x - xx) << endl; } }

cout << \ << x << endl; return 0; }

Q62.(10分)计算 sum=1+1/3+1/5+...+1/99

输入格式:无

输出结果格式: sum=2.93777 #include using namespace std; int main() {

double b,sum=0; int n;

for(n=1;n<=99;n+=2) {

b=1.0/n;

}

sum+=b; }

cout<<\ return 0;

Q63.(10分)编写一个函数void SelectSort (int a[],int n),采用选择排序的方法

按升序排列数组a中的10个元素。 输入格式要求:无提示信息

从键盘上输入10个整数

输出格式要求:按升序输出,每行输出一个数 #include using namespace std;

void SelectSort (int a[], int n) {

int i, j, k;

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

k = i - 1;

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

if (a[j] < a[k]) k = j; int x = a[i - 1]; a[i - 1] = a[k]; a[k] = x; }

}

int main() {

int a[10];

for (int i = 0; i <= 9; i++) cin >> a[i]; int k;

SelectSort(a, 10);

for (k = 0; k <= 9; k++) cout << a[k] << endl; return 0; }

Q64.(10分)输入10个成绩,统计A、B、C、D、F的人数,其中90分及以

上是A,80~89分是B,70~89分是C,60~69分是D,60分以下是F

输入格式要求:无

本文来源:https://www.bwwdw.com/article/5bw3.html

Top