[C语言]数据类型与计算

-------------------------------------------------------------------------------------------------

实际的计算中我们接触的数据不仅仅是整型,那么C语言程序中只使用int也会带来一些问题。

从一个例子开始:

#include <stdio.h>

int main()
{
    int a;
    printf("输入一个数,得到除以3的结果 :");
    scanf("%d", &a);
    printf("%d", a/3);  //3,小数部分被自动舍去
    return 0;
}

 

解决方法:

  1. 使用浮点数做除法运算(整数和浮点数做运算,C将把整数转为浮点数,然后进行浮点数运算)

#include <stdio.h>

int main()
{ 
    double a;
    double b;
    
    printf("请依次输入两个数,如1 2,计算相除的结果:\n");
    
    scanf("%lf %lf", &a, &b);      //输入用%lf
    
    printf("相除结果是:%f \n", a/b);  //输出用%f

    return 0;
}

 

  2. 直接将整数值改为浮点值参与运算

#include <stdio.h>

int main()
{    
    printf("%f", 10.3/3);  //3.333333

    return 0;
}

 

数据类型:

  整数

  int

  scanf("%d");

  printf("%d", 5);

 

  浮点数

  double

  scanf("%lf", &a);

  printf("%f", 10.0);

 

 

计算:

//一.
#include <stdio.h> int main() { //计算1小时30分钟与3小时20分的时间差 /* 步骤:1.使用变量存储数值 2.设定换算方式(公式):小时取分钟差后除以60取整数部分,分钟为分钟差后除以60取余 3.得到结果 */ int hour1, minute1; int hour2, minute2; scanf("请输入时间1的小时和分钟:%d %d", &hour1, &minute1); //读入用户的输入值 scanf("请输入时间2的小时和分钟:%d %d", &hour2, &minute2);
   int t1 =
hour1 * 60 + minute1;
   int t2 = hour2 * 60 + minute2;
   int t = t2 - t1;

   printf("时间差为%d小时%d分钟", t/60, t%60);  //相比下面的方式,效率高些
    /*
   printf(
"时间差为%d小时%d分钟", ((hour2*60+minute2)-(hour1*60+minute1))/60, ((hour2*60+minute2)-(hour1*60+minute1))%60);
  */
return 0; }


//二.
#include <stdio.h>

 int main()

 {

    //使用if判断计算时间差

    int hour1, minute1;

    int hour2, minute2;

    int h = hour2 - hour1;

    int m = minute2 - minute1;

    printf("请输入小时和分钟:");

    scanf("%d %d", &hour1, &minute1);

    printf("请输入第二个小时和分钟:");

    scanf("%d %d", &hour2, &minute2);

    if( m < 0) {

      m = m + 60;

      h--;

    }

    printf("时间差为:%d小时%d分钟", h, m);

    return 0;

 }

 //注:关系运算符有 相等(==),不等于(!=),大于(>),小于(<),大于等于(>=),小于等于(<=)

  满足关系运算符时,结果为整数1,否则为整数0。

  关系运算符优先级比算术运算符低,但比赋值运算符高。

  判断是否相等和不相等的优先级比其它关系运算符低,连续的关系运算符从左到右执行。

  8 >= 1 + 2    //1

  int a = b > 2  //b>2的运算结果赋值给a  

  1 > 2 == 3 > 4  //1

  1 < 2 > 3     //0

  1 == 2 == 0    //1

  3 == 2 > 1    //0

 

求平均值

#include <stdio.h>

int main()
{
//求平均值 int a,b; printf("请输入两个数:"); scanf("%d %d", &a, &b); printf("平均值为:%f", (a + b) / 2.0); }

运算符优先级:+(正),-(负),*(乘),/(除),%(取余),+(加),-(减),=(赋值)

 

交换变量的值:

  由于程序是按步执行,如果简单赋值,最后只会得到两个相同的值,这时候就需要第三个变量。

#include <stdio.h>

int main()
{
    int a = 5;
    int b = 8;
    int c;
    
    c = a;
    a = b;
    b = c;
    
    printf("a=%d b=%d", a, b);
}

 

其它数据输入输出类型:http://www.cnblogs.com/farwish/p/4271457.html 

[C语言]进阶|数据类型: 整数, 浮点, 逻辑, 类型转换和条件运算

 

Refer:详解C数据类型

Link: http://www.cnblogs.com/farwish/p/4168470.html

posted on 2014-12-17 21:58  ercom  阅读(751)  评论(0编辑  收藏  举报