实验四

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

//冒泡排序
#include 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;jj){ if(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) printf("%c", x[i]); } 实验四_第1张图片
//输出为偶数的余数
#include 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; }实验四_第2张图片
//输出特殊矩形
#include #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; } 实验四_第3张图片
#include 
#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)
     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)
        bb[i]=0;
        
    k=fun(n,m,bb); 
    
    for(i=0;i)
        printf("%4d",bb[i]);        
    
    return 0;
}实验四_第4张图片
//杨辉三角形
#include
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;kk){
            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;
} 实验四_第5张图片
//矩阵加法
#include 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;mm){ for(int n=0;nn) scanf("%d",&a[m][n]); } printf("\ninput b="); for(int m=0;mm){ for(int n=0;nn) scanf("%d",&b[m][n]); } for(int m=0;mm){ for(int n=0;nn){ c[m][n]=a[m][n]+b[m][n]; printf("%4d",c[m][n]); } printf("\n"); } return 0; }实验四_第6张图片
这道题更应该用函数来简化的,(手懒了.....
//求余数 在一定范围内,用了另一种方法 
#include
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;ii){
        if(n%(i+1)==0){
            a[i]=i+1;
            printf("%d\n",a[i]);
        }
    }
}实验四_第7张图片 
//最大公倍数
#include
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;
} 实验四_第8张图片实验四_第9张图片
//任意大的数相加,数组进位 
//在输入的时候我去网上找了别人是怎么做的,然后又自己写了一遍
#include
#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) 
             c[ma-i-1]=a[i]-'0';//这个/-'0'是我对比自己的程序的时候发现必须要加上的
        for(int i=0;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;ii){
        
            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;
}实验四_第10张图片

 

你可能感兴趣的:(实验四)