2021-04-12

这篇博客探讨了C语言编程中的一些常见问题和解决方案。首先,介绍了fabs()函数用于浮点数取绝对值,简化了计算过程。接着,展示了如何使用循环和条件语句进行数字处理,如计算快递费用。然后,通过位数拆分的例子,说明了在循环中处理数字的灵活性。最后,讨论了%和/运算符在数字拆分和运算中的应用。这些技巧对于C语言初学者来说非常实用。
摘要由CSDN通过智能技术生成

总结一下最近遇到的关于C语言的问题

fabs()函数是对***浮点数***取绝对值
头文件:#include <math.h>
用法:double fabs(double x)
使用这个函数比自己想算法要简单得多,以下是两个对比:
第一个是我自己写的计算快递费(感觉又丑又长)

#include<stdio.h>
	int main(void)
	{  int x;
       float y,z;
       scanf("%d,%f",&x,&y);
    if(x>=0 && x<=4){
        switch(x){
             if((int)((y-1)*10)%10!=0)
            {y=y+1;}
            case 0:
           
		    z=10+(int)(y-1)*3;
            break;
            case 1:
            
            z=10+(int)(y-1)*4;
            break;
            case 2:
            
             z=15+(int)(y-1)*5;
             break;
             case 3:
              
             z=15+(int)(y-1)*6.5;
             break;
             case 4:
             
            z=15+(int)(y-1)*10;
            break;}
    printf("Price: %.2f\n",z);
    }
    else
    printf("Error in Area\nPrice: 0.00");
     return 0;}

   #include<stdio.h>
#include<math.h>
int main()
{
  int area;
  float wei,sec;
  scanf("%d,%f",&area,&wei);
  sec=(int)ceil(wei-1);
  if(area>4 || area<0)
    printf("Error in Area\n");
  else if(area==0)
    printf("Price: %5.2f\n",10+3*sec);
  else if(area==1)
    printf("Price: %5.2f\n",10+4*sec);
  else if(area==2)
    printf("Price: %5.2f\n",15+5*sec);
  else if(area==3)
    printf("Price: %5.2f\n",15+6.5*sec);
  else if(area==4)
    printf("Price: %5.2f\n",15+10*sec);
  return 0;
}


位数拆分在循环里应用广泛
1 求水仙花数
2 判断一个数字的位数
3 得到每位上的数字,并作运算
基本代码如下:

#include<stdio.h>
#include<math.h>
int main(){
	int n,b,t;
	printf("Please enter the number:\n");
	scanf("%d",&n);
	b=n;
	
	while(b!=0){
		t=b%10;
		b/=10;
		printf("%d ",t);
	}
	return 0;}


%,/ 看似两个不起眼的运算符,其实功能强大。
1 可正向拆分一个数字
2 将一个数字随意拆分
例如:将一个四位数拆分为两个两位数,并作运算

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    printf("Please input n:\n");
    scanf("%d",&n);
    int n1,n2;
    n1=n/100;
    n2=n%100;
    printf("%d,%d\n",n1,n2);
    printf("sum=%d,sub=%d,multi=%d\n",n1+n2,n1-n2,n1*n2);
    if(n2==0)
        printf("The second operator is zero!\n");
    else    printf("dev=%.2f,mod=%d\n",(float)n1/n2,n1%n2);
    return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值