C语言开发日记(4)C语言上手以及一些问题和解决方法3

目录

一,选择条件的补充

二,案例

三,解析while语句

四,一些常见的错误和解决方法


导言:在初步了解C语言的if条件语句后,我们可以把if条件语句用在一些需要选择的程序编写上;可是,用作选择语句的不仅仅有if条件语句,接下来我会补充上一节所遗留的内容,以及通过一些例子,探索循环语句的用法并解决一些常见问题。

一,选择条件的补充

1,具有选择条件的三目运算符(唯一)“?:”也可以用在选择代码的开发上。其形式为:

                                  (条件选择)?(结果1):(结果2)

效果和if......else......形式相当。首先在运行代码的时候,它先判断左边的条件的真假值,如果左边条件选择为真,那么它会把结果1当做最终结果;否则,会把结果2当做最终结果。就像下面的程序一样,x≤y判定为假后,直接输出z=3的结果来;除此之外,“?:”也可以实现嵌套,不过它的结合性自右向左运算,就像下面程序第六行一样,先从右边算完x是否<1的运算,然后取值z2为3,然后再结合整体进行运算

#include<stdio.h>
int main()
{
   int x=3,y=1,z1,z2;
   x<=y?z1=1:z1=3;
   x<=y?z2=1:x<1?z2=1:z2=3;
   printf("%d%d",z1,z2);
   return 0;
}
 

2,除了if选择语句外,C语言编程还有一种switch,,,,,,case选择语句(多分支条件)。这种语句的形式为if......else......if......形式(多分支结构)比较像。首先,这个程序运行时先看小括号内的表达式,然后依次与各个case中的常量表达式进行比较,如果为等值,则停止比较,直接输出结果;此外,case与default的顺序并不是固定的,default可以不放在switch语句的末尾(注意:如果每个语句块后面不带上break,运行程序的时候会直接把上面的结果也显示出来,这是不必要的)【break和continue的区别:break提前结束,跳出循环,进行下一条指令中;而continue结束循环并且回到该语句的开头又执行该语句

二,案例

从例题2开始,我们分析编程的逻辑,并探索while循环语句的一些用法

例题2,求出1.01^365的值

#include<stdio.h>    
int main()           \\定义主函数,主函数类型未知
 \\函数体
{
  int i=1;            \\定义整型变量i并赋值为1(在运算中的意义为指数)
  float s=1.01;       \\定义单浮点变量s并赋值为1.01(在运算中为底数)
  while(i<=365)      \\调用while语句参与循环,循环结束的标志为i=365
  {                    
     s*=1.01;          \\声明每次循环中s最终的值是前一个s的值乘以1.01 
     i++;              \\每次循环结束后i的数值加1
  }
  printf("%.4f",s);    \\将s的值以十进制浮点型数输出并且保留四位小数
  return 0;
}

1,运算法则。在C语言学习中,我们接触到五大运算符,他们分别是:

              “ *  ”乘法运算符;“ /  ”除法运算符;“% ”求余数运算符;“+  -”加减运算符。

其中,五大运算符都遵循着不同字符的优先级别判定,在运算中优先级别高的改变优先级别低的数值;优先级别判定顺序为:

 除此之外,除法运算符号值得注意。当两个实数相除时,结果为双精度的实数;当两个整数相除时,结果为整型的数,而且余数直接被舍弃;当两个数中两个数的类型不同时,遵循字符的优先级别判定(如上图)

2,“i++”和“++i”(里面的i可以是任何变量)的区别。在上面的例题里,我们使用了i++作为循环要求,那么它到底是什么意思?我们可以用例子讲述,先设i=1,分别用a=i++和a=++i举例:a=i++的意思是先把i的值赋给a,然后i的值加1,这个过程结束后,i变为了2,a变为了1;a=++i的意思是先把i的值加1,然后赋值给a,这个过程结束后,i和a都变为了2。所以他们的区别是赋值加一的顺序不同;他们的共同点都在于后来的变量i都相同

3,在这个程序中,我们用到了“*=”这种符号,这种叫赋值运算符(赋值运算将原变量的值拷贝到新变量中)。用上面的例题来演示,s*=1.01等价s=s*1.01(注意,这里的“=”与上面所有编程的“=”都不是“等于”的意思;它是一种赋值运算符,形式为a=b,意为把b的值赋值给a,算术上的等于号为“==)后面原来右边的变量s乘以1.01得到一个新的值,然后赋值给左边新的变量s。赋值运算符通过不同的搭配后有10种形式(我们可以根据上面的例题演示来反推接下来的几种形式,如 a+=33等价a=a+33)。除此之外,赋值运算符最高级别判断左边(数据类型跟左边走,左边类型是int则结果就是int,左边类型为float则结果为float)

4,在这个程序中,执行循环是最为关键的一部分,用到了while语句(计算机的一种基本循环模式,满足条件时循环,条件不满足时跳出循环)所以,接下来我们要探讨一下while语句的内涵以及for语句的应用

三,解析while语句

1,while语句。其主要形式为。while语句执行循环的关键是小括号里面的表达式,即先判断表达式真假在进行中括号里面的语句(循环体);如果判断表达式为真,就执行语句,然后返回表达式继续判断,如果继续判断为假,就结束循环进入下一个指令;语句(循环体)内可以是一个简单的语句,也可以是多个语句;除此之外,如果表达式的条件判断为空,那么系统认定要执行空语句,while就会实现无限循环

 2,do...while语句。其主要形式为。与while语句不同,do...while语句先无条件执行do下面中括号内的语句再来判断while括号内表达式是否成立,如果成立,那就再次返回do中执行语句,再来到while表达式判断,直到不成立,结束循环,输出结果(说明:while语句与do...while语句的差别是do...while语句结束时多了个分号“;”)就像下面的代码一样

#include<stdio.h>    
int main()           
{
  int i=1;            
  float s=1.01;      
  do      
  {                    
     s*=1.01;           
     i++;             
  }
  while(i<=365);
  printf("%.4f",s);    
  return 0;
}

 3,while语句和do...while语句的区别。他们两个的区别在于执行与判断的先后顺序,这个性质使得他们两个语句有着不同:如果while语句第一时间判断为假,那么它括号里面的内容就不会被执行;但是do...while语句不同,它先执行,然后再判断,无论怎么样它都要执行里面的语句。现在我们把上面例题中i的条件改为i<=2,那么while语句输出的结果是1,而do...while语句输出的结果却为1.01的平方

 4,除了while语句do...while语句有着循环作用外,for语句也同样有着循环作用(碍于篇幅限制,以后再展开讲)

四,一些常见的错误和解决方法

1,使用了循环体却无输出结果(或者结果完全错误)

 

 这个错误原因在于我们在while括号后加上一个分号“;”,使得判断条件和循环体分割开来,系统误以为我们想要执行空语句,然后就进入了无限循环,而形式上这种写法是对的,因此我们很难发现错误。解决方法为去掉while()后面的分号,让判断条件和下面循环体一体【注意:使用do...while语句时,切记while()的后面必须加上分号“;”,以为do...while语句先执行在做判断,后面的判断为语句,需要分号结束

以上就是本人的开发日记,都是自己的笔记记录以及自己的理解,第四次写日记,如有错误欢迎指正,本人洗耳恭听;以上的问题只是我积累中的一小段,以后我会在其他例子中把我学过的报错和解决方法发布                               

 PS:入门小白,技术力不高,如果各位大佬要喷,请嘴下留情,谢谢;除此之外这个网站有其他非常优秀的博主和文章,欢迎大家去关注

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值