计算机上机的一道编程题 产品那个

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:37:55
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].dm,sell[j].dm)>0)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
else if(strcmp(sell[i].dm,sell[j].dm)==0)
if(sell[i].je>sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}

这样子对不对~有的好象在第2个for下面到最后用{ }括起来,即
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
{ if(strcmp(sell[i].dm,sell[j].dm)>0)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
else if(strcmp(sell[i].dm,sell[j].dm)==0)
if(sell[i].je>sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
}
是不是不括也对呢???~~
可是我觉得 else if 完了本来就给执行 下面那句 即下面的if,我觉得这句子是连在一起的啊~~

不是我想那么想,是我觉得 for完了该执行下面的if,但if下面的又都包含在这个if内,所以我觉得下面虽然很长,但相当于一个句子啊~~`不对吗?~~~`

只是我上次考试抽的就是这个题,没写那个括号,但是没过~~这次抽的又是这个题,我老觉得不写括号和写括号一样,所以还没写~~
我不知道上次为什么没过~~

那我就不清楚了,反正你的是正确的,没有一点问题,只能祝你好运了

没有运行那就是没有输出结果,估计没多少分
上次肯定也是因为提交的时候也了问题,没有运行,当然就没有结果了,一般改卷的人都是先看答案的,答案不正确的一般都没戏,人太多了,没几个会去看你的程序的

你说的是对的,IF他不管有多长,他都是一个句子,即使他有更多的分支都是一样的.

是一样的,一个if语句以及他的分支属于一个语句,所以是一样的,以下是一个测试程序

#include<stdio.h>

int main()
{
int a=0,i;
for(i=0;i<1;i++)
if(a!=0)
printf("aa");
else
if(a==1)
printf("bb");
else
printf("cc");
return 0;
}

这两个程序的行为是不同,所以不等价。

第一个程序中,if(sell[i].je>sell[j].je) 这个if语句不在for循环中。
第二个程序中,if(sell[i].je>sell[j].je) 这个if语句也在for循环中。

*********************************************

你不是编译器,你的想法不代表编译器的动作,C语言中的for、if等语句的执行体只能用一条语句,如果实际操作中执行体语句大于一条,就要用大括号括起来。

你那两个都不完整,看看就知道哪里少了{}了。这个语言格式严格哪里能随便不要{},不然就运行出错的,去C++里运行一下就知道结果了。

{
int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j