C语言初阶,新手小白的自学之路

导读

今天是学习C语言的一周纪念日了,我自认为学习得略有感悟,对语法和框架有了一些大致的了解,跟着鹏哥C语言学习,到C语言初阶,从语句学起再到分支循环,也做了一些练习和尝试,不求甚解,这只是第一遍过初阶到分支循环部分,希望下一次复习巩固更加完善思维学习

以下是一些学习笔记和范例代码

范例代码

#include<stdio.h>
/*语句*/
//表达式语句//函数调用语句//控制语句//复合语句//空语句
/*分支和循环语句*/
/*
    //if 语句
    int main()
    {
        if(3==5)//为假不执行,为真执行
        printf("hehe\n");
        return 0;
    }
*/
/*
    //if else 语句
    int main()
    {
        int age = 10;
        if(age<18)//为真执行,默认if语句只能跟一条语句,只有一条语句不用+大括号{}【代码块】
        {
        printf("未成年\n");
        printf("未成年\n");
        }
        //多条语句需要+大括号
        else//为假不执行
        {
        printf("成年\n");
        }
        //单条语句可+{}也可不+{}
        return 0;
    }
*/
/*
    //多分支if elseif else语句
    int main()
        {
            int age = 0;
            scanf("%d",&age);
            if(age<18)
                printf("青少年\n");
            else if(age>=18 && age<28)
                printf("青年\n");
            else if(age>=28 && age<40)
                printf("中年\n");
            else if(age>=40 && age<60)
                printf("壮年\n");
            else if(age>=60 && age<100)
                printf("老年\n");
            else
                printf("老寿星\n");
            return 0;
        }
*/    
/*
    // if else相近匹配
    int main()
    {
        int a = 0;
        int b = 2;
        if(a == 1)
           if(b == 2)
              printf("hehe\n");
           else
              printf("haha\n");//else与其最近的if关联
             
        return 0;
    }
*/    
//高质量C++编程    
/*
    //判断一个数为奇数还是
    int main()
    {
        int num = 0;
        int a = 0;
        scanf("%d",&num);
        a = num%2;
        if(a)
        {
            printf("奇数\n");
        }
        else
        {
            printf("偶数\n");
        }
        
        return 0;
    }
*/
/*
    //100以内的奇数
    int main()
    {
        int num = 1;
        int a = 0;
        a = num%2;
        while(num<=100)
        {
            if(a)
            {
                printf("%d\n",num);
            }
            num++;
        }
        
        return 0;
    }
*/

/*switch语句、default*///switch语句是可以嵌套的
/*
    int main()
    {
        int day = 0;
        scanf("%d",&day);
        switch (day)//决定了入口//switch(整形表达式)
        {
            case 1://case+整形常变量,也可以放字符,字符存储进入为Ascall码为整数
                printf("周一\n");
                break;//case进去过后,执行完任务,通过break来跳出switch语句
            case 2:
                printf("周二\n");
                break;    
            case 3:
                printf("周三\n");
                break;
            case 4:
                printf("周四\n");
                break;
            case 5:
                printf("周五\n");
                break;
            case 6:
                printf("周六\n");
                break;
            case 7:
                printf("周日\n");
                break;
            default:
                printf("选择错误\n");
                break;
            
        }
        return 0;
    }
*/

