总结一下最近遇到的关于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;
}