题目1

【题目描述】

从键盘输入10个数,存入数组中,依次输出数组元素并统计其中的正数之总和。(要求使用数组)

【输入格式】

在一行中输入10个数

【输出格式】

前两行输出数组元素值,每个元素占8个字符位置,要求左对齐,每行输出5个元素值,共两行。
第三行输出正数和,格式为:sum=…,输出完毕后换行。

【输入样例】

在这里给出一组输入。例如:

12 45 -23 33 -87 20 7 -111 0 43

【输出样例】

在这里给出相应的输出。例如:

12 45 -23 33 -87
20 7 -111 0 43
sum=160

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include <iomanip>
using namespace std;

int main() {
int a[10] ;
int j=0;
int q=0;
for(int i=1; i<11; i++)
{
cin >> a[i];
}
cout <<std::left<< setw( 8)<< a[1] <<setw( 8)<< a[ 2] <<setw( 8)<< a[ 3 ]<<setw( 8)<< a[ 4 ] <<setw( 8)<< a[ 5 ]<< endl;
cout <<std::left<< setw( 8)<< a[6] <<setw( 8)<< a[ 7] <<setw( 8)<< a[ 8 ]<<setw( 8)<< a[ 9 ] <<setw( 8)<< a[ 10 ]<< endl;
for(int h=1; h<12; h++)
if(a[h]>=0)
{
q=q+a[h];
}
cout<<"sum="<<q<<endl;
}

题目2

【题目描述】

随机产生n个【10,50】的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
提示:随机数函数Rand(),设srand(1000)。
输出20个【10,50】之间的随机数,每个数占5个字符位置,每5个数换一行,共4行
第5行输出最大值与最小值,格式为:max=…,min=…
第6行输出和及平均值,sum=…,ave=x.yz,即小数点后保留2位小数位数。

【输入格式】

20

【输出格式】

输出20个【10,50】之间的随机数,每个数占5个字符位置,每5个数换一行,共4行
第5行输出:max=…,min=…
第6行输出:sum=…,ave=x.yz,即小数点后保留2位小数位数。

【输入样例】

20

【输出样例】

47 42 15 14 24

13 43 45 12 12

37 18 29 14 29

38 10 44 24 33

max=47,min=10

sum=543,aver=27.15

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include<iostream>
#include<stdlib.h>
#include <iomanip>
using namespace std;

int main(){
int n=0;
cin>>n;
int a[n];
srand(1000);

for ( int i = 0; i < n; i++) {
a[i] = (rand () %40+10);
}
for ( int i = 0; i < n; i++) {
cout<<setw(5)<<a[i];
if((i+1)%5==0){
cout<<endl;
}
}
cout<<endl;
int b=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]>b)
{
b = a[i];
}
}
int c=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]<c)
{
c = a[i];
}
}
cout<<"max="<<b<<","<<"min="<<c<<endl;

double sum = 0;
for (int i = 0; i < n; i++){
sum += a[i];
}
double h=sum/n;
cout<<"sum="<<sum<<","<<"aver="<<fixed<<setprecision(2)<<h;
}

题目3

【问题描述】

给定n个同学的身高(均为100到200之间的正整数),求超过平均身高的同学人数。

【输入形式】

包括两行数据。
第一行包含一个整数n。
第二行包含n个用空格隔开的正整数。

【输出形式】

一行,这一行只包含一个整数,表示超过平均身高的同学人数。

【样例输入】

6
160 155 170 175 172 164

【样例输出】

3

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<iostream>
#include<stdlib.h>
#include <iomanip>
using namespace std;

int main(){
int n,t,s;
cin>>n;
int a[n];
t=s=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
s=s+a[i];
}
for(int i=0;i<n;i++)
{
if(a[i] > s/n){
t++;
}
}
cout<<t<<endl;
system("pause");
}

题目4

【问题描述】

身份证号码是由十七位数字本体码和一位校验码组成。排列顺序从左到右依次为:六位数字“地址码”、八位数字“出生日期码”、三位数字“顺序码”和一位数字“校验码”。
“地址码”用来表示公民常住户口所在地区的行政区划代码。
“出生日期码”表示公民的出生年、月、日。
“顺序码”表示在同一“地址码”所表示的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
“校验码”是根据前面十七位数字计算得到,计算方法为:

