函数:判断是否为素数
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本身的所有因子之和
int fac_sum(int num)
{
int i,ans=0;
for(i=1;i<num;i++)
{
if(num%i==0) ans+=i;
}
return ans;
}
函数:判断回文数的两种写法
//将回文数看作整形数据(在这里010就是10,10不是回文数)
bool is_palindromic(int num)
{
int ans=0,copy=num;
while(copy)
{
ans*=10;
ans+=copy%10;
copy/=10;
}
return ans==num?true:false;
}
//将回文数看作字符串(这样的话010也是回文数)
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中的数据。(两种思路)
//思路一:比较笨的,挨个遍历查重
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;
}
函数:利用二维的指针遍历二维数组
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;
}