函数:判断是否为素数
1 2 3 4 5 6 7 8 9 10
| bool is_prime(int num) { int i; int s=sqrt(num); for(i=2;i<=s;i++) { if(num%i==0) return false; } return true; }
|
函数:计算num的因子和
因子概念:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。反过来说,我们称n为m的倍数
其中因子和为包括1但不包括n本身的所有因子之和
1 2 3 4 5 6 7 8 9
| int fac_sum(int num) { int i,ans=0; for(i=1;i<num;i++) { if(num%i==0) ans+=i; } return ans; }
|
函数:判断回文数的两种写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| bool is_palindromic(int num) { int ans=0,copy=num; while(copy) { ans*=10; ans+=copy%10; copy/=10; } return ans==num?true:false; }
bool is_palindromic(string s) { int l=0,r=s.length()-1; while(l<=r) { if(s[l++]==s[r--]) continue; else return false; } return true; }
|
过程设计:数组的去重复制
将含有nx个元素的数组x中的数据复制到数组y中,重复的数据只存储一次,最后输出y中的数据。(两种思路)
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
| int main() { int x[50],y[50],ny=0,nx; bool flag; cin >> nx; for(int i=0;i<nx;i++) cin >> x[i]; for(int i=0;i<nx;i++) { flag = true; for(int j=0;j<ny;j++) if(x[i]==y[j]) flag = false; if(flag) y[ny++]=x[i]; else continue; } for(int i=0;i<ny;i++) cout << y[i]<< " "; return 0; }
int main() { const int MAXSIZE = 300000; int x[50],y[50],ny=0,nx; bool flag[MAXSIZE] = {false}; cin >> nx; for(int i=0;i<nx;i++) { cin >> x[i]; flag[x[i]]=true; } for(int i=0;i<nx;i++) { if(flag[x[i]]==true) { y[ny++] = x[i]; flag[x[i]]=false; } else continue; } for(int i=0;i<ny;i++) cout << y[i] << " "; return 0; }
|
函数:利用二维的指针遍历二维数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void fun2(int (*p)[4],int n,int m) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cout << p[i][j] << " "; } cout << endl; } } int main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; fun2(a,3,4); return 0; }
|