wuaipojieuser 发表于 2023-4-2 11:47

【快来学习】【c语言】一兵不能成将,独木不能成林


[*]概述

          1、这是一篇介绍C语言基础知识的文章,适合给刚入门C语言或者未接触C语言的朋友,以及长久没有接触忘记、想要捡起来的朋友看
          2、大佬也请看看,后文交代了原因{:301_1004:}
          3、由于本人也是在之前简单学过C语言,但非科班生,没有持续学习更没有应用,现在想要拾起来并深入学习,有了这篇教程,其实倒不如说是一个学习记录【菜狗头】(初学者的学习记录对于另一个初学者来说就是参考)
          4、本文章是第一篇,将会介绍printf、scanf函数,这是每个C语言学习者最早接触的C语言函数,大家熟知的hello world程序就是由printf函数打印。



[*]寄语

         既然是一片入门文章,错误之处请指教。
          如果有大佬可以,可以在下面留言学习路线、学习经验,以及您走过的坑,给出您宝贵的建议与经验。互相交流,对您本身也是总结或者阶段总结。{:301_993:}
         有句名言说得好世界上能为别人减轻负担的都不是庸庸碌碌之徒



[*]正文

          这部分由代码组成,我摸索的学习方式,如果您有更好的学习方式,可以留言相告,我不胜感激


1、printf


#include<stdio.h>
int main(){
       
        //首先是printf最基础的功能,打印 整数
       
        /*printf的基本格式是“输出控制”+“输出列表”
        打印的结果由输出控制决定,中间的内容将原位输出,比如下面的栗子*/
       
        int a=1;
        int b=2;
        printf("%d%d\n",a,b);               //1 2
        printf("%d,%d\n",a,b);                  //1,2
        printf("%d和%d\n",a,b);      //1和2

        //其次是打印浮点数------控制小数位数
        /*定义float和double类型时 ,浮点数只有两位有效小数,而%f默认输出6位
        如何控制小数尾数,在 %和f之间加.2即可,变成%.2f,保留2位 ,比如下面的栗子*/

        float c=1.0;
        printf("%f\n",c) ;
        printf("%.2f\n",c) ;      //1.00
       
        //其三是打印字符
       
        char e='w';
        printf("%c\n",e) ;
       
        //其四是打印字符串
       
        char str ="hello c语言";
        printf("%s\n",str);
       
        //其他包括输出不同进制的数据,例如下面这个进制转换程序
        /*要求 输入一个整数,输出这个整数的八进制、十进制和十六进制,三个数字用空格分开,最后一个有换行*/
        int f;
        printf("请输入你想转进制的数");
        scanf("%d",&f);
        printf("0%o %u 0X%x\n",f,f,f);
       
       
        // 控制输出占位宽、左右对齐
        int g=1;
        while(a<100000){
                printf("%10d\n",a);         //右对齐,数字前有空格,一共占10位
                printf("%-10d\n",a);                           //左对齐,数字后有隐空格,一共10位
                a=a*10;       
        }
       
       
       //*的用法
       
          /*在printf里可以代表一个泛整数,
          可以代表任何整数。它可以出现在位宽的位置,也可以出现在小数位数的位置。
       
       学习这个之前记住下面的特殊现象*/
          
       printf("%f\n",b,c);       //输出为0.000000
       printf("%*.2f\n",b,c);    //输出位1.00,b=2,c=1.0,给的位宽不足?验证如下
       
       
       int h=7;
       float i=3.14;
          float j=3.1415926;
        // printf("%*.7f\n",j,i);    //BUG,不停止运行
       printf("第一个%*.7f",h,j);    //输出为3.1415925,没错不是926 ,显然位宽不足也要优先考虑小数尾数
       printf("第二个%*.2f\n",h,i);   //输出位———3.14 ,位宽为7
       printf("第三个%*.2f\n",h,j);   //输出为———3.14,位宽为7
       printf("结束");
       /*这段代码是使用C语言编写的,并包括了两条printf函数的调用。解释如下:

        首先,第一条printf函数的格式化字符串中只有一个占位符"%f",
        它由于只提供了一个参数b,而printf函数并不会自动将其他未提供参数默认为0,
        因此第二个参数c被忽略掉了。因此该语句输出0.000000。

        接着,第二条printf函数的格式化字符串中包含了""和".2"两个占位符,
        表示输出的宽度由第一个参数b决定,保留两位小数。*/
          
        return 0;
}


