C语言问题有好几道,请大家耐心解答

第一题:在程序运行时输入a,b的值为1,2,运行结果为()

main()
{
int a,b,t=0;
scanf("%d%d",&a,&b);
if(a<=2){t=a;a=b;b=t;}
printf("%d,%d\n",a,b);
}
第二题:读程序写结果
main()
{
int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d %d",x--,y);
}
第三题:读程序写结果
main()
{
int i=2,p;
p=f(i,i+1);
printf("%d",p);
}
int f(int a,int b)
{
int c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}
第四题:下列程序在运行时输入B,结果为?
main()
{
grade=getchar();
switch(grade)
{
case'A':printf("85~100\n");break;
case'B':printf("70~84\n");bread;
case'C':printf("60~69\n");break;
case'D':printf("<60\n");break;
default:printf("error!\n");
}
}
阅读程序写出结果。
main()
{
int i=1,sum=0;
while(i<5)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
}
第六题:以下程序运行后的记过是?
main()
{
float s,x=2.5,y=4.8;
int a=7,b=4;
s=x+a%3*(int)(x+y)%2/b;
printf("%f\n",s);
}

1 结果:2,1
注意a是从0开始的,交换3次。

2 结果:
10 109 1
for语句的执行过程是:先赋初值,再判断,表达式为真执行循环体,再执行累加部分,所以先输出x(10),再执行后缀--,x值为9,此时还未执行y=++i的操作,故输出的y值为10。然后执行累加部分y=++i,y的值为1,再输出x(9),再执行后缀--,x值为8,累加,y的值为2,判断,不满足要求,跳出。

3 结果:-1
调用函数,形参a=i=2,形参b=i+1=3,执行函数体,a<b,c=-1,返回-1。输出p(-1)。

4 结果:70~84
第3行改为char grade=getchar();
第7行改为case'B':printf("70~84\n");break;
输入B后进入switch语句逐一判断,到第7行符合,输出 70~84,break(跳出switch语句)。

5 结果:10
sum=1,i=2,判断,符合,继续;
sum=1+2=3,i=3,判断,符合,继续;
sum=3+3=6,i=4,判断,符合,继续;
sum=6+4=10,i+5,判断,不符合,跳出。

6 结果:2.500000
a模3等于1,x+y=7.3,强制转换成int型后为7,模2等于1,注意此时a%3,(int)(x+y)%2,b都是int型数据,得到的运算结果也是int型的,即1*1/4,结果为0,最后的结果为2.5,即x,默认情况下float数据输出保留6位小数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-03-10
1: 答案:2,1 先将A值赋给T,使T=1,后B赋值给A,A=2,最后B赋值给T,T=1
2: 答案:10 109 1 FOR还不懂
3: 答案:-1 是一个比较大小的问题,调用自定义函数F ,底下的INT F是对发函数的声明,F括号里的为他的参数,当A>B C=1 A=B C=0 其他情况=-1 这里A<B属于第3种情况所以=-1
4:Switch的应用 输入A~D任何一个字母,输出CASE对应字母旁的数据.除此之外的输入程序给出默认的ERROR输出
5: 答案:10 1~5的自加. 很容易,这个都不会......你是学C的吗?
6: 答案:2.500000 只看表达式部分,INT定义(X+Y)为整形,计算自左向右,%为求余,/为除,除得的结果小数部分要舍去,最后输出格式F% 按FLOAT形输出,FLOAT形默认有效数字7位,所以在结果2.5后加5个0

都是挺基本的,虽然没学到FOR....自己看书吧
第2个回答  2007-03-10
第四题出错了吧??那题应该是评分A,B级的,连有一一个break都写错了!那些题目随便打开个连件运行都知道答案啊!用不用全部在这里找答案啊??
相似回答