第1步:将前面的身份证号码17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2;
第2步:将这17位数字和系数相乘的结果相加;
第3步:用加出来的和除以11,得到余数;
第4步:余数只可能有0、1、2、3、4、5、6、7、8、9、10这11个数字,其分别对应的校验码为1、0、X(注意是大写)、9、8、7、6、5、4、3、2;也就是说如果上面得到的余数为2,那校验码就是X,如果余数为10,那校验码就是2。

现在你只记得自己身份证上的前17位,你能否不用回家拿身份证就可以知道最后一位是多少?

【输入形式】

输入只有一行,由17个数字组成,表示身份证号码的前17位,数字和数字之间用空格隔开。

【输出形式】

输出该身份证的最后一位校验码。

【样例输入】

4 4 2 0 0 0 1 9 9 6 0 1 0 1 0 2 3

【样例输出】

4

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<stdlib.h>
#include <iomanip>
using namespace std;

int main(){
int s,k,l;
int a[17];
int r[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
for(int i=0;i<17;i++)
{
cin>>a[i];
}
for(int i=0;i<17;i++)
{
s=s+a[i]*r[i];
}
k=s%11;
l=12-k;
if (k == 0)
cout<<"1"<<endl;
else if (k == 1)
cout<<"0"<<endl;
else if (k == 2)
cout<<"X"<<endl;
else
cout<<l<<endl;

system("pause");
}

题目5

【问题描述】

当前许多歌手大奖赛评分时,为了体现公平,在评委给出分数后统计平均得分时,都会去掉最高分和最低分。编写程序,读入评委打分(分数都是整数,评委人数大于等于5,小于等于50),去掉两个最高分和两个最低分,计算并输出平均得分(小数点后保留两位有效数字)。

【输入形式】

从控制台输入评委人数,然后在下一行输入评委的打分(以一个空格分隔的整数)。

【输出形式】

在标准输出上输出平均得分(小数点后保留两位有效数字)。

【输入样例】

15
90 98 99 100 92 97 98 95 91 90 100 92 93 98 90

【输出样例】

94.82

【样例说明】

输入评委打分有15个,去掉两个最高分100和100,两个最低分90和90,计算平均得分为:94.82。

【评分标准】

该题要求输出平均得分,共有5个测试点.

【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include<iostream>
#include<stdlib.h>
#include <iomanip>
using namespace std;

int main(){
int n,p,q;
n=p=q=0;
double sum=0;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int b=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]>b)
{
b = a[i];
}
if (a[i]==b)
{
p=1;//当最大值重复时候做标记
}
}//找到最大值
int c=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]<c)
{
c = a[i];
}
if (a[i]==b)
{
q=1;//当最小值重复时候做标记
}
}//找到最小值
int j=0;
if(p==0 && q==1)//当最大值有重复最小值没有重复时
{
for (int i = 0; i<n; i++) {
if (a[i] != b) {
a[j] = a[i];
j++;
}
}
int z=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]>z)
{
z = a[i];
}
}
sum=sum-c*2-b-z;
}
else if(q==0 && p==1)//当最小值有重复最大值没有重复时
{
for (int i = 0; i<n; i++) {
if ( a[i] != c) {
a[j] = a[i];
j++;
sum += a[j];
}
}
int u=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]<u)
{
u = a[i];
}
}
sum=sum-b*2-c-u;
}
else if(p==0 && q==0)//当最大值和最小值都没有重复时
{
for (int i = 0; i<n; i++) {
if (a[i] != b && a[i] != c) {
a[j] = a[i];
j++;
sum += a[j];
}
}
int h=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]>h)
{
h = a[i];
}
}
int g=a[0];
for (int i = 0; i < n; i++)
{
if (a[i]<g)
{
g = a[i];
}

}
sum=sum-b-c-h-g;
}
else if(p==1 && q==1)//当最大值和最小值都有重复时
{
for (int i = 0; i<n; i++) {
sum=sum+a[i];
}
sum=sum-2*b-2*c;

}
double h=sum/(n-4);
cout<<fixed<<setprecision(2)<<h;
}

代码可能略有不足,请大佬多多指教