2、scanf


#include<stdio.h>
#define PI 3.14
int main(){
       
       
       
        //首先是scanf的基础功能, 从键盘中得到输入数据
        /*它的格式为“输入控制”,输入控制列表,四小件,一样不少
        下面局两个栗子*/
       
        int a;
        printf("请输入a的值\n");
        scanf("%d",&a);
        printf("a的值大小是%d\n第一个程序结束\n",a);
       
        //写一个计算圆面积的程序
        float b,area;
        printf("请输入圆的半径");
        scanf("%f",&b);
        area=b*b*PI;
        printf("圆的面积为%f\n第二个程序结束\n",area);
       
        //写一个将八进制转换为十进制和十六进制的程序
        int c;
        printf("请输入一个八进制的数注意输入带上0开头\n") ;
        scanf("%o",&c);
        printf("该数的十进制是%u,十六进制是%x\n第三个程序结束\n",c,c);
       
       
        /*发现一个有趣的现象,若我在第一个程序里输入的a的值不是整形比如输入浮点数2.3
       结果会显示a=3,这个不稀奇,它的尾数0.3直接成为第二个程序里b的值,
       第二个程序没有输入值直接显示b为0.3计算得到的结果,此处求大佬指教*/

        return 0;
}



[*]参考资料



一篇介绍printf的文章,链接文本是printf专题:你可能不知道的printf用法 | C语言研究中心 - C语言网 (dotcpp.com)


来自dotcpp,个人觉得这个网站学习C语言非常好,如果您有推荐其他学习资源,求相告,不胜感激{:301_975:}






[*]写在最后


感谢你看到这儿,看到这里你会发现不像教程,而像是求助帖。

实际上我认为这种小白自述式的文章从某种程度上是我们互相学习的契机,特别是对于其他小白来说

我将继续将我的学习历程记录下来,给予很多入门的同学朋友一些参考,给予大佬们回看“小白”的机会,如果对你有帮助,或者你有所感悟,欢迎留言,我们一起成长!

ps:可以留言学习经验和学习资料哦,这将对我和论坛其他坛友有重要帮助,坛友学到了也有助于提升论坛质量。





ffuujian 发表于 2023-4-2 13:04

支持一下,由于工作一直在用java,C都快忘差不多了

gada888 发表于 2023-4-2 13:27

哈哈哈哈哈。哈哈哈

wors66 发表于 2023-4-2 14:21

求助的话,就不懂了,一直没学会

cyylszsb 发表于 2023-4-2 19:07

还真不懂

tlf 发表于 2023-4-2 19:29

327491 发表于 2023-4-3 00:17

感谢分享,非常详细&#128591;

wuaipojieuser 发表于 2023-4-3 08:40

ffuujian 发表于 2023-4-2 13:04
支持一下,由于工作一直在用java,C都快忘差不多了

非常感谢您的支持,也十分欢迎你讲一讲你在java语言上的学习方式和学习建议,这将对我们初学者产生十分积极的作用{:301_975:},对于您本身也是一种总结

wuaipojieuser 发表于 2023-4-3 08:42

Sanzhaiyisheng 发表于 2023-4-2 19:10
支持一下,很久没有碰c了,一直在用Python,温故而知新,我要去重新温顾下c了

非常感谢您的支持,也十分欢迎你讲一讲你在py语言上的学习方式和学习建议,语言都是相通的,这将对我们初学者产生十分积极的作用

zjhzylp 发表于 2023-4-3 09:26

复习一遍。
页: [1] 2
查看完整版本: 【快来学习】【c语言】一兵不能成将,独木不能成林