山东大学23强基班计算机导论第六次习题答案是什么?

摘要:6-1 求数组中同为5和7的倍数的整数的个数 int Count_Digit(int a[],int N) { int cnt = 0; for(int i = 0; i< N ; i+&#x
6-1 求数组中同为5和7的倍数的整数的个数 int Count_Digit(int a[],int N) { int cnt = 0; for(int i = 0; i< N ; i++) { if( a[i] % 35 == 0) cnt ++; } return cnt; } 7-2 求最大值及其下标 #include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; int n; cin>>n; for(int i=0;i<n;i++) { int t; cin>>t; nums.push_back(t); } int addr = 0; int maxn = nums[0]; for(int i = 1; i < nums.size(); i++) { if(nums[i] > maxn) { maxn = nums[i]; addr = i; } } cout<<maxn<<' '<<addr; } 例7-1 输出所有大于平均值的数 #include <iostream> #include <cstdio> #include <vector> using namespace std; int main() { vector<long long> nums; int n; cin>>n; if(n <= 0 || n>10) { cout<<"Invalid."; return 0; } long long sum = 0; while(n--) { long long t; cin>>t; nums.push_back(t); sum+=t; } double avg = sum /(double)nums.size(); printf("%.2lf\n",avg); for(int i = 0;i<nums.size();i++) { if(nums[i]>avg) { cout<<nums[i]<<' '; } } cout<<endl; } 例7-2 利用数组计算斐波那契数列 #include <iostream> #include <cstdio> using namespace std; int main() { int nums[64]; nums[1] = nums[2] =1; int n; cin>>n; if(n<1 || n>46) { cout<<"Invalid."; return 0; } for(int i = 3;i<=n;i++) { nums[i] = nums[i-1]+nums[i-2]; } for(int i = 1;i<=n;i++) { printf("%11d",nums[i]); if(i%5 ==0) cout<<endl; } } 例7-3 查找满足条件的所有整数 #include <iostream> using namespace std; int main() { long long n,x; cin>>n>>x; int flag = 0; for(int i = 0;i<n;i++) { int t; cin>>t; if(t == x){ cout<<i<<endl; flag = 1; } } if(!flag) cout<<"Not Found"; } 例7-4-2 交换最小值 #include <iostream> using namespace std; int main() { int N; cin>>N; int nums[16]; for(int i=0;i<N;i++) cin>>nums[i]; int addr =0; for(int i =0;i<N;i++) { if(nums[addr] > nums[i]) addr = i; } if(addr == 0) goto OUT; nums[addr] ^= nums[0]; nums[0] ^= nums[addr]; nums[addr]^= nums[0]; OUT: for(int i=0;i<N;i++) cout<<nums[i]<<' '; } X7-1 选择法排序 #include <iostream> using namespace std; int main() { int nums[16]; int n; cin>>n; for(int i=0;i<n;i++) cin>>nums[i]; for(int i=0;i<n;i++) { int maxn = i; for(int j = i + 1;j<n;j++) { if(nums[j] > nums[maxn]) maxn = j; } swap(nums[i],nums[maxn]); } for(int i=0;i<n - 1;i++) { cout<<nums[i]<<' '; } cout<<nums[n-1]; } 例7-7 二分查找法之过程 #include <iostream> #include <cstdio> using namespace std; long long nums[32]; int main() { long long n,x; cin>>n>>x; long long last = 0; cin>>nums[0]; last = nums[0]; for(int i=1;i<n;i++) { cin>>nums[i]; if(last >= nums[i]) { cout<<"Invalid Value"; return 0; } last = nums[i]; } int l = 0,r = n-1; do{ int mid = (l+r)/2; printf("[%d,%d][%d]\n",l,r,mid); if(nums[mid] == x) { cout<<mid; return 0; } else if (nums[mid] > x) { r = mid - 1; } else l = mid + 1; }while(r >= l); cout<<"Not Found"; } 7-4 找出不是两个数组共有的元素 #include <iostream> using namespace std; int A[32],B[32]; int C[64]; int c; int main() { int a,b; cin>>a; for(int i=0;i<a;i++) cin>>A[i]; cin>>b; for(int i=0;i<b;i++) cin>>B[i]; int flag = 0; for(int i=0;i<a;i++){ for(int j=0;j<b;j++) if(A[i] == B[j]) goto END; for(int j=0;j<c;j++) if(A[i]==C[j]) goto END; if(flag) cout<<' '; else flag=1; cout<<A[i]; C[c++]=A[i]; END:; } for(int i=0;i<b;i++){ for(int j=0;j<a;j++) if(B[i]==A[j]) goto END2; for(int j=0;j<c;j++) if(B[i]==C[j]) goto END2; if(flag) cout<<' '; else flag=1; cout<<B[i]; C[c++]=B[i]; END2:; } } -2 求一批整数中出现最多的个位数字 #include <iostream> using namespace std; int N[10]; int main() { int n; cin>>n; char c = 0; while(cin>>c) { if(c>='0' && c<='9') { N[c-'0']++; } } int maxn = 0; for(int i=1;i<=9;i++) if(N[maxn]<N[i]) maxn = i; cout<<N[maxn]<<':'; for(int i=0;i<=9;i++) { if(N[maxn] == N[i]) cout<<' '<<i; } }