/*循环语句while /do while/ for*/
/*
    //while
    //1~10
    int main()
    {
        int i = 1;//初始化
        while (i<=10)
        {
            printf("%d  ",i);//判断
            i ++;//调整
        }
        return 0;
    }
    当while中遇到break,终止循环
    当while中遇到continue,跳过本次循环continue后面的代码,直接判断是否进行下一次循环
*/
/*
    //while 循环特点
    int main()
    {
        
        char password[20] = {0};
        printf("请输入密码->");
        scanf("%s" ,password);    
        //getchar();//读取\n
        int ch = 0;
            while((ch = getchar())!='\n')//直到读取到\n
            {
                ;
            }
        printf("请确认密码->(Y/N)");
        int ret = getchar();
        if('Y' == ret)
        {
            printf("Yes\n");
        }
        else
        {
            printf("No\n");
        }
        return 0;
    }
*/
/*
    //while 循环,输入缓冲
    int main()
    {
        char ch = '\0';
        while ((ch = getchar())!= EOF)
        {
            if (ch<'0'||ch>'9')
            continue;
            putchar(ch);
        }
        //只打印数字字符
        return 0;
    }
*/
/*FOR循环*///for(表达式1;表达式2;表达式3)//1为初始化部分,2为条件判断部分,3为调整部分*for循环体内不要随便改循环变量,建议for循环控制变量1的取值采用前闭后开区间写法
/*
    //for循环中的if break条件语句跳出循环
    int main()    
    {
        int i = 0;
        for (i = 1;i <= 10;i++)
        {if(i == 5)
            break;
        printf("%d ",i);//1,2,3,4
        }
        return 0;
    }
*/
/*
    //for循环中的if continue条件语句跳出循环
    int main()    
        {
            int i = 0;
            for (i = 1;i <= 10;i++)
            {if(i == 5)
                continue;
            printf("%d ",i);//1,2,3,4,6,7,8,9,10
            }
            return 0;
        }
*/
/*
    //
    int main()
    {
        int arr[10] = {1,2,3,4,5,6,7,8,9,10};
        int i = 0;
        for (i = 1;i < 10;i++)
        {
            printf("%d ",arr[i]);//打印2,3,,4,5,6,7,8,9,10
            
        }
        return 0;
    }
*/
/*
    //for 循环的判断部分省略这意味着判断恒成立
    int main()
    {
        for(;;)
        {
            printf("hehe\n");
        }
    }
*/
/*
//for循环嵌套,x先内循环再外循环
int main()
{
    int i = 0;
    int j = 0;
    for(i = 0;i < 10;i++)
    {
            for(j = 0;j < 10;j++)
            {
                printf("hehe\n");
            }
    }
    return 0;
}//打印100个hehe
*/
/*
    //省略for循环初始化部分的结果
    int main()
    {
        int i = 0;
        int j = 0;
        for(;i < 3;i++)
        {
                for(;j < 3;j++)
                {
                    printf("hehe\n");
                }
        }
        return 0;
    }//打印3个hehe
*/
/*
    //C99写法,部分编译器不支持
    int main()    
    {
        for (int i = 0;i < 10;i++)
        {
        printf("hehe\n");
        }
        return 0;
    }
*/
/*
    //多变量控制for循环
    int main()
    {
        int x,y;
        for(x = 0,y = 0;x<2 && y<5; ++x,y++)
        {
            printf("hehe\n");        
        }
        return 0;
    }
    //打印两个hehe
*/

/*do循环语句while(表达式)*///循环体只使用一次
/*
    int main()    
    {
        int i = 1;
        do
        {
            printf("%d",i);//输出12345678910
            i++;
        }
        while(i<=10);
    
    }
*/
/*
    //do.......while,break
    int main()    
        {
            int i = 1;
            do
            {
                i++;
                if(i==5)
                break;
                printf("%d",i);//输出234
                
            }
            while(i<=10);
        
        }
*/
/*
    //do.......while,continue
    int main()    
        {
            int i = 1;
            do
            {
                i++;
                if(i==5)
                continue;
                printf("%d",i);//输出234567891011
                    
            }
            while(i<=10);
                        
        }
*/
/*
    //do.......while,continue
    int main()    
            {
                int i = 1;
                do
                {
                    if(i==5)
                    continue;
                    printf("%d",i);//输出1234
                    i++;        
                }
                while(i<=10);
                            
            }
*/                                                                                            
//总结:常用for>>while>>do while

