1.任意进制的转换
思路:用数组去存储十进制数提取出来的 每一位数,然后倒序输出
这是我刚开始的做法很显然是错误的,因为我没考虑到10A11B12C13D14E15F
#include<bits/stdc++.h>
using namespace std;
int function(int n)
{
if(n==0)return 1;
if(n==1)return 1;
else
return function(n-1)*n;
}
int main()
{
int p,n,m,t[1001],i=0,j;
cin>>n>>p;
m=function(n);
while(n){ //while后面的括号中是n而不是n/p了这一点要记住
t[i]=n%p;
n=n/p;
i++;
}
for(j=i-1;j>=0;j--) //上面程序多加了一个i,所以这里是i-1
cout<<t[j];
}
正确做法
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{ int n,p;
void change(int n,int p);
cout<<"Please input a positive integer n:";
cin>>n;
cout<<"Please input the base of a target system:";
cin>>p;
change(n,p);
return 0;
}
void change(int n,int p)
{int i,a[1000];
char d[]="0123456789ABCDEF";
i=-1;
while (n)
{i++;a[i]=n%p;n=n/p;}
while(i>=0)
{printf("%c",d[a[i]]); i--;}
cout<<endl;
}
2.统计n!中数字“0”的个数
#include<bits/stdc++.h>
using namespace std;
int function(int n)
{
if(n==0)return 1;
if(n==1)return 1;
else
return function(n-1)*n;
}
int main()
{
int n,i=0,count=0,a[1001];
cin>>n;
int m = function(n);
while(m)
{
a[i]=m%10;
m=m/10;
i++;
}
for(int j=0;j<i;j++)
{
if(a[j]==0)
count++;
}
cout<<count<<endl;
}
3.输入一个int型十进制正整数,将其分解成质因数的形式如90=23^25
#include<bits/stdc++.h>
using namespace std;
bool Prime(int n)
{
int s=0,i;
for(i=1;i<=n;i++)
{
if(n%i==0)
s++;
}
if(s==2)
return true;
else return false;
}
int main()
{
int n;
cin>>n;
printf("%d=",n);
for(int i=2;i<=n;i++)
{
int count=0;
if(Prime(i))
{
while(n%i==0)
{
n=n/i;
count++;
}
if(count==1)
{
printf("%d",i);
if(n>1)cout<<"*"; //输出一个数后后面还可以乘以一个数用cout
}
if(count>1)
{
printf("%d^%d",i,count);
if(n>1) cout<<"*";
}
}
}
}
4.删除数组中重复的元素,即数组中相同的元素只保留一个
思路:找到要删除的元素的位置,然后后面的元素全部向前移动
#include<stdio.h>
int main(void)
{
int i,n,a[100];
int j, temp;
printf("输入元素的个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]); //循环输入n个数
for(i=0;i<n;i++) //循环判断数组中每一个数
{
for(j=i+1;j<n;j++) //判断a[i]后边的数是否和a[i]相等
{
if(a[i]==a[j])
{
for(temp = j;temp<n-1;temp++)
a[temp]=a[temp+1]; //将a[j]后面的元素全往前移一个位置
j--; //a[j+1]取代a[j]位置,为使下次从a[j+1]开始查找,j减一(为使j保持不变)
n--; //数组长度减一
}
}
}
printf("剩余元素个数: %d\n",n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}