问题一
#include<iostream> using namespace std; int main() { int x[50] = { 0 }, y[50] = { 0 }; int k, i,j; cin >> k; for (i = 0;i < k;i++) cin >> x[i]; float sum = 0,ave; for (i = 0;i < k;i++) sum += x[i]; ave = sum / k; int num = 0,m=0; for (i = 0;i < k;i++) { if (x[i] > ave) num++; } cout << ave << ' ' << num << endl; for (i = 1, y[0] = x[0], m = 1;i != k;i++) { for (j = 0;j < i;j++) { if (x[j] == x[i]) { break; } } if (j == i)//如果j==i,说明这个元素第一次出现 { y[m] = x[i]; m++; } } for (i = 0;i < m;i++) cout << y[i] << ' '; return 0; }
问题二
#include<iostream> using namespace std; int main() { int k; cin >> k; int a[13] = { 0 }, n = 12, i,j; for (i = 1; i < 13; i++) a[i] = i; for (i = 0,j=1; i <=k; j++) { if (j > 12) j = 1; if (a[j] == 0) continue; i++; if (i == k) { a[j] = 0; i = 0; n--; } if (n == 1) break; } for (i = 1; i <= 12; i++) { if (a[i]) cout << a[i]; } return 0; }
第一个if,形成回环
第二个if,判断这个人是否被淘汰
没人被淘汰,报数+1
第三个if,判断是否到这个人报k,为真则这个人被淘汰,报数为0,人数-1
第四个if,只剩一个人就跳出循环
#include<iostream> using namespace std; int main() { int a[12]={0}; int i,k,m,death,*p; p=a; cin>>death; for(i=0;i<12;i++) { *(p+i)=i+1; } i=0; k=0; m=0; while(k<11) { if(*(p+i)!=0) m++; if(m==death) { *(p+i)=0; m=0; k++; } i++; if(i==12) i=0; } while(*p==0) p++; cout<<*p; return 0; }
第三题
#include<iostream> #include<algorithm> using namespace std; int main() { int a[10], b[10]; for (int i = 0; i < 10; i++) cin >> a[i]; for (int i = 0; i < 10; i++) cin >> b[i]; sort(a, a + 10); sort(b, b + 10); cout << a[9] << ' ' << a[0] << endl; cout << b[9] << ' ' << b[0] << endl; for (int i = 0; i < 10; i++) cout << a[i] << ' '; cout << endl; for (int i = 9; i >=0; i--) cout << b[i] << ' '; cout << endl; int c[20] = { 0 }; for (int i = 0; i < 10; i++) c[i] = a[i]; for (int i = 10; i < 20; i++) c[i] = b[i - 10]; sort(c, c + 20); for (int i = 0; i < 20; i++) cout << c[i] << ' '; return 0; }
sort(a,b,c)a:起始地址,b:结束地址,c:排序方法(不写默认从小到大)
问题四
#include<iostream> using namespace std; int main() { char s[50]; cin.getline(s, 50); int i = 0,num=0; for (i = 0;; i++) { if (s[i] != ' ' && s[i] != '.') cout << s[i]; else { cout << endl; num++; } if (s[i] == '.') break; } cout << num << endl; }