关于C语言学习的问题与收获(3)

1

用二分法判断在一个有序数组中是有给定的数据x,若在该数组中,则给出位置,不在位置为-1。

代码如下:

在这里插入图片描述

这段代码使用二分法寻找目标数据,相比冒泡法代码更长,但寻找速度更快,如果不用二分法,代码如下:

在这里插入图片描述

在二分法中使用while语句,x的数值要大于等于第一个数据小于等于最后一个数据,并加上一个判断条件,k=-1即为未找到数据,找到了则输出其位置。初始定义l=n-1和r=0及后面的r=t+1,表示每次使用二分法以后x可能所在数据区间的最后一位数据或第一位数据,while语句中的第一个条件为t=(r+l)/2,由于定义时定义t为整型数据,所以得到t的整数部分,然后再以a[t]与x比较大小,根据比较情况选择不同的路径进行运算,最后得到x的位置,或输出位置,或打印为未查到该数据如:

在这里插入图片描述

在这里插入图片描述

2求方程axx+bx+c=0的根,用三个函数分别求当:bb-4ac大于0,等于0和小于0时的根并输出结果。从主函数输入a,b,c的值。代码如下:

在这里插入图片描述

定义三个函数分别求Δ=bb-4ac大于0,等于0和小于0时的根。于是分别定义函数,delta_0D,delta_0B,delta_0S,当Δ>0时一元二次方程有2个不等实根,于是可以定义delta_0B(float,float,float),或者定义括号中放置5个float形参,只定义3个形参也可以完成运算,因为定义5个float形参也只是显得代码更有条理,如果只定义3个形参,则只需要把x1和x2和函数中的float x1和float x2删去,在printf中的x1,x2替换为e+sqrt(d)/(2a)和e-sqrt(d)/(2*a)。

在主函数中这些判断根的函数的声明要和函数里定义的形参数量相同且正确,如下图

在这里插入图片描述

数据类型和数量要相同,否则会报错。要特别注意这一点,这里比较容易疏忽,对求根函数的声明中float的数量表示有几个float形参,而不需要考虑具体变量。而在函数中,则要记得在float后打上在函数中要用到的变量。

3写一个判断素数的函数,在主函数输入一个整数,输出时否为素数。代码如下:

在这里插入图片描述
在这里插入图片描述
先对求素数的函数进行声明,在输入数据后,调用求素数的函数,确认其是否为素数,是则得到k=1,打印出“%d是素数”,否则打印“%d不是素数”。在定义的这个求素数的函数,不能使用void prime(int i),因为主函数中的if语句的判断条件是定义函数中的形参k=1或k!=1,而void类型函数表示不返还函数值,不返还函数值则主函数中的指令无法执行,从而导致程序错误,所以在利用void类型函数时要注意使用对象和使用方法,以保证代码的正确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值