目录
导言:随着对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:入门小白,技术力不高,如果各位大佬要喷,请嘴下留情,谢谢;除此之外这个网站有其他非常优秀的博主和文章,欢迎大家去关注