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;
}