资源描述
Q5.(10分)写一个程序根据从键盘输入的里氏强度显示地震的后果。根据里氏强度地震的后果如下:
里氏强度 后果
小于4 很小
4.0到5.0 窗户晃动
5.0到6.0 墙倒塌;不结实的建筑物被破坏
6.0到7.0 烟囱倒塌;普通建筑物被破坏
7.0到8.0 地下管线破裂;结实的建筑物也被破坏
超过8.0 地面波浪状起伏;大多数建筑物损毁
**输入格式要求:实数, 提示信息:cout << "请输入地震的里氏强度: " << endl;
**输出格式要求:
"本次地震后果:很小!"
"本次地震后果:窗户晃动!"
"本次地震后果:墙倒塌;不结实的建筑物被破坏!"
"本次地震后果:烟囱倒塌;普通建筑物被破坏!"
"本次地震后果:地下管线破裂;结实的建筑物也被破坏!"
"本次地震后果:地面波浪状起伏;大多数建筑物损毁!"
#include <iostream>
using namespace std;
int main()
{
double magnitude;
cout << "请输入地震的里氏强度: " << endl;
cin >> magnitude;
if (magnitude < 4.0)
{
cout << "本次地震后果:很小!" << endl;
}
else if (magnitude < 5.0)
{
cout << "本次地震后果:窗户晃动!" << endl;
}
else if (magnitude < 6.0)
{
cout << "本次地震后果:墙倒塌;不结实的建筑物被破坏!" << endl;
}
else if (magnitude < 7.0)
{
cout << "本次地震后果:烟囱倒塌;普通建筑物被破坏!" << endl;
}
else if (magnitude < 8.0)
{
cout << "本次地震后果:地下管线破裂;结实的建筑物也被破坏!" << endl;
}
else
{
cout << "本次地震后果:地面波浪状起伏;大多数建筑物损毁!" << endl;
}
return 0;
}
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<iostream>
using namespace std;
int main()
{
int a;
cout << "Please input a single numeral(1-7): ";
cin >> a;
if (a < 1 || a > 7)
{
cout << "Invalid - please input a single numeral(1-7)." << endl;
}
switch (a)
{
case 1:
cout << "Sunday" << endl;
break;
case 2:
cout << "Monday" << endl;
break;
case 3:
cout << "Tuesday" << endl;
break;
case 4:
cout << "Wednesday" << endl;
break;
case 5:
cout << "Thursday" << endl;
break;
case 6:
cout << "Friday" << endl;
break;
case 7:
cout << "Saturday" << endl;
break;
}
return 0;
}
Q7.(10分)有一天,一位百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,陌生人对百万富翁说:“我每天给你10万元,而你第一天只需给我1分钱,第二天我仍给你10万元,你给我2分钱,第三天我仍给你10万元,你给我4分钱……。你每天给我的钱是前一天的两倍,直到满一个月(30天)为止”,百万富翁很高兴,欣然接受了这个契约。请编程计算在这一个月中陌生人总计给百万富翁多少钱,百万富翁总计给陌生人多少钱。
**输入提示信息和数据格式:无
**输出提示信息和数据格式:cout << "百万富翁给陌生人:" << toStranger << "元" << endl;
cout << "陌生人给百万富翁:" << toRichman << "元" << endl;
#include <iostream>
using namespace std;
int main()
{
int j;
double toStranger = 0; /* 富翁给陌生人的钱,以'元'为单位 */
double toRichman = 0; /* 陌生人给富翁的钱,以'元'为单位 */
double term = 0.01; /* 富翁第一天给陌生人0.01元 */
for (j = 1; j <= 30; j++)
{
toRichman += 100000; /* 陌生人每天给富翁10万元 */
toStranger += term;
term = term * 2; /* 富翁每天给陌生人的钱是前一天的两倍 */
}
cout << "百万富翁给陌生人:" << toStranger << "元" << endl;
cout << "陌生人给百万富翁:" << toRichman << "元" << endl;
return 0;
}
Q8.(10分)编程计算自然数的立方和,直到立方和大于等于1000000时为止。统计并输出实际累加的项数。
输出格式要求:cout<<"sum="<<sum<<endl;
cout << "count =" << i << endl;
输出结果为: sum=1071225
count =45
#include <iostream>
using namespace std;
int main()
{
long i, sum = 0;
for (i = 1; ; i++)
{
sum = sum + i * i * i;
if (sum >= 1000000) break;
}
cout<<"sum="<<sum<<endl;
cout << "count =" << i << endl;
return 0;
}
Q9.(10分)求多项式 1!+2!+3!+……+15!的值。
输出格式要求:cout<<"s="<<s<<endl;
#include<iostream>
using namespace std;
int main()
{
int n = 1, s = 0;
for (int i = 1; i <= 15; i++)
{
n = n * i;
s += n;
}
cout << "s=" << s << endl;
return 0;
}
Q10.(10分)求1至200之间的所有质数,将质数和存入变量 sum 中并输出。
质数(素数)的说明:“质数是只能被1和其本身整除的数”。
输入提示要求:无
输出结果格式要求:质数之间以一个空格隔开
输出所有质数后换行输出:sum=4227
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int N, m, sum = 0;
for (m = 2; m <= 200; m++)
{
int i, tmp = (int)sqrt(m);
for (i = 2; i <= tmp; i++)
if (m % i == 0)
break;
if (i > tmp)
{
cout << m << " ";
sum += m;
}
}
cout << endl;
cout << "sum=" << sum << endl;
return 0;
}
Q11.(10分)在一个已知的一维数组中分类统计正数和负数的个数。正数的个数存入变量C1中,负数个数存入变量C2中.
输出格式要求:cout << "c1=" << c1 << endl;
cout << "c2=" << c2 << endl;
#include <iostream>
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;
return 0;
}
Q12.(10分)在包含10个数的一维整数数组a中查找最大元素max和最小元素min。
输出格式要求:cout << "最大元素:" << max << endl;
cout << "最小元素:" << min << endl;
#include <iostream>
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<iostream>
using namespace std;
int main()
{
int i = 1, sum = 0;
while (i <= 100)
{
sum += i * i;
i += 2;
}
cout << "sum=" << sum << endl;
return 0;
}
Q14.(10分)判断一个数23437是否是素数(要求程序中设置一个参数flag,flag为1代表是素数,为0代表不是)
输出结果:0
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int m, n, flag = 1;
m = 23437;
for (n = 2; n <= m / 2 && flag; n++)
if (m % n == 0)flag = 0;
cout << flag << endl;
return 0;
}
Q15.(10分)已知一个数m(=252),用循环求各位数字之和。
输出结果格式:s=9
#include<iostream>
using namespace std;
int main()
{
int m = 252, a, b, c, s;
a = m / 100;
b = m / 10 % 10;
c = m % 10;
s = a + b + c;
cout << "s=" << s << endl;
return 0;
}
Q16.(10分)已知一个数m(=252),用循环求各位数字之积。
输出结果格式:f=20
#include<iostream>
using namespace std;
int main()
{
int m, f=1,n;
m=252;
while (m !=0)
{
n=m%10;
f*=n;
m=m/10;
}
cout<<"f="<<f<<endl;
return 0;
}
Q17.(10分)已知10个四位数输出所有对称数及个数n。例如1221,2332都是对称数。
设:int m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};
输出结果:1221
2332
#include <iostream>
using namespace std;
int main()
{
int i, n = 0, m[10] = {1221, 2243, 2332, 1435, 1236, 5623, 4321, 4356, 6754, 3234};
for (i = 0; i < 10; i++)
{
int a, b, c, d;
a = m[i] / 1000;
b = m[i] % 1000 / 100;
c = m[i] % 100 / 10;
d = m[i] % 10;
if (a == d && c == b)
{
cout << m[i] << endl;
n++;
}
}
return 0;
}
Q18.(10分)将1-100之间奇数顺序累加存入n中,直到其和等于或大于200为止。
输出结果格式:n=225
#include<iostream>
using namespace std;
int main()
{
int n = 0, i = 1;
while (n < 200)
{
n = n + i;
i++;
i++;
}
cout << "n=" << n << endl;
return 0;
}
Q19.(10分)从键盘上输入三个整数,编写程序求出三个数中的最大值。
输入格式要求:cout<<"请输入三个整数:";
输出格式要求:cout<<"最大值是:"<<max<<endl;
#include <iostream>
using namespace std;
int main( )
{
int a, b, c, t, max;
cout << "请输入三个整数:";
cin >> a >> b >> c;
if (a < b)
{
t = a;
a = b;
b = t;
}
if (a < c)
{
t = a;
a = c;
c = t;
}
max = a;
cout << "最大值是:" << max << endl;
return 0;
}
Q20.(10分)输入年份和月份,编写程序,判断这一年该月份的天数。
输入格式要求: cout << "请输入年份和月份:";
输出格式要求:cout << year << "年" << month << "月" << "是" << day << "天。" << endl;
#include<iostream>
using namespace std;
int main()
{
int year, month, day;
cout << "请输入年份和月份:";
cin >> year >> month;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
day = 29;
else
day = 28;
break;
}
cout << year << "年" << month << "月" << "是" << day << "天。" << endl;
return 0;
}
Q21.(10分)
编写程序,求解下面的分段函数:
输入格式要求: cout << "请输入x:";
输出格式要求: cout << "y="<< y << endl;
#include<iostream>
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;
return 0;
}
Q22.(10分)用“辗转相除方法”计算两个数 x,y 的最大公约数。
输入格式要求:无,直接输入
输出格式要求:无,直接输出结果
#include<iostream>
using namespace std;
int main()
{
int x, y, n;
cin >> x >> y;
n = x % y;
while (n != 0)
{
x = y;
y = n;
n = x % y;
}
cout << y << endl;
return 0;
}
Q23.(10分)利用选择法将下面10个数按降序排列。
有如下定义:int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7};
输入格式要求:无
输出格式要求:以逗号分隔降序数列
#include<iostream>
using namespace std;
int main()
{
int n[10] = {5, 6, 4, 2, 3, 7, 8, 5, 6, 7}, i, j, k, t;
for (i = 0; i < 9; i++)
{
k = i;
for (j = i + 1; j < 10; j++)
if (n[k] < n[j])
k = j;
t = n[i];
n[i] = n[k];
n[k] = t;
}
for (j = 0; j < 10; j++)
cout << n[j] << ",";
return 0;
}
Q24.(10分)定义数组,输入不多于20名若干学生成绩,统计高于平均分的人数k,用-1做结束标志。
输入格式要求:无
输出格式要求:cout << "高于平均分的人数:" << k << endl;
#include <iostream>
using namespace std;
int main()
{
double cj[20], aver, sum = 0;
int n = 0, k = 0, i;
cin >> cj[0];
while (cj[n] >= 0)
{
sum += cj[n];
n++;
cin >> cj[n];
}
aver = sum /( n-1);
for (i = 0; i < n-1; i++)
if (cj[i] > aver) k++;
cout << "高于平均分的人数:" << k << endl;
return 0;
}
Q25.(10分)已知三个数a,b,c,按由小到大的顺序存入a,b,c中并输出.
输入格式要求:cout << "输入三个整数:";
输出格式要求:cout << "由小到大的顺序是:" << a << "," << b << ","<<c<<endl;
#include <iostream>
using namespace std;
int 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<<endl;
return 0;
}
Q26.(10分)编程计算 sum=1!+2!+...+9!。
输入格式要求: 无
输出格式要求: cout <<"sum= " << sum << endl;
#include<iostream>
using namespace std;
int main()
{
int sum=0;
for (int i=1; i<=9; i++)
{
int x=1;
for (int j=1;j<=i;j++)
x=x*j;
sum=sum+x;
}
cout <<"sum= " << sum << endl;
return 0;
}
Q27.(10分)编写函数,删除字符串中的指定字符,函数原型为:
void deletechar(char *string, char ch);
设char c[100] = "abcdabcd aabbccdd";
输出结果:bcdbcd bbccdd
#include<cstring>
#include<iostream>
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 <iostream>
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<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[10], sum, aver, i;
sum = 0;
cout << "请输入学生的分数:";
for (i = 0; i <= 9; i++)
cin >> a[i];
for (i = 0; i <= 9; i++)
sum = sum + a[i];
aver = sum / 10;
cout << "学生的总分是:" << sum << endl;
cout << "学生的平均分是:" << aver << endl;
return 0;
}
Q30.(10分)输入10个学生的成绩,存放在一个一维数组中,找出其中的最高分和所对应的学生。
输入提示信息格式要求:cout << "请输入学生的分数:";
输出提示信息格式要求:cout << "第" << n + 1 << "名学生的分数最高,是:" << max << endl;
#include<iostream>
using namespace std;
int main()
{
int a[10], max, i, n;
cout << "请输入学生的分数:";
for (i = 0; i <= 9; i++)
cin >> a[i];
max = a[0];
for (i = 1; i <= 9; i++)
if (max < a[i])
{
max = a[i];
n = i;
}
cout << "第" << n + 1 << "名学生的分数最高,是:" << max << endl;
return 0;
}
Q31.(10分)求一个3×3矩阵的对角线元素之和。
输入提示信息格式要求: cout << "请输入3行3列矩阵的元素:" << endl;
输出提示信息格式要求: cout << "请输出这个3行3列的矩阵:" << endl;
cout << "对角线元素之和为:" << sum << endl;
#include<iostream>
#include<iomanip>
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 << "pi =" << pi << endl;
#include<iostream>
using namespace std;
int main()
{
double pi = 0;
double n = 1;
int f = 1;
while (4.0 / n >= 1e-5)
{
pi = pi + f * 4 / n;
n = n + 2;
f = -f;
}
cout << "pi =" << pi << endl;
return 0;
}
Q33.(10分)求一个4×4矩阵的四周元素之和。
输入提示信息格式要求:cout << "请输入4行4列矩阵的元素:" << endl;
输出提示信息格式要求:cout << "请输出这个4行4列的矩阵:" << endl;
cout << "四周元素之和为:" << sum << endl;
#include <iostream>
#include<iomanip>
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++)
{
展开阅读全文