| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1008 人关注过本帖
标题:[求助]函数调用中返回值怎么不变
只看楼主 加入收藏
qiqi
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-20
收藏
 问题点数:0 回复次数:7 
[求助]函数调用中返回值怎么不变
int cz(char v[],int n)
{int r[3]={0,0,0};
int k;
for(k=0;k<M;k++)
{if(v[k]>='a'&&v[k]<='z')r[0]++;
if(v[k]>='A'&&v[k]<='Z')r[1]++;
if(v[k]>='0'&&v[k]<='9')r[2]++;
}
return(r[n]);
}
返回的是大小写字母与数字出现的次数
但是结果不是预期的,而是一些不变的值
麻烦各位帮我解释一下,谢谢了
搜索更多相关主题的帖子: 返回值 函数 数字 int 
2006-04-20 23:35
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
先看你的n的值 是否使数组引用越界
即使正确那也只能返回某种类型的出现次数。


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

应该不是,for语句中n由0到2,我得到的结果是如果输入全是a的话,是23,5,4.如果输入全是数字,是17,5,4.

2006-04-21 00:12
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
以下是引用qiqi在2006-4-20 23:35:00的发言:
int cz(char v[],int n)
{int r[3]={0,0,0};
int k;
for(k=0;k<M;k++)
{if(v[k]>='a'&&v[k]<='z')r[0]++;
if(v[k]>='A'&&v[k]<='Z')r[1]++;
if(v[k]>='0'&&v[k]<='9')r[2]++;
}
return(r[n]);//n的大小编译器怎么识别?!n的值未定义!
}
返回的是大小写字母与数字出现的次数
但是结果不是预期的,而是一些不变的值
麻烦各位帮我解释一下,谢谢了


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

C/C++/C#代码交流区
更多资源请到 www.8680.cc
2006-04-21 12:27
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用qiqi在2006-4-20 23:35:00的发言:
void cz(char v[],int n,int *p)
{
int k;
for(k=0;k<M;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 a[3];
cz(v,n,a);
即可。


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

谢谢6楼,我用您的方法试了一下,但 if(v[k]>='A'&&v[k]<='Z') *(p+1)++;这一句话编译时说有错误:需要逻辑0或非0在 cz 函数中,下一句话也是同样的错误。我不懂这句话错在哪里了,还请帮忙看一下吧
也谢谢4楼,我在主函数里用for语句使n从0到2,目的是一个个输出数组元素值

2006-04-21 22:29
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include<stdio.h>
#include<string.h>
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))++;
}
}
main()
{

char v[53]={'\0'};
int a[3]={0},i;
gets(v);
cz(v,53,a);
for(i=0;i<3;i++)
{
printf("%d\n",a[i]);
}
getch();
}


对不礼貌的女生收钱......
2006-04-22 17:27
快速回复:[求助]函数调用中返回值怎么不变
数据加载中...
 
   



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

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