1.编写一程序,对输入的正整数,求他的约数和。
如:18的约数和为1+2+3+6+9=39
#include <stdio.h>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 <stdio.h>
#include <math.h>
#include <stdlib.h>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<count-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 <stdio.h>void sort(int *arr,int n){int i,j;for(i=0;i<n-1;i++)for(j=0;j<n-i-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 <stdio.h>
#include <stdlib.h>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);
}