- #include<stdio.h>
- int prime(int m);
- int isPerfect(int n,int a[]);
- void selectSort(int a[],int n);
- void bubbleSort(int a[],int n);
- int search(int a[],int n,int x);
- void converse(int n,int k,char st[]);
- void fun(int *p,int n,int m);
- main(){
- /*1.输入两个整数存放于变量中,实现两变量值交换 */
- int num1,num2,temp;
- printf("Please input two Integers:");
- scanf("%d %d",&num1,&num2);
- temp=num1;
- num1=num2;
- num2=temp;
- printf("After exchange,num1=%d,num2=%d",num1,num2);
- /*2.求和,从键盘输入正整数n,求1+2+3+。。。+*/
- int n,sum,i;
- printf("Please inout n(>0)");
- scanf("%d",&n);
- sum=0;
- for(i=1;i<=n;i++){
- sum+=i;
- }
- printf("1+2+3+...+%d=%d",n,sum);
- /*3.求阶乘*/
- int n,i;
- long fac;
- printf("Please input n(>0)");
- scanf("%d",&n);
- fac=1;
- for(i=1;i<=n;i++){
- fac*=i;
- }
- printf("1*2*3*...*%d=%ld",n,fac);
- /*4.用随机函数产生100个【0,99】内的随机整数,要求每行5个打印,并统计小于60,60-85,大于85个数并打印结果*/
- int a[100],i,count1,count2,count3;
- count1=count2=count3=0;
- for(i=0;i<100;i++){
- a[i]=rand()%100;
- if(a[i]<60)
- count1++;
- else if(a[i]>=60&&a[i]<80)
- count2++;
- else
- count3++;
- }
- for(i=0;i<100;i++){
- if(i%5==0)
- printf("\n");
- printf(" %d ",a[i]);
- }
- printf("\n count1=%d,count2=%d,count3=%d\n",count1,count2,count3);
- /*5.从键盘输入一行字符,统计出字母,数字,空格及其他字符的个数*/
- char c[80],i=0,letter,digit,space,other;
- letter=digit=space=other=0;
- while((c[i]=getchar())!='\n'){
- if(c[i]>='a'&&c[i]<='z'||c[i]>='A'&&c[i]<='Z')
- letter++;
- else if(c[i]>='0'&&c[i]<='9')
- digit++;
- else if(c[i]=' ')
- space++;
- else
- other++;
- i=i+1;
- }
- printf("letter=%d,digit=%d,space=%d,other=%d",letter,digit,space,other);
- /*6.求两个数的最大公约数和最小公倍数*/
- int m,n,nm,r,t;
- printf("Please input m,n:");
- scanf("%d",&m);
- scanf("%d",&n);
- nm=m*n;
- if(m<n){
- t=m;
- m=n;
- n=t;
- }
- r=m%n;
- while(r!=0){
- m=n;
- n=r;
- r=m%n;
- }
- printf("最大公约数=%d\n",n);
- printf("最小公倍数=%d",nm/n);
- /*7.输入一个整数,判断是否是素数*/
- int m;
- printf("请输入一个数:");
- scanf("%d",&m);
- if(prime(m))
- printf("是素数");
- else
- printf("不是素数");
- /*8.一个数如果恰好等于他的因子之和,这个数就称为完数*/
- int i,a[1000],j;
- for(i=1;i<=1000;i++){
- for(j=0;j<1000;j++)
- a[j]=0;
- if(isPerfect(i,a)){
- printf("%d its factors are ",i);
- j=0;
- while(a[j]!=0)
- printf("%d ,",a[j++]);
- printf("\n");
- }
- }
- /*9.选择排序法*/
- int a[10],i;
- printf("Please input 10 numbers:");
- for(i=0;i<10;i++){
- scanf("%d",&a[i]);
- }
- selectSort(a,10);
- printf("After sorted:");
- for(i=0;i<10;i++){
- printf("%d ",a[i]);
- }
- printf("\n");
- /*10.冒泡排序法*/
- int a[10],i;
- printf("Please input 10 numbers:");
- for(i=0;i<10;i++){
- scanf("%d",&a[i]);
- }
- bubbleSort(a,10);
- printf("After sorted:");
- for(i=0;i<10;i++){
- printf("%d ",a[i]);
- }
- printf("\n");
- /*11.折半查询法*/
- int a[10]={1,3,4,6,9,12,45,56,78,98,};
- int result,x;
- printf("Please input x:");
- scanf("%d",&x);
- result=search(a,10,x);
- if(result==-1)
- printf("%d is not found!",x);
- else
- printf("%d is in the %d position of array ",x,result);
- /*12求二维数组中最大元素,所在行,列*/
- int max,row,col,i,j;
- int a[5][5]={{1,2,3,4,5},
- {2,3,4,5,6},
- {3,4,5,6,155},
- {4,5,112,7,8},
- {5,6,7,8,9}
- };
- printf("Please input array elements:");
- for(i=0;i<5;i++){
- for(j=0;j<5;j++){
- scanf("%d",&a[i][j]);
- }
- }
- max=a[0][0];
- row=0;
- col=0;
- for(i=0;i<=4;i++){
- for(j=0;j<=4;j++){
- if(a[i][j]>max){
- max=a[i][j];
- }
- row=i;
- col=j;
- }
- }
- printf("max=%d,row=%d,col=%d",max,row,col);
- /*13.输出杨辉三角形*/
- int i,j,a[10][10];
- for(i=0;i<10;i++){
- a[i][0]=1;
- a[i][i]=1;
- }
- for(i=2;i<10;i++){
- for(j=1;j<i;j++){
- a[i][j]=a[i-1][j-1]+a[i-1][j];
- }
- }
- for(i=0;i<10;i++){
- for(j=0;j<=i;j++){
- printf("%6d",a[i][j]);
- }
- printf("\n");
- }
- /*14.将一个十进制数转换成k(2-36)进制字符串*/
- int n,k;
- char str[10]={'\0'};
- printf("Please input n,k:");
- scanf("%d %d",&n,&k);
- converse(n,k,str);
- printf("%s",str);
- /*15.输入一行字符,统计有多少个单词*/
- char string[81];
- int i,num=0,word=0;
- char c;
- gets(string);
- for(i=0;(c=string[i])!='\0';i++){
- if(c==' ') word=0;
- else if(word==0){
- word=1;
- num++;
- }
- }
- printf("There are %d words int the line.\n",num);
- /*16.迭代法*/
- float fSqrt(float a){
- float x0,x1;
- x0=a/2;
- x1=0.5*(x0+a/x0);
- while(fabs(x1-x0)>0.00001){
- x0=x1;
- x1=0.5*(x0+a/x0);
- }
- return 1;
- }
- /*17.插入法*/
- void insert(int a[],int n,int x){
- int p,i;
- p=0;
- while(x>a[p]&&p<=n){
- p=p+1;
- }
- for(i=n-1;i>=p;i--)
- a[i+1]=a[i];
- a[p]=x;
- }
- /*18.穷举法*/
- int i,j,k;
- printf("5元 1元 0.5元\n");
- for(i=1;i<=20;i++){
- for(j=1;j<=100-i;j++){
- k=100-i-j;
- if(5*i+1*j+k/2==100&&k%2==0){
- printf("%d %d %d\n",i,j,k);
- }
- }
- }
- /*19.递归算法*/
- long fac(int n){
- if(n==1)
- return 1;
- else
- return n*fac(n-1);
- }
- float pn(float x,int n){
- if(n==0)
- return 1;
- else if(n==1)
- return x;
- else
- return((2*n-1)*x-pn(x,n-1)-(n-1)*pn(n-2,x))/n;
- }
- /*20.有n个整数,使前后各数顺序向后移动m个位置,最后m个数变成最前面m个数*/
- int i,a[15]={1,6,9,8,5,4,3,5,2,4};
- fun(a,10,3);
- for(i=0;i<10;i++)
- printf("%d ",a[i]);
- /*21.从键盘输入一个字符,将小写字符转换成大写字母,然后输出到磁盘文件中一!结束输入*/
- FILE *fp;
- char str[100];
- int i=0;
- if((fp=fopen("test","w"))==NULL){
- printf("cannot open the file\n");
- exit(0);
- }
- printf("please input a string:\n");
- gets(str);
- while(str[i]!='!'){
- if(str[i]>='a'&&str[i]<='z'){
- str[i]=str[i]-32;
- fputc(str[i],fp);
- }
- i++;
- if(i>strlen(str)) break;
- }
- fclose(fp);
- fp=fopen("test","r");
- fgets(str,strlen(str)+1,fp);
- printf("%s\n",str);
- fclose(fp);
- }
- int prime(int m){
- int i,result;
- result=1;
- for(i=2;i<=(int)(sqrt(m));i++){
- if(m%i==0){
- result=0;
- break;
- }
- }
- return result;
- }
- int isPerfect(int n,int a[]){
- int i,sum=0,j=0;
- for(i=1;i<=n/2;i++)
- if(n%i==0){
- sum=sum+i;
- a[j++]=i;
- }
- if(sum==n)
- return 1;
- else
- return 0;
- }
- void selectSort(int a[],int n)
- {
- int i,min_index,j,temp;
- for(i=0; i<n-1; i++)
- {
- min_index = i;
- for(j=i+1; j<n; j++)
- {
- if(a[j] < a[min_index])
- {
- min_index = j;
- }
- }
- if( i != min_index)
- {
- temp = a[i];
- a[i] = a[min_index];
- a[min_index] = temp;
- }
- }
- }
- void bubbleSort(int a[],int n){
- int temp,i,j;
- for(i=0;i<n-1;i++){
- for(j=0;j<n-1-i;j++){
- if(a[j]>a[j+1]){
- temp=a[j];
- a[j]=a[j+1];
- a[j+1]=temp;
- }
- }
- }
- }
- int search(int a[],int n,int x){
- int bot,top,mid;
- int find;
- bot=0;
- top=n-1;
- find=-1;
- while(bot<=top&&find==-1){
- mid=(top+bot)/2;
- if(x==a[mid]){
- find=mid;
- break;
- }else if(x<a[mid]){
- top=mid-1;
- }else{
- bot=mid+1;
- }
- }
- return find;
- }
- void converse(int n,int k,char st[]){
- int r,j,i;
- char temp;
- i=0;
- while(n!=0){
- r=n%k;
- if(r>=10){
- st[i++]=65+r-10;
- } else{
- st[i++]=r+48;
- }
- n=n/k;
- }
- }
- void fun(int *p,int n,int m){
- int b[10],i;
- for(i=0;i<m;i++)
- b[i]=*(p+n-m+i);
- for(i=n-m-1;i>=0;i--)
- *(p+i+m)=*(p+i);
- for(i=0;i<m;i++)
- *(p+i)=b[i];
- }