参考答案和解析
正确答案:B
解析:本程序的执行顺序如下:(1)x=6.5,x值为6.5;(2)c*=x,即c=c*x,c值为65;(3)f/=c,即f=f/c,f值为1.538;(4)a=f,因a为整型变量,故只存储f值的整数部分1;输出f值时,因限定其值域宽为3,小数位为1,故输出1.5。
更多“有以下程序 main( ) { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); p ”相关问题
  • 第1题:

    有以下程序: main() { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d %d %3.1f %3.1f\n",a,c,f,x); } 程序运行后的输出结果是( )。

    A.1 65 1 6.5

    B.1 65 1.5 6.5

    C.1 65 1.0 6.5

    D.2 65 1.5 6.5


    正确答案:B
    解析:主函数中先定义了一个整型变量a,一个字符变量c并赋初值10,一个浮点型变量f并赋初值100.00和一个double型x,接着执行a=f/=c*=(x=6.5),该语句从右向左计算,先把6.5赋值给x(该括号表达式的值也为6.5),此时x的值变为6.5,然后执行c*=(x=6.5)相当于执行c=c*(x=6.5),此时c的值为65,接着向左执行f/c*=(x=6.5),语句相当于执行f=f/c,所以f的值为 100/65≈1.538。接着向最右边执行“a=f”,由于a是整型变量,所以a最后去f的整数部分为1。程序最后输出的a、c、f和x的值(f和x只保留小数点后面1位)分别为1、65、1.5、6.5。所以,4个选项中选项B符合题意。

  • 第2题:

    有以下程序: int*f(int *x,int *y) {if(*x<*y)return x; else return y; } main() { int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=f(p,q); printf("%d,%d,%d\n",*p,*q,*r); } 程序运行后输出结果是______。

    A.7,8,8

    B.7,8,7

    C.8,7,7

    D.8,7,8


    正确答案:B
    解析:f函数的功能是返回地址为x,y的两个数中值较的数的地址,本题输出结果是7,8,7。

  • 第3题:

    有以下程序:includemain(){int a;char c=10; float f=100.0;double x; a=f/=c*=(x=6.5

    有以下程序: #include <stdio.h> main() { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d%d%3.1f%3.1f\n",a,c,f,x); } 程序运行后的输出结果是( )。

    A.1 65 1 6.5

    B.1 65 1.5 6.5

    C.1 65 1.0 6.5

    D.2 65 1.5 6.5


    正确答案:B
    解析:本题考查复合赋值运算符。本题中先计算c的值,c=c*(x=6.5)=10*6.5=65;然后计算f的值,f=f/c=100.0/65=1.538462;最后计算a的值,a=f,a取f的整数部分,即为1。

  • 第4题:

    有以下程序: main() { int a; char c=10; float f=100.0;double x; a=f/=c*=(x=6.5); printf("%d%d%3.1f%3.1f\n",a,c,f,x); } 程序运行后的输出结果是 ______ 。

    A.1 65 1 6.5

    B.1 65 1.5 6.5

    C.1 65 1.0 6.5

    D.2 65 1.5 6.5


    正确答案:B
    解析:本题求解步骤如下:先进行,"c*=(x=6.5)”的运算,由于x=6.5,表达式相当于c=c*6.5=10*6.5=65。再进行"f/=65"的运算,相当于f=f/65=100.0/65,由于f为单精度实型变量,因此f的值约为1.538462。然后进行'a=f'的运算,由于a为整型变量,因此a=1。最后将各个变量的值按照printf中的格式要求输出到屏幕,注意变量f,x按照”%3.1f'格式输出,即只输出一位小数。

  • 第5题:

    以下程序的输出结果是include "stdio.h"int *f(int *x,int *y){ if(*x<*y) return x; else return y;}main(){ int a=7,b=8, *p,*q,*r ; p=&a; q=&b; r= f(p,q); printf("%d,%d,%d\n",*p,*q,*r);}


    正确答案:7,8,7。
    在本题中,程序首先定义了一个函数f,其结构是int *f(int *x,int *y),这个结构说明函数f的返回类型是指针型,函数f的两个变量分别是指针变量x和y,从程序中我们很容易看出,这个函数的作用是返回形参中值较小的指针值(即地址值),返回的是指针型的结果。
    在主函数中,首先定义了两个整型变量,分别赋初值7和8,并定义了三个指针型变量,接着将指针变量p和q分别指向变量a和b,然后调用函数f,参数分别为指针变量p和q,很显然,p所指向的值小于q所指向的值,那么返回指针变量p的地址值给指针变量r,由于指针变量P的地址值是变量a存储单元的地址值,也就是说,指针变量r指向变量a,因此,最后程序的输出结果是7,8,7。