实验四

て烟熏妆下的殇ゞ 提交于 2019-12-06 05:12:17

这次写了一些老师上课提到的....

//冒泡排序#include <stdio.h>
const int N=4;
void output(char x[], int n);  // 函数声明 
void sort(char x[],int n); 
int main() {
    char string[N] = {'2','0','1','9'};
    int i;
    
    printf("排序前: \n");
    output(string, N);
    
        sort(string,N);
    
    
    printf("\n排序后: \n"); 
    output(string, N);
    
    printf("\n");
    
    return 0;    
} 

void sort(char x[],int n){
    
    for(int i=N;i>=0;--i){
      for(int j=0;j<i;++j){
          if(x[j]<x[j+1]){
             int tmp=x[j];
             x[j]=x[j+1];
             x[j+1]=tmp;
            }
        }
    }
}

void output(char x[], int n) {
    int i;
    
    for(i=0; i<N; i++)
        printf("%c", x[i]);
} 
//输出为偶数的余数#include <stdio.h>
void fun(int k,int bb[]) {
    int i;
    int j=0;
    
    for(i=1; i<=k; i++)  {  
         if(k%(++i)==0)    
            bb[j++]=i;
    }

    for(i=j-1; i>=0; i--)  // blank3
        printf("%d ",bb[i]);
}

int main() {
    int x, *t;
    
    scanf("%d", &x); 
    t = (int *) malloc(sizeof(int)*x);
    
    fun(x,t);
    
    return 0;
}
//输出特殊矩形#include<stdio.h>
#define N 100

void fun(int a[N][N],int n)  { 
    int i,j;
    
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
        if(j==i)    
          a[i][j]=i;
        else
          a[i][j]=(i>j?j:i); 
}

int main() {
    int n,i,j,a[N][N];
    
    scanf("%d",&n);
    
    fun(a,n); 
    
    for(i=1;i<=n;i++) {
        for(j=1;j<=n;j++)
          printf("%d ",a[i][j]);
        printf("\n");
    }
    
    return 0;
} 
#include <stdio.h>
#define N 1000
int fun(int n,int m,int bb[N]) {
    int i,j,k=0,flag;    
    for(j=n;j<=m;j++) {
            flag=1;   
    for(i=2;i<j;i++)
     if(j%i==0) {  
        flag=0;
        break;
    }
    if(flag) 
       bb[k++]=j;
    }
    return k;
}

int main(){
    int n=0,m=0,i,k,bb[N];
    
    scanf("%d",&n);
    scanf("%d",&m);
    
    for(i=0;i<m-n;i++)
        bb[i]=0;
        
    k=fun(n,m,bb); 
    
    for(i=0;i<k;i++)
        printf("%4d",bb[i]);        
    
    return 0;
}
//杨辉三角形
#include<stdio.h>
int main (){
    int n;
    scanf("%d",&n);
    int t[n][n];
    int line=n;
    for(int i=0;i<=line-1;++i){
        t[i][0]=1;
        printf("%4d",t[i][0]);
        for(int k=1;k<i;++k){
            t[i][k]=t[i-1][k-1]+t[i-1][k];
            printf("%4d",t[i][k]);
        }
        t[i][i]=1;
        if(i)
          printf("%4d\n",t[i][i]);
        else
          printf("\n");
    }
    return 0;
} 
//矩阵加法#include<stdio.h>
int main(){
     int i,j;
     scanf("%d %d",&i,&j);
     int a[i][j],b[i][j],c[i][j];
     printf("input a");
     for(int m=0;m<i;++m){
         for(int n=0;n<j;++n)
             scanf("%d",&a[m][n]);
     }
    
     printf("\ninput b=");
     for(int m=0;m<i;++m){
         for(int n=0;n<j;++n)
             scanf("%d",&b[m][n]);
     }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
     for(int m=0;m<i;++m){
         for(int n=0;n<j;++n){
             c[m][n]=a[m][n]+b[m][n];
             printf("%4d",c[m][n]);
         }
         printf("\n");
     }
    
    return 0;
}这道题更应该用函数来简化的,(手懒了.....
//求余数 在一定范围内,用了另一种方法 
#include<stdio.h>
int fun(int n);
int main(){
    int n;
    scanf("%d",&n);
    fun(n);
    return 0;
}
int fun(int n){
    int a[n]={0};
    for(int i=0;i<n;++i){
        if(n%(i+1)==0){
            a[i]=i+1;
            printf("%d\n",a[i]);
        }
    }
} 
//最大公倍数
#include<stdio.h>
int main(){
    int m,n;
    scanf("%d %d",&n,&m);//把n设成大数 
    if(n<m){
        int tmp=0;
        tmp=m;
        m=n;
        n=tmp;
    }

    for(int i=n;;++i){
        if(i%n==0&&i%m==0){
           printf("%d",i);      
           break; 
        }
    }
    return 0;
} 
//任意大的数相加,数组进位 
//在输入的时候我去网上找了别人是怎么做的,然后又自己写了一遍
#include<stdio.h>
#include<string.h>
#define Q 200
void fun(char c[],char d[],int,int);

int main (){
    
    char a[Q],b[Q],c[Q],d[Q];
    int ma=0,mb=0;
    
    printf("a=");
    gets(a);//嗯,学到了
    printf("b=");
    gets(b);
    
    ma=strlen(a);
        mb=strlen(b);//一开始我还在傻乎乎的用循环计数233
    
        for(int i=0;i<ma;i++) 
             c[ma-i-1]=a[i]-'0';//这个/-'0'是我对比自己的程序的时候发现必须要加上的
        for(int i=0;i<mb;i++)
            d[mb-i-1]=b[i]-'0';//但是不知道为什么....(想知道为什么....

/*把c数组与d数组倒序,因为加法要从最后一位到第一位*/
    
        fun(c,d,ma,mb);
    return 0;
}

void fun(char c[],char d[],int ma,int mb){
    
    int x=0,tmp;

    if(mb>ma){
      tmp=mb;
      ma=tmp;}//防止结果出现0char f[ma];
    for(int i=0;i<ma;++i){
        
            f[i]=(c[i]+d[i]+x)%10;
            x=(c[i]+d[i]+x)/10;
        
           if(i==ma-1&&x>0)//最后一个数的进位 
               f[ma-1]=x;//把十位数输到最后一个格子
        
    }
    for(int i=ma-1;i>=0;--i)//结果也是要逆序
        printf("%d",f[i]);
    
    return;
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!