1.编写一程序,对输入的正整数,求他的约数和。
如:18的约数和为1+2+3+6+9=39
- #include
-
- int getsum(int n){
- int i,sum=0;
- for(i=1;i<=n;i++)
- if(n%i==0)
- sum+=i;
- return sum;
- }
-
- int main(){
- int sum = getsum(18);
- printf("%d",sum);
- }
2.设2000以内的素数序列(从小到大)为:x1,x2....编一序列,求如下序列y1,y2....,其中:
- #include
- #include
- #include
-
- int isprime(int n){
- if(n<=1)
- return 0;
- int i=0;
- for(i=2;i<=sqrt(n);i++)
- if(n%i==0)
- return 0;
- return 1;
- }
-
- void newlist(){
- int i,count=0;
- int *arr=(int *)malloc(2000*sizeof(int));
- for(i=0;i<2000;i++)
- if(isprime(i))
- arr[count++]=i;
- for(i=0;i
-1;i++) - printf("%d-%d=%d\n",arr[i+1],arr[i],arr[i+1]-arr[i]);
- }
-
- int main(){
- newlist();
- }
3.A为整型数组,我们要把A中的0移动到数组A的后部,非零元素移动到A的前部,且非零元素保持原序。例如
0 3 0 0 -1 2 0 1
3 -1 2 1 0 0 0 0
设A为有100个元素的整型数组,编一函数,实现上述功能
- #include
-
- void sort(int *arr,int n){
- int i,j;
- for(i=0;i
-1;i++) - for(j=0;j
-1;j++) - if(arr[j]==0){
- int temp=arr[j];
- arr[j]=arr[j+1];
- arr[j+1]=temp;
- }
- }
-
- int main(){
- int arr[8]={0,3,0,0,-1,2,0,1};
- sort(arr,8);
- int i;
- for(i=0;i<8;i++)
- printf("%d ",arr[i]);
- }
4.设A为5*5的二维数组,编一函数,求A中出现频度最高的数。
- #include
- #include
-
- int findmax(int **arr){
- int maxarr[1000]={0};
- int max=0,i,j,flag;
- for(i=0;i<5;i++)
- for(j=0;j<5;j++)
- maxarr[arr[i][j]]++;
- for(i=0;i<1000;i++)
- if(maxarr[i]>max){
- max=maxarr[i];
- flag=i;
- }
- return flag;
- }
-
- int main(){
- int **arr=(int **)malloc(sizeof(int *)*5);
- int i,j;
- for(i=0;i<5;i++)
- arr[i]=(int *)malloc(sizeof(int)*5);
- for(i=0;i<5;i++)
- for(j=0;j<5;j++)
- scanf("%d",&arr[i][j]);
- int max=findmax(arr);
- printf("%d",max);
- }