实验四

Posted zaazzle516

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验四相关的知识,希望对你有一定的参考价值。

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

//冒泡排序
#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("排序前: "); output(string, N); sort(string,N); printf(" 排序后: "); output(string, N); printf(" "); 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(" "); } 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
",t[i][i]);
        else
          printf("
");
    }
    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(" input 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(" "); } 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
",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;
}技术图片

 

以上是关于实验四的主要内容,如果未能解决你的问题,请参考以下文章

实验代码审查

实验代码审查

验证码逆向专栏极验三代四代点选类验证码逆向分析

验证码逆向专栏某验四代文字点选验证码逆向分析

实验四 代码审查

实验四 代码审查