大一C语言学习笔记---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。

Posted 猿头猿脑的王狗蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大一C语言学习笔记---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。相关的知识,希望对你有一定的参考价值。

下面是傻瓜博主“曾经”犯过的错和一些心得:        ༼ つ ◕_◕ ༽つ


1.要想流程控制学好,一定要学会化繁为简,举栗子:

     三目运算符 (略?略:略)---就是一个数字嘛,所以它用起来和一个“1”有什么区别?没有区别(语气加重)

     定义函数()   ---它既然在其他函数中被调用了,那么它和外界(调用此函数的函数)交互的信息或者说是操作只有两种情况:

                             (1).定义函数中存在printf()函数,会对外界输出()中的信息,所以可以将定义函数当成一个printf()函数

                             (2).此定义函数属于有返回值的类型且存在返回值,这样它就可以通过向外界传达 false /ture(通过外界函数的if()来 翻译识别),所以可以将定义函数看成 ture /false或者向外界传达它的返回值(比如通过外界       的printf函数来输出其返回值),所以可以将定义函数看成一个 ? (取决于你在定义函数中写的返回值是什么);

     其实根据流程控制来最简单粗暴的看懂代码的方式就是:把自己当成一个编译器,以每一个字符当作一个单位,严谨且严格遵循顺序及语法规则地把代码在脑中或者纸上”跑一遍“(再小的流程也不要跳过),这样”跑“一遍下来,看不懂代码??不好意思臣妾做不到 ~ ~

2.break 与 cotinue 与 return的区别:

      break:只针对并终结 switch 或 循环语句,所以说如果break在 for循环 里,那么在编译器成功识别到它的情况下,此break后的所有属于循环内的代码全部失效它对 if else等语句没有作用,他会从内而外的寻找 swich / 循环语句,那一直到函数最外层都没有找到怎么办呢,那不好意思,此break不合法,奖励报错 X 1;一个break只能干掉一个 switch / 循环语句;

      continue:continue 语句很像 break 语句(),唯二不同的是:第一,continue 不能作用于 switch ;第二,执行完 continue 后,会跳到”重新判断是否继续循环”的步骤;

      return:它就更简单了,终结函数滴,针对离它距离最近的函数,同理如果编译器成功识别了 return ,那么 rerurn 后的所有在此函数中的代码全部失效

3.if()只能操控一个语句的是否执行,所以对多行代码执行进行选择时,需要用 {  } 罩上,不过我平常限制一行代码的时候,也会罩上,感觉可读性更高了呢;

4.”A“        正确,因为其中有一个隐身的  \\0  

  ”AA“      正确

  ‘A’         正确

  ‘AA’       错误, ’ ‘   只能装单个字符

5. .......                               我以为会报错(’a‘与’2‘之间的是赋值符而非判断符),但其实输出了

   if(a=2)                      虽然if的作用是接受真假并做出选择,但是当编译器看到”a=2“时,也还是毫不犹豫把”2“赋值给了 a 

   a+=1;

   printf(”%d“,a);

6.无论是”++i“还是”i++“最终都对变量 i 进行了加 1 的操作,二者区别在于赋值时:

  ”++i“ 是先对变量 i 进行了加一的操作,再进行将(i+1)赋值的操作;

  ”i++“ 是先对变量 i 进行了将(i)赋值的操作,再进行对变量 i 加一的操作;

7.switch 与 if 语句的选择问题:在针对一个“数字类型”或是”字母类型“进行并列式的选择时,用switch会稍好一些,最典型的栗子 --- 一个简易的两数运算计算器;不知道用哪个的时候,还是用 if 逻辑性更强一点;

8.由于数组【i】指的是数组中的第 (i+1)个元素,所以将其应用到循环语句时一定注意不要踩坑;

9.if(0<x<100)     错误 ;  if(0<x&&x<100)    正确;

10.无论是 while 循环还是 for 循环一定要构建好退出循环的条件(忘记对“i”操作只会陷入死循环);

11.取余符号 “%” 两边只能是整型,这句话臣妾已经说累了,可是陛下还是记不住(手动狗头);


博主呢,似一只大一的小菜鸡,欢迎各位前辈指出文章的错误或是不足之处       (~ ̄(OO) ̄)ブ

 

大一C语言学习笔记(10)---编程篇--制作简易计算器,支持加,减,乘,除,取余运算,要求 0 bug

博主自开学初就一直在努力为自己的未来寻找学习方向,学习编程嘛,尽量还是要抱大腿的,所以我就加入了我们学校的智能设备研究所,别的不说,那的学长们看起来是真的很靠谱,学长们的学习氛围也超级浓厚,所以我就打算跟大哥们混了!!!我们研究所相对于学校里的其他学生组织来说,还是比较严格的,每两周都有一定的学习任务和考核,下面的这道编程题就是其中的考核之一:

自制一个简易计算器,要求无数学bug和逻辑bug,支持加,减,乘,除,取余运算,要求 0 bug!!!

下面就是我的作业,以我目前的水平看来,应该是没有bug了,若有bug呢,也非常欢迎大佬来打我的脸    (~ ̄(OO) ̄)ブ


 

#include<stdio.h>
#include<stdlib.h>
int main()
{
	double shu1,shu2;
	int shu3,shu4;
	do
	{
	printf("请输入数字1:\\n");
	scanf("%lf",&shu1);
	rewind(stdin);
	printf("请输入数字2:\\n");
	scanf("%lf",&shu2);
	rewind(stdin);
	printf("请选择数字1与数字2进行的运算:(序号)\\n"
	       "1.加法运算\\n"
		   "2.减法运算\\n"
		   "3.乘法运算\\n"
		   "4.除法运算\\n"
		   "5.取余运算\\n");
	scanf("%d",&shu3);
	rewind(stdin);
	switch(shu3)
	{
		case(1):
		printf("运算结果:%lf\\n",(shu1+shu2));
		break;
		case(2):
		printf("运算结果:%lf\\n",(shu1-shu2));
		break;
		case(3):
		printf("运算结果:%lf\\n",(shu1*shu2));
		break;
		case(4):
		if (shu2==0)
		{
            printf("除数不能为0!\\n");
        	break;
        }
        else
		{
            printf("运算结果:\\n",(shu1/shu2));
        }
        break;
		case(5):
		if((shu1!=(int)shu1)||(shu2)!=(int)shu2)
		{
            printf("小数不可以进行取余运算,笨蛋\\n");
        }
        else
		{
            printf("运算结果:\\n",(int)(shu1)%(int)(shu2));
        }
        break;
		default:
		printf("非法输入!\\n");
		break;
		
	}
	printf("请输入:(1/0) (继续/结束)\\n");
	scanf("%d",&shu4);
	rewind(stdin);
	}
	while(shu4==1);
	return 0;
}

以上是关于大一C语言学习笔记---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。的主要内容,如果未能解决你的问题,请参考以下文章

大一C语言学习笔记---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?

C/C++编程笔记:大一C语言案例《简单计算器》,迟早用上!

Go实战学习笔记-1.3流程控制

Java超简明入门学习笔记

Python学习笔记之语言基础与流程控制

请教大一C语言编程,谢谢了!