| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1279 人关注过本帖
标题:[求助]if语句中变量总是只能得到最后一句话的值
只看楼主 加入收藏
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
 问题点数:0 回复次数:14 
[求助]if语句中变量总是只能得到最后一句话的值

int bj(int s[])
{int k,t=0,j=0;
for(k=0;k<2;k++)
{if(s[k]>=s[k+1])
{s[k+1]=s[k];
t++;
}
else j=++t;
return(j);
}
我开始写的是这个,要求知道k(本题中刻k=3)个数据中第几个是最大值,运行的结果一直是2,不管哪个最大
然后我把函数中的语句改成下面这个
int j=0;
if(s[0]>=s[1])s[1]=s[0];
else j=1;
if(s[1]<s[2])j=2;
return(j);
运行的结果仍然是2
把上面的j=2改成任意一个数值,出现的结果就是那个数值,前面的语句好像根本没用
麻烦各位帮我解释一下问题出在哪里,谢谢了

搜索更多相关主题的帖子: 变量 语句 
2006-04-20 22:26
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

[CODE]
int k,max,j=0;

max=s[0];
for(k=1;k<3;k++)
if(s[k]>max)
{
j=k;
max=s[k];
}
return j;

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-20 23:15
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
得分:0 

谢谢了,我明天去上机运行一下
但是我还是不知道我原来那个到底是错在哪里了,麻烦您给我解释一下好吗

2006-04-20 23:28
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
得分:0 
要得到的只是j的值,数组元素的值变化了没有关系
如果s[0]>=s[1],j的值为0,否则就为1;把大的值放在s[1]里,再比较s[1]与s[2],如果s[1]大,j值不变,s[2]大则为2.这其中j的值应该是这样的吧.难道是不管条件的是与否,后面的话还是要执行的吗?
2006-04-20 23:52
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

呵呵,你的思路也是对的。你的s[3]中肯定是第3个数据大了,返回它的下标2也正常


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-20 23:57
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
得分:0 

没,我直接输入s[]的值试的,是结果错了
那我明天还是两个都试一下吧
非常非常感谢您

2006-04-21 00:20
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

下次要问题,把程序全部发出来。你发一点没人知道你想干什么


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-21 01:45
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
得分:0 

还是不行啊,得出的结果仍然是2
下面是整个程序
#define M 100
int cz(char v[],int n)
{/*int r[3]={0,0,0};
int k;
for(k=0;k<M;k++)
{if(v[k]>=97&&v[k]<=122)r[0]++;
if(v[k]>=65&&v[k]<=90)r[1]++;
if(v[k]>=48&&v[k]<=57)r[2]++;
}*/
int r[3]={9,8,7};
return(r[n]);
}
int bj(int s[])
{int k,max,j=0;
max=s[0];
for(k=1;k<3;k++)
if(s[k]>max)
{j=k;
max=s[k];
}
return j;
}
main()
{char v[M];
int i,j;
int s[3];
for(i=0;i<M;i++)
scanf("%c",&v[i]);
for(i=0;i<3;i++)
{s[i]=cz(v[M],i);
printf("%d ",s[i]);
getch();
}
j=bj(s[3]);
printf("%d\n",j);
getch();
for(i=0;i<M;i++)
{if(j==0)
{if(v[i]>=97&&v[i]<=122)v[i]=219-v[i];
if(v[i]>=65&&v[i]<=90)v[i]=155-v[i];
if(v[i]>=48&&v[i]<=57)v[i]=105-v[i];
}
if(j==1)
{if(v[i]>=97&&v[i]<=122)v[i]=187-v[i];
else if(v[i]>=65&&v[i]<=90)v[i]=187-v[i];
else if(v[i]>=48&&v[i]<=56)v[i]++;
else if(v[i]==57)v[i]=48;
}
if(j==2)
{if(v[i]>=97&&v[i]<=122)v[i]=v[i]-32;
else if(v[i]>=65&&v[i]<=90)v[i]=v[i]+32;
else if(v[i]>=48&&v[i]<=55)v[i]=v[i]+2;
else if(v[i]==56)v[i]=48;
else if(v[i]==57)v[i]=49;
}
printf("%c",v[i]);
getch();
}
}

2006-04-21 22:01
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
代码很乱.这题不需要写这么多.好好再分析.我想主要是算法问题.

我的原则很简单:不做不喜欢的事!
2006-04-21 23:55
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
得分:0 

要做的是一个加密问题,最后面的是三个加密原则,判断条件是小写字母出现最多(为0),大写字母出现最多(为1),数字出现最多(2)。最开始的那个函数是查找次数(错了,但不知道错在哪里),第二个是比较大小(但返回的j值一直为2,也不知道错在哪里)

2006-04-22 01:01
快速回复:[求助]if语句中变量总是只能得到最后一句话的值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039426 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved