從0到1

*
從0到1,迴歸基礎,夯實基礎
點滴積累,成就未來
*

#include "stdio.h"
#include "stdlib.h"
#define _CRT_SECURE_NO_WARNINGS
//for逆序
int main1()
{
    int i, a[10];
    for (int i = 0; i < 10; i++)
        a[i] = i;
    for (i = 9; i >=0; i--)//i--從i=9開始
        printf("%d ", a[i]);
}
//Fibonacci,第三個數是前兩個數的和
int main2()
{
    int i;
    int a[20] = { 1, 1 };//初始化

    for (i = 2; i < 20; i++)//i從2開始
        a[i] = a[i - 1] + a[i - 2];

    for (i = 0; i < 20; i++)
    {
        if (i % 5 == 0)//每輸出5個換行
            printf("\n");

        printf("%12d", a[i]);
    }


}
//冒泡法排序
//思想:每次講相鄰兩個數進行比較,把較小的數放在前頭;
int main3()
{
    int i, j, t;
    int a[10];
    printf("please input 10 numbers:\n");
    for (int i = 0; i < 10; i++)
        scanf_s("%d", &a[i]);
    printf("\n");

    for (i = 0; i < 10-1; i++)//如果有n個數,進行n-1次循環
        for (j = 0; j < 10 - 1 - i; j++)//每趟進行n-1-i次比較
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    printf("the sorted numbers:\n");
    for (int i = 0; i < 10; i++)
        printf("%d ", a[i]);

}
int main4()
{
    //數組元素互換
    int a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
    int b[3][2], i, j;
    printf("array a  :\n");
    for (int i = 0; i < 2; i++)
        for (int j = 0; j < 3; j++)
        {
            printf("%5d", a[i][j]);
            b[j][i] = a[i][j];//互換
        }
    printf("\n");
    printf("array b  :\n");
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
            printf("%5d ", b[i][j]);
        printf("\n");
    }


}
//求數組最大值,並標記行號列號
int main5()
{
    int  i, j, row = 0, col = 0, max;
    int a[3][4] = { { 1, 2, 3, 4 }, { 8, 6, 5, 4 }, { 11, -3, 43, 2 } };
    max = a[0][0];
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 4; j++)
            if (max < a[i][j])
            {
                max = a[i][j];
                row = i+1;
                col = j+1;
            }
    printf("max = %d ,row = %d , col=%d\n", max, row, col);

}
//字符串函數聯繫
int main6()
{
    char str1[20];
    char str2[] = "china";
    char str3[] = "abcdef";
    char str4[] = "ERDDdef";
    printf("%s\n", strcpy(str1, str2));

    //printf("%s\n", strcat(str1, str3));
    //printf("%s\n", str1);

    printf("%s\n", strncpy(str1, str3, 1));


    printf("%d\n", strcmp(str1, str3));//比較 = 返回0; > 返回1; < 返回-1;

    printf("%d\n", strlen(strncpy(str1, str3, 1)));
    printf("%s\n", strlwr(str4));//字符串轉小寫
    printf("%s\n", strupr(str4));//字符串轉大寫


}
//函數調用
int main7()
{
    int a, b, c;
    printf("input 2 number:\n");
    scanf_s("%d%d", &a, &b);

    c = n_Max(a, b);
    printf("%d\n", c);

}
int n_Max(int x, int y)
{
    //int z;
    //z = x > y ? x : y;
    //return z;
    return(x > y ? x : y);
}

int four_Max(int a, int b, int c, int d)
{

    //int m;
    //m = n_Max(a, b);//遞推求大值
    //m = n_Max(m, c);
    //m = n_Max(m, d);
    return n_Max(n_Max(n_Max(a, b), c), d);
}
int main8()
{
    int a, b, c, d, max;
    scanf_s("%d%d%d%d", &a, &b, &c, &d);
    max = four_Max(a, b, c, d);
    printf("max number is %d\n", max);

}
//n!遞歸
int fac(int n)
{
    int f;
    if (n < 0)
        printf("date error!");
    else if (n == 0 || n == 1)
        f = 1;
    else
        f = n*fac(n - 1);
    return f;
}

int main9()
{
    int n, y;
    printf("input n :\n");
    scanf_s("%d", &n);
    y = fac(n);
    printf("%d!=%d\n", n, y);
}

//hanoi 遞歸
void move(char x, char y)
{
    printf("%c-->%c\n", x, y);
}
void hanoi(int n, char one, char two, char three)
{
    if (n == 1)
        move(one, three);
    else
    {
        hanoi(n - 1, one, three, two);
        move(one, three);
        hanoi(n - 1, two, one, three);
    }
}
int main10()
{
    int m;
    printf("input the number of diskes:\n");
    scanf_s("%d", &m);
    if (m > 0)
        hanoi(m, 'A', 'B', 'C');

}
//數組元素做實參
int main11()
{
    int i,num;
    int str[10];
    int max = 0;
    printf("input 10 number :\n");
    for (int i=0; i < 10; i++)
        scanf_s("%d", &str[i]);
    max = str[0];
    for (int i=1; i < 10; i++)
    {
        /*if (n_Max(max, str[i])>max)
            max = str[i];*/
        if (max < str[i])
            max = str[i];
        num = i;
    }
    printf("the largest number is %d,and is the %dth number.\n", max, num);

}

float average(float array[],int n)//數組做形參,傳遞數組的值
{
    int i;
    float ave, sum = 0;
    for (i = 0; i < n; i++)
        sum += array[i];
    ave = sum / n;
    return ave;


}

int main12()
{
    int i, n;
    float aver,score[10];
    printf("input n number :\n");
    scanf_s("%d", &n);
    printf("input %d score :\n",n);
    for (i = 0;i< n; i++)
        scanf_s("%f", &score[i]);

    aver = average(score,n);//數組名做實參,退化爲指針,向形參傳遞數組的首個元素的地址

    printf("average is :%5.2f\n", aver);

}
//二維數組。二維數組不管是做形參還是做實參,列都不可以省略;
//數組在內存中行存放,所以必須指定每行的長度;


//選擇法排序

void sort(int array[], int n)
{
    int i,j,k,t;
    for (i = 0; i < n-1; i++)//n-1次循環
    {
        k = i;
        for (j = i + 1; j < n;j++)//j從第i+1個起比較
        {
            if (array[j] < array[k])
                k = j;
            t = array[k];
            array[k] = array[i];
            array[i] = t;

        }
    }
}
int  main13()
{
    int i;
    int a[10];  
    printf("input 10 number :\n");
    for (i = 0; i < 10; i++)
        scanf_s("%d", &a[i]);
    sort(a, 10);
    printf("the sorted number :\n");
    for (i = 0; i < 10; i++)
    {
        if (i % 5 == 0)
            printf("\n");
        printf("%5d ", a[i]);
    }

}


float Max = 0, Min = 0;//全局變量//類型一定要一致
float average1(float array[],int n)
{
    int i;
    float aver, sum = array[0];
    Max = array[0];
    Min = array[0];
    for (i = 1; i < n; i++)//從1開始.
    {
        if (Max < array[i])
            Max = array[i];
        else if (Min > array[i])//
            Min = array[i];
        sum += array[i];
    }
    aver = sum / n;
    return aver;
}
int main()
{
    float aver,score[10];
    int i;
    printf("input 10 number :\n");

    for (i = 0; i < 10; i++)
        scanf_s("%f", &score[i]);

    aver = average1(score, 10);

    //全局變量
    printf("max=%5.2f,min=%5.2f,average=%5.2f\n", Max, Min, aver);

    system("pause");
    return 0;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章