白云点缀的蓝 发表于 2021-4-22 00:43

学C语言的第四天的15个练习


#include <stdio.h>
#define OK 0;
#include <windows.h>
#include <time.h>
#include <string.h>
int main31() {
//打印数组的变量名时为地址
        int a;
        printf("%#X\n", &a);
        printf("%u\n",a);
        printf("%u\n", &a);
        printf("%u\n", &a); //&a+4
        printf("%u\n", a+1);
        printf("%u\n", (&a)+1);
        printf("%u\n", (&a)+1);
        return 0;
}
int main32() {
        //求数组的最大值
        int a[] = { 1,3,5,12,45,36,37,12,85,74,95 };
        int max = a;
        for (int b=1;b <=sizeof(a)/sizeof(a);b++)
        {
                if (a>max)
                {
                        max = a;
                }
        }
        printf("%d\n", max);
        return OK;
}
//数组的逆置
int main33() {
        int arr[] = {1,2,3,4,5,6,7,8,9,0};
        int i = 0;//数组开头下标
        int j = (sizeof(arr) / sizeof(arr)) - 1;//数组下标为实际长度减一
        int tmp = 0;//临时存放,用于交换数据
        while (i<j)
        {
                tmp = arr;
                arr = arr;
                arr = tmp;
                i++;
                j--;
        }
        int length=sizeof(arr) / sizeof(arr);
        for (int a=0;a<length;a++)
        {
                printf("%d", arr);
                if (a!=sizeof(arr)/sizeof(arr)-1)
                {
                        printf("%s", ",");
                }

        }
        return OK;

}
//二维数组
int main34() {
        int a;//定义一个三行四列的二维数组
        int j = 0;
        printf("%d\n", sizeof(a));
        printf("%d\n", sizeof(a));
        for (int i = 0; i <3; i++)
        {
                for (int b=0;b<4;b++)
                {
                        srand(time(NULL));
                        a = rand();
                        Sleep(1000);//因为执行速度太快所以睡1秒,反正随机数相同
                        j++;
                        printf("j=%d%d\n",j, a);
                }
        }
        printf("%d\n",sizeof(a)/sizeof(a));
        return OK;

}
//二维数组
int main35() {
        int a = {
        {1,2,3,4},//第一行
        {5,6,7,8},//第二行
        {9,10,11,12} };//第三行
        for (int i=0;i<3;i++)
        {
                for (int j=0;j<4;j++)
                {
                        printf("%d\n", a);
                }
        }
        int c[] = {
                {1,2,5,7,9},
                {5,6,7,2,8},
                {1,54,7,8,9},
        };
        int d = { {1,2,3,4} };//如果只给部分元素初始化,那么其他元素为零
        for (int i = 0; i < 3; i++)
        {
                for (int j = 0; j < 4; j++)
                {
                        printf("%d\n", d);
                }
        }
        //int a[][] = {};行下标可以为空,列下标不能为空
        return OK;

}
//求数组的行,与列
int main36() {
        int a = { {1,2,4,5,6} };
        printf("%d\n", sizeof(a));//20    一行的总字节数
        printf("%d\n", sizeof(a));//80       数组的总字节数
        printf("%d\n", sizeof(a));//4int的字节大小
        //总行数
        int line=        sizeof(a) / sizeof(a);
        printf("%d\n", line);
        //总列数
        int row = sizeof(a) / sizeof(a);
        printf("%d\n", row);
        return OK;

}
int main37() {
        int a = { {1,2,4,5,6} };
        printf("a=%u\n", a);
        printf("a=%u\n", a);
        printf("a=%u\n", a);
        printf("a + 1=%u\n", a + 1);
        printf("a + 1=%u\n", a + 1);
        printf("a + 1=%u\n", a + 1);
        printf("&a=%u\n", &a);
        printf("&a=%u\n", &a);
        printf("&a=%u\n", &a);
        printf("&a+1=%u\n", &a+1);
        printf("&a+1=%u\n", &a+1);
        printf("&a+1=%u\n", &a+1);
        printf("&a+1=%u\n", &a+1);
        printf("&a + 1=%u\n", &a + 1);

        /*
        a=14088300
a=14088300
a=1
a + 1=14088320
a + 1=14088304
a + 1=2
&a=14088300
&a=14088300
&a=14088300
&a+1=14088380
&a+1=14088380
&a+1=14088320
&a+1=14088304
&a + 1=14088380
        */
        printf("a=%X\n", a);
        printf("a=%X\n", a);
        printf("a + 1=%X\n", a + 1);
        printf("a + 1=%X\n", a + 1);
        printf("&a=%X\n", &a);
        printf("&a=%X\n", &a);
        printf("&a=%X\n", &a);
        printf("&a+1=%X\n", &a + 1);
        printf("&a+1=%X\n", &a + 1);
        printf("&a+1=%X\n", &a + 1);
        printf("&a+1=%X\n", &a + 1);
        printf("&a + 1=%X\n", &a + 1);
        /*
a=D6F86C
a=D6F86C
a + 1=D6F880
a + 1=D6F870
&a=D6F86C
&a=D6F86C
&a=D6F86C
&a+1=D6F8BC
&a+1=D6F8BC
&a+1=D6F880
&a+1=D6F870
&a + 1=D6F8BC
        */
        return OK;

}
//求平均数,不及格人数,总分数
int main38() {
        float cores =
        {
        {90,65,40,55},
        {40,90,80,70},
        {60,25,47,88}
        }
        ;
        float sum = 0.0;//总分数
        int numer = {0};//不及格人数
        float ave = { 0 };//平均数
        int k = 0;
        printf("%d\n", sizeof(cores) / sizeof(cores));
        printf("%d\n", sizeof(cores) / sizeof(cores));
        for (int i=0;i< sizeof(cores) / sizeof(cores);i++)
        {
                sum = 0.0;
                for (int j = 0; j < sizeof(cores) / sizeof(cores); j++)
                {
                        if (cores<60)
                        {
                                numer++;
                        }
                        sum += cores;
                }
                printf("%s%f\n","总成绩", sum);
                ave= sum / (sizeof(cores) / sizeof(cores));
                printf("%f\n", ave);
                printf("%d\n", numer);
                k++;
        }
        return OK;
}

