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

目录

一,案例

二,解析if语句及其嵌套部分

三,探索案例

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


导言:随着对C语言的最简单编程的了解深入,我逐渐明白了C语言的基础内容和格式;接下来我会通过一些例题来挖掘一些知识点,探索上手C语言过程中的一些问题以及解决方法。

一,案例

从例题一开始,我们分析编程的逻辑,并探索if条件语句的一些用法

例题1,求两整数的较大者

#include<stdio.h>

\\主函数                       

int main()                                     \\定义主函数

{                                                   \\主函数开始

     int max(int x,int y);                  \\声明max的函数

     int a,b,c;                                  \\定义整型变量a,b,c

     scanf("%d,%d",&a,&b);                   \\输入变量a,b的值

     c=max(a,b);                            \\调用max函数,把a,b中最大的值赋值给c

     printf("%d",c);                         \\输出c的十进制值

     return 0;                                  \\执行完毕时返回数值0

}                                                   \\结束函数

\\定义max的函数

int max(int x,int y)                 \\定义函数,列表里面x,y为整型

{                                              

int z;                                          \\定义整型变量z

if(x>y)z=x;                                 \\条件判断,如果x大于y,z赋值为x

else   z=y;                                 \\条件判断,如果不是,z赋值为y

return(z);                                   \\把z的逻辑上的值代回到主函数中max调用函数中

}

分析:

1,首先,这个编程包含两个函数,分别为主函数main()和调用函数max()。在以往的学习中,我们知道一个编程中有且只有一个主函数,主函数结束,程序运行也就结束;但是也有例外的情况,如编辑中要用到一些原函数库中没有的意义,这个时候我们就要定义某个函数。一般来说,调用函数虽然和主函数形式上分离,但是调用函数却嵌套在主函数中的声明部分以保证连续性;除此之外,调用函数也可以形式上完全嵌套在主函数main()中,即在主函数内定义max

2,程序中的max函数在函数库中并没有,为程序员自己定义函数。在数学中,max函数用于求向量或者矩阵的最大元素,或几个指定值中的最大值。MATLAB等高级编程语言中常用有三种形式:max(A)、max(A,B)、max(A,[],dim)。max函数的作用是比较x和y的大小后,将z的值赋值给最大的那个,然后把最大值返回到主函数中

3,scanf()printf()是计算机C语言的标准输入和输出函数,两种函数都被声明在头文件<stdio.h> 中,按照格式把规定的内容输入或者输出。scanf()函数的格式为:( int) scanf(“格式化字符串”,参量表);而printf()函数的格式为:(int)printf(“格式化字符串”,输出列表);这两者的括号内一个字符串分别按顺序对应一个表(参量或者输出)如下图所示:

  

 两者对应的顺序意义不同,如scanf()把左边输入的字符串存放到右边的参量表中储存,而printf()则是把右边的定义量放到左边的字符串中显示出来;但是printf()也可以直接输出字符串,比如上一节的printf(“hello world”)而scanf则不可以直接输入字符串

4,运行这个求两者较大者的代码,最关键的是比较两者大小,用到了if语句(用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作)所以、我们接下来要探讨一下if语句的内涵以及一些运用

二,解析if语句及其嵌套部分

★在了解if语句之前,我建议if下面语句块部分用{}括起来,以免系统判断失误导致运行出错

分析:

1,if语句有着三种形式,分别为if......形式if......else......形式if......else......if......形式;这三种形式的表达式分别为:

if.......形式(单分支结构)  (例)如果表达式为真,先执行语句块再执行下一个指令;如果表达式为假,则跳过语句块执行下一个指令

if......else......形式(双分支结构)(例)如果表达式为真,执行语句块1然后执行下一个指令;如果表达式为假,则执行语句块2再执行下一个指令。我们例题1所用到的if语句正是这种形式,使用该形式进行条件(比较)选择

if......else......if......形式(多分支结构)(没有例)如果表达式1为真,执行语句块1然后执行下一指令;否则,将判断表达式2的真假,然后根据表达式2的真假是否执行语句块2。。。。。。如果所有的分支表达式都不符合,那么执行语句块m。值得注意的是,多分支结构的表达式应该互斥,要不然出现漏洞(bug)

2,通过了解,我们得知if有三种形式,那我们是不是可以用这三种形式进行搭配呢?可以。在if语句中又包含一个或者多个if语句称为if语句的嵌套。if语句的嵌套一共有四种,这四种嵌套分别为:

 

注意!当else和if同时出现时,我们应当按照临近原则分配else和if。临近原则为:else和if成对出现,并且总是与最近的未配对的if配对

3,通过对if语句的学习,我们可以对整型变量x和y进行比较然后输出结果,完成例题一的代码编程,也可以实现选择类的代码开发;除此之外与if语句具有同等效力的语句为switch语句(以后的篇幅再详细讲)

三,探索案例

运行:

打开Dev-C++,点击“文件”,点击“新建”-“项目”,选择窗口控制程序(console application),新建文件夹,然后就可以开始编程了,输入代码,先编译然后运行

 

运行完成,程序正常 

分析:

1,我们发现,在例题一中我们通过比较两个数的条件(x是否大于y)来获得最大值的。那么,我们可以比较三个数的大小吗?答案是可以的。不过,比较三个或三个以上的数的大小不是单纯的比较,而是通过两两比较得来。总体思路为假设四个数a,b,c,d;先让a,b比较,得出结果,然后和c比较,得出结果,再然后和d比较,得出最终结果;也可以先然a和b,c和d各自比较,然后比较出结果

2,根据上面的思路,我们可以编程三个数以上的比较

例题2,比较三个数的最大值

 输入三个数字,等待结果

3,除此之外,我们还可以通过三目运算符?:if的嵌套语句逻辑运算符比较三个以上的数字大小(碍于篇幅限制,就不展开讲了)

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

1,在系统检测不报错的情况下,输入若干个数时,系统总是输出第一个数

 ①这个错误看似出现在scanf()函数上,实际上是输入法无法互通的问题,当你弹出这个指令窗口的时候,电脑把你的输入法自动切换成了中文输入法,导致你打出的逗号为全角符,影响计算机的判断(因为我们编程的时候一般是打入半角符逗号",",和后来的全角符冲突了),计算机只能判定第一个数字,然后输出第一个数字。解决方法有三个:第一个,在输入数字的时候检查输入法是否没有问题;第二个,在编辑程序的时候把scanf()函数引号里面的逗号删除,同时程序运行的时候两个输入数字的区分应为空行;第三个,把scanf()函数双引号里面的逗号改为输入法的逗号,这样就不用检查输入法了【原则:scanf()函数里面的符号应该和你程序运行时输入的符号一致】

②语法问题,虽然系统并没有报错,但是由于标点符号等打错或者输入错误导致了运行结果出现问题。解决方法为检查语法是否有问题

2, [Error] invalid operands of types 'int*' and 'int' to binary 'operator&'

首先,说一下&符号。在scanf()函数中,&为一目运算符,是变量的取地址符,格式为scanf(“符号串”,&参数)。然后说一下逗号“,”的作用,逗号虽然在优先等级里面是最低的,但是逗号却有着传递和分隔的作用 。在scanf()函数中,&1与&2之间要用逗号分隔才能保证左边符号串传递参数的独立性。所以解决方法是在每个&hour之间加上个逗号分隔。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值