| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1278 人关注过本帖
标题:[求助]if语句中变量总是只能得到最后一句话的值
只看楼主 加入收藏
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用qiqi在2006-4-21 22:01:00的发言:

还是不行啊,得出的结果仍然是2
下面是整个程序
#define M 100
void cz(char v[],int n,int *p) /*整个函数有毛病,都改了*/
{
int k;
for(k=0;k<n;k++)
{ 
 if(v[k]>='a'&&v[k]<='z') (*p)++;    
if(v[k]>='A'&&v[k]<='Z') (*(p+1))++;
if(v[k]>='0'&&v[k]<='9') (*(p+2))++;
}
}

int bj(int s[],int n)
{int k,max,j=0;
max=s[0];
for(k=1;k<n;k++)
if(s[k]>max)
{j=k;
max=s[k];
}
return j;
}
main()
{char v[M]={'\0'}; /*不赋初值会是个严重的错误,它将使你cz()这个函数失效*/
int i,j;
int s[3];
gets(v);
cz(v,3,s);
for(i=0;i<3;i++)
{

printf("%d ",s[i]);
getch();
}
j=bj(s,3);
printf("%d\n",j);
getch();
for(i=0;i<M;i++) /*你确定没弄反for与if的顺序吗?这个我不知道,所以没帮你改*/
{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();
}
}

相当可怕的一个程序,你不说是加密程序,我会以为你在涂鸦!
呵呵,不是有意说你,而是希望你多学些C语法,避免在以后摔跟斗.
我只改了些,能不能通过,我不知道,你自己再好好琢磨琢磨。

[此贴子已经被作者于2006-4-23 20:44:29编辑过]


对不礼貌的女生收钱......
2006-04-22 18:53
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
得分:0 

谢谢11楼,我照您的方法运行了一下,那个比较的结果是对了,可是那个查找的结果是错的。
char v[M]={'\0'}; /*不赋初值会是个严重的错误,它将使你cz()这个函数失效*/
这个我不大懂,后面不是赋值了吗?
还有就是那个比较函数,我不懂我原来那个怎么会不来正确的值,也麻烦您帮我解释一下吧。
for与if的顺序应该没弄反,因为对应的结果没出错。

谢谢您帮我指正,我C语言数组和指针都没怎么学,所以有关这方面的语法错误很多,对您的直接说明我很感激。

2006-04-23 01:31
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用qiqi在2006-4-23 1:31:00的发言:

谢谢11楼,我照您的方法运行了一下,那个比较的结果是对了,可是那个查找的结果是错的。
char v[M]={'\0'}; /*不赋初值会是个严重的错误,它将使你cz()这个函数失效*/
这个我不大懂,后面不是赋值了吗?
还有就是那个比较函数,我不懂我原来那个怎么会不来正确的值,也麻烦您帮我解释一下吧。
for与if的顺序应该没弄反,因为对应的结果没出错。

谢谢您帮我指正,我C语言数组和指针都没怎么学,所以有关这方面的语法错误很多,对您的直接说明我很感激。

后面是赋值了没错,但并没有完全赋值呀,你如果没有初始化,那么一开始整个v[M]将是随机的。那么如果你输入的字符串长度小于M的话就会出现错误,因为cz()函数把整个v[M]的字符都计算进去了。后面的那些字符显然不是你想要的.所以要赋初值.
至于那个比较的函数,应该是没错的,至于为什么s[1]<s[2]总成立,估计也是因为你没赋初值引起的。


对不礼貌的女生收钱......
2006-04-23 14:18
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

我又重新编辑了一下,找了个错误,具体你要怎么加密,俺也不太明白


对不礼貌的女生收钱......
2006-04-23 20:47
gaobaoqiang
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-5-12
收藏
得分:0 

用第一个if语句套上第二个if语句 

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



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

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