1.设有 float x=16.8,y=18.6; 则(int) (x+y)的结果为.

问题描述:

1.设有 float x=16.8,y=18.6; 则(int) (x+y)的结果为.
A) 34 B) 35 C) 36 D) 37
2.以下选项中不是C语句的是 .
A) { i=10; printf(“%d\n”,i); } B) max=m>n?m :n;
C) a=8,c=18 D) ;
3.设有:int a[10],i=5;以下对数组元素的引用,不正常的是____.
A) a[9] B) a[0] C) a[i] D) a[i+5]
4下列程序的功能是根据如下公式求s的值,直到最后一项的值小于10-5为止.
s=1+1/3 +1/5 +1/7+…+1/ (2m+1)
请改正程序中的错误,使它能得出正确的结果.
#include
void main( )
{
int n=0;
double t,s; /* error 1*/
do
{n=n+1;
t=1/ (2n+1); /* error 2*/
s=s+t;
}while(t0)fun(k-1);
printf(“ %d”,k);
1b 2c 3d
4 /*error1*/ s=0,t=0;
/*error2*/ t=1/(2*n+1); n=n+1;
/*error3*/ t>0.00001
5答案给的是01234 但是我只得到了0 求讲解下

1.浮点数加了之后取整(int)(x+y)=(int)(16.8+18.6)=(int)(35.2)=35
2.a.其中的分号应当用西文的,就像printf句后的那个,用中文分号错误(可能是录入错误?)
b.可能也是分号问题,排除了中文分号则正确
c.逗号不能分隔语句
d.中文分号不是合法语句,若为西文的则为正确的空语句
3.d.超出数组长度
4.s没有赋初值应写作double t,s=0;
t=1/(2n+1);应写做t=1/(2*n+1); n先加第一项就没有了,所以要后加
结束条件要判断t的精度达到一个小数,而t是不断减小的数据,应当写大于精度要求继续循环,一旦小于精度要求停止循环.
5.
[fun(4)]
if ( 4>0 ) fun(4-1)==>fun(3)
[fun(3)]
if ( 3>0 ) fun(2)
[fun(2)]
if ( 2>0 ) fun(1)
[fun(1)]
if ( 1>0 ) fun(0)
[fun(0)]
0不大于0,显示" 0",当前显示" 0",返回
回到fun(1)调用,接着执行printf,当前显示" 0 1"
回到fun(2)调用,接着执行printf,当前显示" 0 1 2"
回到fun(3)调用,接着执行printf,当前显示" 0 1 3"
回到fun(4)调用,接着执行printf,当前显示" 0 1 3 4"