zoukankan      html  css  js  c++  java
  • 初学者常见错误1——赋值时的类型转换

    猜测下面程序的输出结果,并上机尝试:

    1.

    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	printf("%d",pow(5,2));
    
    }
    

    2.

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        printf("%f",pow(5,2));
    
    }
    View Code

    3.

    #include<stdio.h>
    #include<math.h>
    int a[105];
    int main()
    {
        int x,y,sum=0,n=0;
        while (scanf("%d",&x)==1)
        {
            a[n++]=x;
            }
        for (int i=0;i<n;i++)
          for (int j=i+1;j<n;j++)
            sum=sum+pow(a[i],2)-pow(a[j],2); 
        printf("%f",sum);
    
    }
        
    View Code


     

    4.

    #include<stdio.h>
    #include<math.h>
    int a[105];
    int main()
    {
        int x,y,sum=0,n=0;
        while (scanf("%d",&x)==1)
        {
            a[n++]=x;
            }
        for (int i=0;i<n;i++)
          for (int j=i+1;j<n;j++)
            sum=sum+pow(a[i],2)-pow(a[j],2); 
        printf("%d",sum);
    
    }
        
    View Code


    答案:1.0   2. 25.000000   3.无论你输入任何数据,输出结果都为0   4.按实际结果输出

    原因:

    (1)指数函数pow(x,y)的计算结果为双精度实数。

    (2)赋值时的类型转换规则:float、double型赋值给int型:直接截断小数。

             sum=sum+pow(a[i],2)-pow(a[j],2);

    (3)使用printf输出时,如果格式控制符和输出列表不一致,导致输出结果为0.

     

           

  • 相关阅读:
    大道至简第四章读后感
    进度条08
    大道至简第五章读后感
    加密算法
    程序从命令行接收多个数字,求和之后输出结果。
    用JAVA制作简单登录窗口
    进度条07
    冲刺07
    冲刺06
    冲刺05
  • 原文地址:https://www.cnblogs.com/ssfzmfy/p/4260220.html
Copyright © 2011-2022 走看看