C语言(1)--解一元二次方程、将整数第五位清零、说谎、放鞭炮

1.求一元二次方程的根

#include <stdio.h>
#include <math.h>
int main()
{
	float a,b,c,x1,x2,m;
	printf("请依次输入一元二次方程的二次项、一次项、常数项系数:");
	scanf("%f,%f,%f",&a,&b,&c);
	m=b*b-4*a*c;
	if(a==0&&b==0)
	{
		if(c==0)	printf("解有无数个\n");
		else		printf("无解\n");
	}
	else
	{
		if(a==0)	printf("解是:%6.2f\n",-c/b);//解一元一次方程 
		else
		{
			x1=-b/(2*a);x2=sqrt(fabs(m))/(2*a);//求根公式 
			if(m>=0)
				printf("两实解是:%6.2f和%6.2f\n",x1+x2,x1-x2);//输出实根 
			else
				printf("两虚解是:%6.2f+%6.2fi和%6.2f-%6.2fi\n",x1,x2,x1,x2);//输出复根 
		}
	}
    return 0;
}
2.将一个整数第五位清零

#include <stdio.h>
int main()
{
	short x;
	scanf("%d",&x);
	x=x&0xFFEF;//x与十六进制数0xFFEF进行按位与运算,将第五位清零
    printf("%d\n",x);
	return 0;
}
3.判断一个整数第五位是否为零

#include <stdio.h>
int main()
{
	short x;
	scanf("%d",&x);
	x=x&0x010;//除了第五位其他位均清零
	printf("%d\n",x&&1);//第五位是1,输出1;第五位是0,输出0 
    return 0;
}
4.说谎问题

张三说李四在说谎, 李四说王五在说谎,王五说张三和李四都在说谎。/判断谁在说谎?

解一:

#include <stdio.h>
int main()
{
	int zhangsan,lisi,wangwu,i;
	for(i=0;i<1;i++)
		zhangsan=i;//用0状态表示撒谎,1状态表示没说谎 
		lisi=!zhangsan;
		wangwu=!lisi;
		if(!zhangsan&&!lisi==wangwu)//前两个条件作为三者关系,最后一个条件用于判断
			printf("张三:%d\t李四:%d\t王五:%d\n",zhangsan,lisi,wangwu);
    return 0;
}
解二:

#include <stdio.h>
int main()
{
	int zhangsan,lisi,wangwu,i;
	for(i=0;i<1;i++)
		zhangsan=i;//用0状态表示撒谎,1状态表示没说谎 
		lisi=!zhangsan;
		wangwu=!zhangsan&&!lisi;
		if(wangwu==!lisi)//以一、三条件作为三者关系,第二个条件用于判断 
			printf("张三:%d\t李四:%d\t王五:%d\n",zhangsan,lisi,wangwu);
    return 0;
}
5.甲乙丙三个人同时放第一个声鞭炮 ,以后甲每隔5秒放一个,乙每隔6秒放一个,丙每隔7秒放一个 ,各放21个,一共能听到多少个鞭炮声?

#include <stdio.h>
int main()
{
	int x1=0,x2=0,x3=0,x4,i,sum;
	for(i=1;i<148;i++)/*一共持续148秒*/ 
	{
		if(i%5==0&&i%6==0)//甲乙同时响的鞭炮声个数 
			x1++;
		if(i%5==0&&i%7==0)//甲丙同时响的鞭炮声个数 
			x2++;
		if(i%6==0&&i%7==0)//乙丙同时响的鞭炮声个数 
			x3++;
		if(i%5==0&&i%6==0&&i%7==0)//甲乙丙同时响的鞭炮声个数 
			x4++;
	}
	sum=61-x1-x2-x3+x4;//61是甲乙丙单独响的鞭炮声个数相加(开始时算一声)
	printf("一共能听到%d个鞭炮声",sum);
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值