int main40() {
        char ch;
        gets(ch); //会读取空格,
        printf("%s\n", ch);
        return OK;
}
int main39() {
        char ch;
        fgets(ch,sizeof(ch),stdin );//会把回车键\n读取
        printf("%s\n", ch);
        return OK;
}
int main41() {
        char buf="starry8";
        int strl= strlen(buf)-1;
        buf = '\0';
        printf("%d\n",strl);
        printf("%s\n", buf);//starry
        buf = 0;
        printf("%s\n", buf);//starr
        return OK;
}

int main42() {
        char ch = "starry";
        int i = 0;
        /*
        strlen(ch);
        while (ch!='\0')
        {
                i++;
        }
        */
        printf("%d\n", i);//6
        int num=strlen(ch);
        printf("%d\n", num);//6
        return OK;
}
int main43() {
        char luntan = "夜星空";
        //puts(luntan);//把夜星空输出到控制台
        fputs(luntan, stdout);
        return OK;
}
int main44() {
        char luntan = "夜星空";
        int i = 0;
        while (luntan!='\0')
        {
                i++;
        }
        printf("%d\n",i);//一个中文占两个字节//6

        while (i!=0)
        {
                luntan = '\0';
                i -= 2;
                fputs(luntan, stdout);
                printf("\n");
                /*
                夜星空
                夜星
                夜
                */
        }
        return OK;
}
int main45() {
        //产生随机数
        srand(time(NULL));//因为时间每时每刻都在变,所以选择时间当随机种子
        int rdnumer = rand();
        printf("%d\n", rdnumer);
        return OK;
}
extern int my_sum(int a, int b);
extern int my_sub(int a, int b);
externint my_mul(int a, int b);
extern int my_div(int a, int b);
extern int my_get_max(int a, int b);
extern int my_get_min(int a, int b);
int main46() {
        printf("%d\n", my_sum(98, 100));//求和
        printf("%d\n", my_sub(200, 50));//减法
        printf("%d\n", my_mul(50, 40));//乘法
        printf("%d\n", my_div(10, 5));//除法
        printf("%d\n", my_get_max(100, 60));//求最大值
        printf("%d\n", my_get_min(40, 20));//求最小值
        return OK;
}
int my_sum(int a, int b) {
        return a + b;
}
int my_sub(int a, int b) {
        return a - b;
}
int my_mul(int a, int b) {
        return a * b;
}
int my_div(int a, int b) {
        return a / b;
}
int my_get_max(int a, int b) {
        return a > b?a:b;
}
int my_get_min(int a, int b) {
        return a < b?a:b;
}

李沉舟 发表于 2021-6-11 12:32

可以找个OJ平台用C练下算法啥的,单纯学语法并没有什么作用,我现在做CTF题RE里限制我的一直是算法。

bnjzzheng 发表于 2021-11-7 18:23

希望楼主继续坚持

gwgirl 发表于 2021-12-13 16:40

大神14天就学怎么多

tkmOD6 发表于 2022-2-24 22:41

谢谢分享

sNPjeZi 发表于 2022-2-28 10:26

谢谢分享

Rrquk3 发表于 2022-2-28 10:37

谢谢分享

tiEo943 发表于 2022-3-1 01:24

不知道来晚了没有

CQPyO618 发表于 2022-3-2 07:42

感谢楼主

kZNywIf83 发表于 2022-3-27 19:16

感谢楼主
页: [1] 2 3 4 5 6 7
查看完整版本: 学C语言的第四天的15个练习