小垃圾myl的课后实践

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int y,m,d,ans=0,flag=0;
    printf("请输入年月日,并用逗号隔开\n");
    scanf("%d,%d,%d",&y,&m,&d);
    if((y%400==0)||((y%100!=0)&&(y%4==0)))flag=1;//判断是否为闰年 
    m--;
    switch(m){
        case 11:ans+=30;
        case 10:ans+=31;
        case 9:ans+=30;
        case 8:ans+=31;
        case 7:ans+=31;
        case 6:ans+=30;
        case 5:ans+=31;
        case 4:ans+=30;
        case 3:ans+=31;
        case 2:ans=ans+flag+28;
        case 1:ans+=31;
    }
    ans+=d;
    printf("这一天是这一年的第%d天\n",ans);
    return 0;
}
计算某一天是这一年的第几天

排序

/*
    题目:选择排序
    做者:thmyl
    日期:2019-10-17 
*/ 
#include<iostream>
#include<cstdio>
#define maxn 1010
using namespace std;
int n,a[maxn];
int main(){
    printf("请输入数字的个数:");
    scanf("%d",&n);
    printf("请输入须要排序的数字:\n");
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(a[i]>a[j])swap(a[i],a[j]);
        }
    }
    printf("排好序后的数列为:\n");
    for(int i=1;i<=n;i++)printf("%d ",a[i]);
    puts("");
    return 0;
}
选择排序

 

/*
    题目:冒泡排序
    做者:thmyl
    日期:2019-10-17 
*/
#include<iostream>
#include<cstdio>
#define maxn 1010
using namespace std;
int n,a[maxn];
int main(){
    printf("请输入数字的个数:");
    scanf("%d",&n);
    printf("请输入须要排序的数字:\n");
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        for(int j=n;j>i;j--)//从后向前浮动 
            if(a[j]<a[j-1])swap(a[j],a[j-1]);
    printf("排好序后的数列为:\n");
    for(int i=1;i<=n;i++)printf("%d ",a[i]);
    puts("");
    return 0;
}
冒泡排序

 

/*
    ìa??:2???±??-DòáDμ??3Dò£?ê?3???óDDòêyáD
    ×÷??:thmyl
    è??ú:2019-10-18 
*/
#include<iostream>
#include<cstdio>
#define maxn 1010
using namespace std;
int a[maxn],n,mn,mark;
int *p[maxn];
bool vis[maxn];
int main(){
    printf("请输入数字的个数:");
    scanf("%d",&n);
    printf("请输入须要排序的数字:\n");
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++){//?°?òμúi′óμ?êy 
        mn=0x7fffffff;
        for(int j=1;j<=n;j++)
            if(a[j]<mn&&!vis[j])
                mn=a[j],mark=j;
        p[i]=&a[mark];
        vis[mark]=1;
    }
    printf("排好序后的数列为:\n");
    for(int i=1;i<=n;i++)printf("%d ",*p[i]);
    puts("");
    return 0;
}
用指针排序

指针

int *a[10]:定义了10个指向整型元素的指针ios

int (*a)[10]:定义了一个指针,指向一个有10个整型元素的数组数组

#include<iostream>
#include<cstdio>
using namespace std;
int b[10][10];
int (*a)[10];
int main(){
    int cnt=0;
    for(int i=0;i<10;i++)
        for(int j=0;j<10;j++){
            b[i][j]=cnt;
            cnt++;
        }
    a=b;
    for(int i=0;i<10;i++,a++){
        for(int *p=*a,j=0;j<10;j++,p++){
            printf("%d ",*p);
        }
        puts("");
    }
    return 0;
}
用(*a)[10]指向二维数组的用法

(2019.10.24)ide

#include<iostream>
#include<cstdio>
using namespace std;
const int N=10;
void input(int *a,int N){//事实上没有定义数组,而是传递了数组的地址,设a[]或*a均可以,用法相同 
    for(int i=0;i<N;i++)scanf("%d",&a[i]);
}
void index(int *a,int N){
    for(int i=0;i<N;i++)
        for(int j=i+1;j<N;j++)
            if(a[i]>a[j])swap(a[i],a[j]);
}
void output(int *a,int N){
    for(int i=0;i<N;i++)printf("%d ",a[i]);
}
int main(){
    freopen("Cola.txt","r",stdin);
    int a[N];
    input(a,N);
    index(a,N);
    output(a,N);
    return 0;
}
函数的参数传递(数组)

 

#include<iostream>
#include<cstdio>
using namespace std;
const int N=10;
int main(){
    int a[N];
    void input(int *a,int N);
    void index(int *a,int N);
    void output(int *a,int N);
    input(a,N);
    index(a,N);
    output(a,N);
    return 0;
}
void input(int *a,int N){//事实上没有定义数组,而是传递了数组的地址,设a[]或*a均可以,用法相同 
    for(int i=0;i<N;i++)scanf("%d",&a[i]);
}
void index(int *a,int N){
    for(int i=0;i<N;i++)
        for(int j=i+1;j<N;j++)
            if(a[i]>a[j])swap(a[i],a[j]);
}
void output(int *a,int N){
    for(int i=0;i<N;i++)printf("%d ",a[i]);
}
事先声明函数
#include<iostream>
#include<cstdio>
#define N 10
using namespace std;
int main(){
    int a,b,c;
    scanf("%d%d",&a,&b);
    #ifdef N
        c=a+b;
    #else 
        c=a-b;
    #endif
    printf("%d",c);
    return 0;
}
#ifdef
//这里的if后面的条件必须宏定义
#include<iostream>
#include<cstdio>
using namespace std;
int a,b;
int main(){
    scanf("%d",&a);
    #if(a>0)//Error
        b=a;
    #else 
        b=-a;
    #endif
    printf("%d\n",b);
    return 0;
}
#if
//不要输出一个一个的数,要先组成一个数而后再输出。
//听说某sp考试能检测你的输出方式,嗯哼哼?
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int i=0,n,a[5],sum=0;
    printf("Please input a number in 5 single numbers:\n");
    scanf("%d",&n);
    while(n){
        a[i]=n%10;
        n/=10;
        i++;
    }
    for(int i=0;i<5;i++)
        for(int j=i+1;j<5;j++)
            if(a[j]>a[i])swap(a[i],a[j]);
    printf("The largest number is:");
    for(int i=0;i<5;i++){
        sum=sum*10+a[i];
    }
    printf("%d\n",sum);
    printf("The smallest number is:");
    i=4;
    while(a[i]==0)i--;
    swap(a[4],a[i]);
    sum=0;
    for(int i=4;i>=0;i--){
        sum=sum*10+a[i];
    }
    printf("%d\n",sum);
    return 0;
}
输入一个5位数,输出其组合的最大数和最小数

 

(2019.10.25)函数

标准输入输出spa

/*scanf*/
%f   float
%lf  double
%Lf  long double


/*printf*/
%f   float/double
%Lf  long double
浮点数
相关文章
相关标签/搜索