选择结构程序综合举例

选择结构程序综合举例

练习:

  • 1、给一个不多于5位的正整数,要求:
    (1)求出它是几位数
    (2)分别输出每一位数字
    (3)按照逆序输出各位数字,例如原数为321,应输出123
#include <stdio.h>

int main(){
	int a;
	printf("请输入不多于5位的正整数:\n");
	scanf("%d",&a);
	if(999<a&&a<=9999){
		
		    printf("个:%d 十:%d 百:%d 千:%d\n",a%10,a/10%10,a/100%10,a/1000%10);
		    	printf("四位数\n");
		    	printf("逆序后:%d\n",a%10*1000+a/10%10*100+a/100%10*10+a/1000%10); 
	}
	else 
	 if(99<a&&a<=999){
	 	printf("个:%d 十:%d 百:%d \n",a%10,a/10%10,a/100%10);
	 	printf("三位数\n");
	 	printf("逆序后:%d\n",a%10*100+a/10%10*10+a/100%10); 
	 }
	 else 
	   if(9<a&&a<=99){
	   	printf("个:%d 十:%d  \n",a%10,a/10%10);
	   	printf("二位数\n");
	   	printf("逆序后:%d\n",a%10*10+a/10%10); 
	   }
	   else
	   if(1<a&&a<9){
	   printf("个:%d\n",a);
	   	printf("一位数\n");
	   	printf("逆序后:%d\n",a); 
	   }
	   else
	   printf("输入错误!");
	return 0;
}
  • 2、求a x 2 x^2 x2+bx+c=0的解。
    首先编写程序过程中,得知道以下几种情况。
    ① a=0,不是二次方程。
    b 2 b^2 b2-4ac=0,有两个相等的实根。
    b 2 b^2 b2-4ac>0,有两个不相等的实根。
    b 2 b^2 b2-4ac<0,有两个共轭复根。应当以p+qi和p-qi的形式输出复根。其中p=-b/2a,q= b 2 − 4 a c \sqrt { b^2-4ac} b24ac /2a。
#include <stdio.h>
#include <math.h>
int main(){
	
	double a,b,c,d,x1,x2,r,i;
	printf("输入三个数字: \n");
	scanf("%lf %lf %lf",&a,&b,&c);
	if(fabs(a)<=1e-6)
		printf("不是二元一次方程 \n");
	
	else{
		d=b*b-4*a*c;
		if(fabs(d)<=1e-6){
			printf("有两个相同根:%.2f\n",-b/(2*a));
		} 
		else
		 if(d>1e-6){
		 	x1=(-b+sqrt(d))/(2*a);
		 	x2=(-b-sqrt(d))/(2*a);
		 	printf("两个不相同的实数根:%.2f %.2f\n ",x1,x2);
		 	
		 }
		  else{
		    r=-b/(2*a);
		    i=sqrt(-d)/(2*a);
		    printf("两个复根:" );
		    printf("%.2f+%.2fi\n",r,i);
		    printf("%.2f-%.2fi\n",r,i);
		    
		 
		 }
		 
		 
	}
	return 0;
	 
 } 

其中,由于d(即 b 2 b^2 b2-4ac)是实数,而实数在计算和存储时会有一些微小的误差,因此不能进行如下判断:“if(d==0)…”,因为这样可能会出现本来是零的量,由于上述误差而判别为不等于零而导致结果错误。所以采取的办法是判别d的绝对值(fabs(d))是否小于一个很小的数(例如 1 0 − 6 10^ -6 106),如果小于此数,就认为d等于零。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

注定暴富

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值