TniAsu
TniAsu
文章10
标签16
分类2
无用之 C 语言笔记

无用之 C 语言笔记

关于我之前所学到过的浅薄的知识

为什么

2020年三月初,个人博客初建成,回想起来九年级曾有学过一些浅薄的c语言,就有想要重构笔记的意图,今天,趁着网课的闲暇时间,把之前所记录的笔记整理一遍,顺便练习一下md语法

不单单是这些,九年级一起起步学习编程的另一位好朋友,目前就读于我这个小县城最好的高中,他让我看了他快要翻烂的java从入门到精通········

或许我真的没有坚持的能力
就拿这些笔记,来纪念一下我,和我一起的一些东西

基本语法元素?

基本数据类型:int double char float short long
整数型 :long short int
浮点数 :double float
字符类型 :char

运算符
运算符(opearator) 是指进行运算的动作,比如做加法运算符是“+”,减法运算是“-”

算子 (operand) 是指参与运算的值,这个值可能是常数 ,也可能是变量,还可能是一个方法的返回值

a = b + 5 中的“= ,+”为运算符 , “a” “b”“5’是算子

实例:计算时间差:

int hour1,minute1;
     int hour2,minute2;

    scanf("%d %d",&hour1,&minute1);
    scanf("%d %d",&hour2,&minute2);
    //hour1*60+minute2; 转换为分钟为单位 
    int t1 = hour1*60+minute2;           
    int t2 = hour2*60+minute2;

    int t =t2-t1;

    printf("时间差是%d小时%d分钟.",t/60,t%60); //t/60为小时部分,t%60为分钟部分    

实例:求平均值

    int a,b;

    scanf("%d %d",&a,&b);

    double c = (a+b)/2.0;

    printf("%d和%d的平均值=%f\n",a,b,c);

注意
程序是按照步执行的 程序表达的是顺序执行的动作,而不是关系 赋值(自右向左)
a=b;(把b的值赋给a)
b=a;(把a的值(a=b)赋给b)
是依次执行的,结果使得a和b都得到b原来的值

运算符优先级

+(正),-(负),*,/,%,+,-.

复合赋值

5个算术运算符,“+-/%”,可以和赋值运算符=结合起来,形成符合辅助运算符:“+=”“-=”“=”“/=’
如total+=5;为total=total+5;(两个运算符中间不能有空格}
递增递减运算符
”++“和”–“是两个很特殊的运算符,他们是单目运算符,这个算子还必须是变量。这个单目运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1.
如count++;为count+=1;即为count=count+1.


实例:计算时间差(无借位)

int hour1,minute1;
int hour2,minute2;                                               

scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour1,&minute2);

int ih=hour2-hour1;
int im=minute2-minute1;
if(im<0){
im=60+im;
ih --;
}

printf("时间差是%d小时%d分钟。\n",ih,im);

if语句(判断机制)根据条件决定做还是不做

  • 写法:

    if(条件成立){
    .......
    }
  • 课件文本(此下”[]”内为引用)

    [计算机的智能是建筑在规则的基础上的,在遇到情况的时候,根据事先制定的规则做出判断,是计算机最基本的能力。
    能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等、谁大谁小的结论,这需要用到关系运算:对两个数据之间的关系的计算。

  • C语言提供了六个关系运算符:

    ==    相等
    !=    不相等
    >    大于
    >=    大于或等于
    <    小于
    <=    小于或等于

    注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。

关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,表示成立)或false(假,表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。
]

  • “!”在c语言当中往往表示not,否
  • 关系运算的结果
    当两个之的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为0
  • 优先级 所有的关系运算符的优先级比算术运算的低,但是比赋值运算高
           判断是否相等的==和!=的优先级比其他关系运算符低,而连续的关系运算符是从左往右而进行的
  • 找零计算器

    注释

    • 以两个斜杠//开头的语句把程序分成了三个部分: 1初始化2读入金额与票面3计算并打印找零
      注释(comment)插入在程序代码里面,用来向读者提供解释信息。但是往往能使的程序更容易被人类读者理解。
      多行注释/* / 延续数行的注释,要用多行注释的格式来写。多行注释由一堆字符序列“/*”开始以“/”结束。(也可以用于一行内的注释)

eles(否则机制)eles=否则的话

//格式
eles{
....
}

实例:找零计算机

//初始化
int price=0;
int bill=0;
// 请输入金额与票面
printf("请输入金额“);
scanf("%d",&price);
printf("请刷入票面");
scanf("%d",&bill);
//计算并找零
if(price>=bill){
parintf("您的钱不够\n“);
}
eles{
printf(”找您%d元\n“,bill-price);
}
  • else的匹配 else总是和最近的那个if 匹配,缩进格式不能暗示else的匹配

  • 在if和else后面总加上{}即使只有一条语句

  • else if(){}为级联的else if

  • switch-case格式 控制表达式只能是整数型的结果;常量可以是常数,也可以是常数计算的表达式。

根据表达式的结果,寻找匹配的case,并执?case后?的语句,?直到break为?, 如果所有的case都不匹配,那么就执?default后?的语句;如果没有default,那么就什么都不做

   switch(控制表达式 ){
case 常量:
      语句
      ......
case 常量:
       语句
       ......
default:
      语句
      ......
}

switch语句可以看作是⼀种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分⽀标号)处。分⽀标号只是说明switch内部位置的路标,在执⾏完分⽀中的最后⼀条语句后,如果后⾯没有break,就会顺序执⾏到下⾯的case⾥去,直到遇到⼀个break,或者switch结束为⽌。
些许引自(分支.pdf)

While循环

实例:判断数字数位

int x;
    int n = 0;

    scanf("%d", &x);

    n++;
    x /= 10;

    while (x > 0)
    {
     x /= 10;    
n++;


    }

    printf("该数为%d位数\n", n);
  • While后面的{}为循环体
    While与if不同的是while条件若满足就会一直循环知道不满足条件时结束语句而if的条件满足则运行大括号的内容然后结束语句
    循环体内要有改变条件的机会如果没有改变循环体内判断循环的条件南无循环就会是死循环
    程序通过编译了也不一定是对的
    如果我们把while翻译为“当”,那么一个while循环的意思是:当条件满足时,不断重复循环体内的语句。
    验证
    测试程序常使用边界数据,如有效范围两端的数据,特殊的倍数等,如个位数,10,0,负数
    可在程序某处中加入一些printf(“”);来表示程序是否到达某处;

ps: 不管三七二十一,先做循环内的句子在做判断

至此,我所学的c语言也就这么多,实属是学识尚浅
弃坑c已经很多个月了,我也确实有温习的必要了,三天打鱼两天晒网确实不能成气候
之后的话,可能要接触python或c++,C我确实没有再学下去的动力了