题目1
【问题描述】
给定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 29
| #include<iostream> #include<iomanip> using namespace std;
int main(){ int n,s,c; float av=0; c=s=0; cin>>n; int a[n]; for(int i=0; i<n; i++) { cin >> a[i]; } for(int i=0;i<n;i++) { s=s+a[i]; } av=(s/n); for(int i=0;i<n;i++){ if(a[i]>av){ c++; } } cout<<c<<endl; }
|
题目2
【问题描述】
让用户输入若干个字符串(包含空格和tab字符),设每个字符串不超过80个字符并以回车换行结束。程序将各字符串按实际长度由小到大排序后输出。
【样例输入】
4
How old are you
Hello
What’s this
Good by
【样例输出】
Hello
Good by
What’s this
How old are you
【样例说明】
程序运行时用户输入的4表示将输入4个字符串。后面各行表示用户输入的4个字符串
【代码1】
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
| #include<iostream> #include<cstring> using namespace std;
int main(){ int a[100]; char* num[100]; int temp = 0; char strTemp[100]; int n, size; cin >> n; cin.get(); for (int i = 0; i < n; i++) { cin.getline(strTemp, 80); size = strlen(strTemp); num[i] = new char[size + 1]; strcpy(num[i], strTemp); } for (int loop = 0; loop < n; loop++) { a[loop] = strlen(num[loop]); } for (int loop = 0; loop <= n - 1; loop++) { for (int i = loop + 1; i < n; i++) { if (a[loop] > a[i]) { temp = a[i]; a[i] = a[loop]; a[loop] = temp; } } } for (int i = 0; i < n; i++) { for (int loop = 0; loop < n; loop++) { if (a[i] == strlen(num[loop])) { cout << num[loop]; cout << endl; } } } for (int i = 0; i < n; i++) delete num[i];
}
|
【代码2】
当然,使用此方法两个或多个字符串长度相同时,会重复输出。
所以可以优化此方案
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
| #include<iostream> #include<cstring> using namespace std; int main() { char *num[100]; char strTemp[100]; int n, size; cin >> n; cin.get(); for (int i = 0; i < n; i++) { cin.getline(strTemp, 80); size = strlen(strTemp); num[i] = new char[size + 1]; strcpy(num[i], strTemp); } char *Temp; int smallest=0; for (int j = 0; j < n; j++) { smallest = j; for (int loop = j+1; loop < n; loop++) { if (strlen(num[j])>strlen(num[loop])) smallest = loop; } if (smallest != j) { Temp = num[j]; num[j] = num[smallest]; num[smallest] = Temp; } } for (int i = 0; i < n; i++) cout << num[i] << endl; for (int i = 0; i < n; i++) delete num[i]; }
|
题目3
【问题描述】程序先让用户输入一个源字符串(设长度不超过200),再输入一个目标子字符串(设长度不超过80),两字符串都以回车结束。编写查找目标子字符串函数,若存在返回子字符串的起始位置下标,否则返回 - 1。主函数输出查找结果。
【输入形式】
How old are ? (用户输入的源字符串)
older (用户输入的目标子字符串)
【输出形式】
Not exist! (程序输出的查找结果)
【输入形式】
how old are you ?
you
【输出形式】
Exist!
【样例输入】
how old are you ?
old Are
【样例输出】
Not exist!
【代码】
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<bits/stdc++.h> using namespace std; int main() { string s1,s2; int m,n; getline(cin,s1); getline(cin,s2); m=s1.length(); n=s2.length(); for(int i=0;i<=m-n;i++) { int h=0; if(s1[i]==s2[0]) { for(int j=1;j<=n-1;j++) { if(s1[i+j]!=s2[j])h++; } if(h==0) { cout<<"Exist!"; return 0; } h=0; } } cout<<"Not exist!"; return 0; }
|
题目4
【问题描述】
输入整数N,输出相应方阵。
【输入形式】
一个整数N。( 1 <= n <= 15 )
【输出形式】
一个方阵,每个数字的场宽为4。
【样例输入】
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
【代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include<iostream> #include<iomanip> using namespace std;
int main(){ int n; cin>>n; for(int i=1;i<n*n+1;i++){ cout<<setw(4)<<i; if(i%n==0){ cout<<endl; } } }
|
题目5
【问题描述】
输入整数N,输出相应方阵。
【输入形式】
一个整数N。( 1 <= n <= 15 )
【输出形式】
一个方阵,每个数字的场宽为4。
【样例输入】
5
【样例输出】
5 4 3 2 1
10 9 8 7 6
15 14 13 12 11
20 19 18 17 16
25 24 23 22 21
【代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <iostream> #include <iomanip> using namespace std; int main() { int N; cin>>N; int a[N][N]; for(int i=0;i<N;i++) { for(int j=N*(i+1);j>N*i;j--) { cout<<setw(4)<<j; if(j%N==1)cout<<endl; } } return 0; }
|
题目6
【问题描述】
输入整数N,输出相应方阵。
【输入形式】
一个整数N。( 1 <= n <= 15 )
【输出形式】
一个方阵,每个数字的场宽为4。
【样例输入】
5
【样例输出】
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
【代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <iostream> #include <iomanip> using namespace std; int main() { int N; cin>>N; int a[N][N]; for(int i=0;i<N;i++) { for(int j=i+1;j<=i+1+N*(N-1);j+=N) cout<<setw(4)<<j; cout<<endl; } return 0; }
|
代码可能略有不足,请大佬多多指教