//写代码--办法(编程思维)+写代码(按照语法去写)
/*计算n的阶层*/
/*
    int main()
    {
        int i = 1;
        int n = 0;
        int rest = 1;
        
        scanf("%d",&n);
        for(i = 1;i <=n;i++)
        {
            rest = rest*i;
        }
        printf("%d\n",rest);
        return 0;
    }
*/
/*计算1!+2!+3!+4!+5!+6!+7!+8!+9!+10!*/
/*
    int main()
    {
        int i = 1;
        int n = 0;
        int ret = 1;
        int sum = 0;
        for(n = 1;n <=10;n++)
        {
            ret = 1;
            for(i = 1;i <=n;i++)
            {
            ret = ret*i;
            }
            sum = sum+ret;
        }
        printf("%d\n",sum);
        return 0;
    }
*/
/*
    int main()
        {
            int n = 0;
            int ret = 1;
            int sum = 0;
            for(n = 1;n <=3;n++)
            {
                ret = 1;
                ret = ret*n;
                sum = sum+ret;
            }
            printf("%d\n",sum);//6
            return 0;
        }//计算n!
*/
/*
    int main()
        {
            int arr[] = {1,2,3,4,5,6,7,8,9,10};
            int k = 7;
            //在一个有序数组中查找具体的某个数字n
            int i = 0;
            int sz = sizeof(arr)/sizeof(arr[0]);
            for(i = 0;i <=sz;i++)
            {
                if(arr[i]==k)
                {
                    printf("找到了,下标是:%d\n",i);
                    break;
                }
            }
            if(i==sz)
            {
                printf("找不到");
            }
            return 0;
        }
*/
//折半查找法,数据是有序的
/*
    int main()
        {
            int arr[] = {1,2,3,4,5,6,7,8,9,10};
            int k = 7;
            //在一个有序数组中查找具体的某个数字n
            int i = 0;
            int sz = sizeof(arr)/sizeof(arr[0]);
            int left = 0;
            int right = sz - 1;
            while(left<=right)
            {
                int mid = (left+right)/2;
                if (arr[mid]<k)
                {
                    left = mid +1;
                }
                else if(arr[mid]>k)
                {
                    right = mid-1;
                }
                else
                    {
                        printf("找到了,下标是:%d\n",i);
                        break;
                    }
            }
            if(left>right)    
            {
                printf("找不到");
            }
            return 0;
        }
*/
/*字符向中间聚拢呈现*/
/*
    #include <string.h>
    #include <windows.h>
    #include <stdlib.h>
    int main()
    {
        char arr1[] = "welcome to beijing!!!!!";
        char arr2[] = "#######################";
        
        int left = 0;
        int right = strlen(arr2)-1;//int right = sizeof(arr1)/sizeof(arr[0])-2
        
        while (left<=right)
        {
            arr2[left] = arr1[left];
            arr2[right] = arr1[right];
            printf("%s\n",arr2);
            Sleep(1000);
            //清空屏幕
            system("cls");//system为库函数,执行系统命令    
            left++;
            right--;
        }
        printf("%s\n",arr2);
        return 0;
    }
*/
/*登录输入三次密码自动锁定*/
/*
    #include <string.h>
    int main()
    {
        int i = 0;
        char password[20] = {0};
        for(i=0;i<3;i++)
        {
            printf("请输入密码\n");
            scanf("%s",password);
            //if(password == "abcdefg")//比较两个字符串是否相等,不能用==号,要调用一个库函数strcmp
            if(strcmp(password,"abcdefg")==0)//如果返回值是0,表示两个字符串相等
            {
                printf("密码正确");
                break;
            }
            else
            {
                printf("密码错误");
            }
        }
        if(i == 3)
        {
            printf("三次密码均错误,账户锁定");        
        }
    }
*/

/*随机数,猜大小*/
/*
    #include <stdlib.h>
    #include <time.h>
    void menu()
    {
        printf("**********************\n");
        printf("********1.PLAY********\n");
        printf("********0.EXIT********\n");
        printf("**********************\n");
    }
    //0~RAND_MAX(32767);
    void game()
    {
        //RAND_MAX;
       //rand();//1.生成随机数
        int ret = rand()%100+1;//生成随机数的函数范围(0~100)
        int guess = 0;
        //printf("%d\n",ret);
        //2.猜数字
        while(1)
        {
         printf("请猜数字->");   
         scanf("%d",&guess);
         if(guess<ret)
                 printf("猜小了");
        else if (guess>ret)
                printf("猜大了");
        else
           {
                printf("猜对了");
                break;
           }
        }
    }
    int main()
    {
         srand((unsigned int)time(NULL));//传一个空指针NULL//使用time函数返回的时间戳,再调用srand来生成随机数(设置起点)
        int input = 0;
        do
        {
            menu();
            printf("请选择:>");
            scanf("%d",&input);
            switch(input)
            {
                case 1:
                    //printf("猜数字\n");
                    game();
                    break;
                case 0:
                    printf("退出游戏\n");
                    break;
                default:
                    printf("选择错误,重新选择\n");
                    break;           
            }
        }while(input);
        return 0;
    }
*/

/*goto语句*///常见用于终止程序在深度嵌套中,不能跨函数跳转
//关机程序
//1.电脑运行起来后,一分钟内关键2.如果输入不关机就不关机
/*
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        char input[20] = { 0 } ;
        system("shut -s -t 60");
    again:
        printf("请注意,你的电脑在60秒内关机,如果输入:不关机,就取消关机\n");
        scanf("%s",input);
        if(strcmp(input,"不关机") == 0)
        {
            system("shutdown -a");
        }
        else
        {
            goto again;
        }
        
        return 0;
    }
*/
/*
    //循环替代goto语句
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        char input[20] = { 0 } ;
        system("shut -s -t 60");
        while(1)
        {
        printf("请注意,你的电脑在60秒内关机,如果输入:不关机,就取消关机\n");
        scanf("%s",input);
        if(strcmp(input,"不关机") == 0)
        {
            system("shutdown -a");
            break;
        }
        }    
        return 0;
    }
*/

结语

在这段时间,我依次掌握了c语言的语句、写代码--办法(编程思维)+写代码(按照语法去写)。只是初步了解,学习日期2024.7.19-7.22

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值