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;
}
}