C语言,帮忙找一下那里错了

对下述程序,( A)是正确的判断。

#include<stdio.h>
main()
{
int x,y;
scanf("%d,%d",&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf("%d,%d",x,y);

}
A有语法错误,不能通过编译

第1个回答  推荐于2017-10-19
if else结构有错误。如果不加大括号的时候,只能跟一句。你在if后面写了两句而没用大括号,相当于强行打断了if else结构。追问

知道了,这个 x=y;y=x;是什么意思

追答

如果用自然语言来描述这步操作的话,就是把x,y的值都统一为y的值。

追问

我也是这么想的,不过打3,4进去,答案是3,3

追答

你把if和else后面的语句都加上大括号了么?

追问

加了,是对的

追答

#include
main()
{
int x,y;
scanf("%d,%d",&x,&y);
if(x>y)
{x=y;y=x;}
else
{x++;y++;}
printf("%d,%d",x,y);

}
你把这段程序复制到编译器里,输入3,4,输出一定是4,5
如果你还有问题,就把你改的程序原样复制上来。

追问

是3,3啊

怎么变4,5了

追答

这是我执行的结果。你如果执意说是3,3的话,把代码原样发上来。否则这样说没意义。

如果你的问题已解决,请采纳。

本回答被提问者采纳
第2个回答  2015-11-17
if(x>y)
x=y;y=x;
else
x++;y++;
其中,
if(x>y)
x=y; //到这儿,if语句就是已经结束了。
y=x; //这一句是无条件执行的
else //这里,就成了没有 if 的else ,所以就是语法错误
x++;y++;追问

知道了,这个是什么意思 x=y;y=x;

追答

这个是随便写的,没有意义。
x=y;后,y=x;就是多余的了。

本回答被网友采纳
第3个回答  2015-11-17

if else 要加大括号

#include<stdio.h>
main()
{
        int x,y;
        scanf("%d,%d",&x,&y);
        if(x>y){ 
                x=y;y=x;
        }
        else{
                x++;y++;
        }
                printf("%d,%d",x,y);
}

追问

知道了, x=y;y=x;是什么意思

追答

把y的值赋给x,然后把x的值赋给y。

第4个回答  2015-11-17
if中的语句体要用花括号括起来,else中的也一样。追问

不下心发了两遍,这个我知道了,能不能解释一下x=y,y=x这两条语句是这两个数互换吗?

追答

x=y,y=x根本就不能对x与y进行互换,要交换两个数,需要用到第三个数,就好比要交换两个杯子里面的水,要用第三个杯子一样。以下是交换代码片断,假设x与y的值已经输入了:
int x,y,temp;
temp=x;
x=y;
y=temp;

追问

如果x为3,y为4的话,答案应该是什么,这么看

追答

如果代码改成如下:
#include
main()
{
int x,y;
scanf("%d,%d",&x,&y);
if(x>y)
{x=y;y=x;
else
{
x++;y++;}
printf("%d,%d",x,y);
}

x=3,y=4,则x=4,y=4
如果代码改成如下:
#include
main()
{
int x,y;
scanf("%d,%d",&x,&y);
if(x>y)
{x=y;y=x;
else
x++;y++;
printf("%d,%d",x,y);
}
x=3,y=4,则x=4,y=5

追问

你第二个缺了个大括号,是不是想加在y++后面的

不对,加有y=x后面吧

追答

if后面一定要大括号,否则else无法配对,语法错误,else后面可以有大括号,也可以没有大括号,有没有大括号,x与y都是加1,即x=4,y=5

相似回答