| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3876 人关注过本帖
标题:这个程序底错在哪里????
只看楼主 加入收藏
异ren
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-2-2
结帖率:50%
收藏
 问题点数:0 回复次数:14 
这个程序底错在哪里????

# include <iostream>
using namespace std;


void fun(char* ss)
{
int i,n;
n=strlen(ss);
for(i=1;i<n;i+=2)
if(ss[i]='a'&&ss[i]<='z')
ss[i]=ss[i]-32;
else
    ss[i]=ss[i];
cout<<ss;
}
int main()
{
    fun("abc4EFg");

    return 0;
}
搜索更多相关主题的帖子: include 
2016-03-20 13:26
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
数组做参数时传入的是指针,你用strlen()求不出原数组的长度,而只是char型变量的长度,想要用fun函数,就要修改原型,把数组长度也传递进fun函数
2016-03-20 14:42
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
声明数组后,数组名就是一个指针,数组的下标是告诉你申请的内存块大小,要知道C和C++中是不会检查数组下标是否越界的,数组作参数时,就只是将数组名这个指针传进函数了,并没有将数组内容和大小传进去。
2016-03-20 14:49
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
楼主最大的问题是没有把代码的目的及代码运行时错误的表现説清楚,贴出代码问哪错了,这是叫人猜谜。
收到的鲜花
  • rjsp2016-03-22 08:51 送鲜花  10朵   附言:我很赞同
2016-03-20 17:25
异ren
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-2-2
收藏
得分:0 
回复 3楼 wengbin
那应该么怎么改呢?我改了一下,还是不行.........
2016-03-21 18:46
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
void fun(char* ss,const int n)
{
int i;
for(i=1;i<n;i+=2)
if(ss[i]='a'&&ss[i]<='z'){
ss[i]=ss[i]-32;
else
    ss[i]=ss[i];}
cout<<ss;
}
int main()
{
    fun("abc4EFg",7);

    return 0;
}
2016-03-21 21:16
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
回复 6楼 wengbin
strlen函数的使用并无不妥,如此改变代码不会对原码的问题有什么改变,其实楼主的心思很难猜。
2016-03-21 21:49
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
看那代码的意思是字符串的偶位字母变大写吧
2016-03-22 09:39
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:0 
程序代码:
# include <iostream>
#include <cstring>
using namespace std;


void fun(char* ss)
{
    int i=0,n=0;
    n=strlen(ss);
    for(i=1;i<n;i+=2)
    {
        if(ss[i]>='a'&&ss[i]<='z')ss[i]-=32;//你原码为的+32我不知道是什么意思,为了能跑出来,我变成了-,这样就是把偶数位处的字符小写变大写
    }
    cout<<ss;
}
int main()
{
    char a[]="abc4EFg";
    fun(a);
    //fun("abc4EFg");这种调用方式不行,因为没有传入一个可以用的行参....
    return 0;
}
2016-03-22 12:18
异ren
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-2-2
收藏
得分:0 
回复 7楼 jklqwe111
我错了,下次我会交代清楚地了
2016-03-24 00:00
快速回复:这个程序底错在哪里????
数据加载中...
 
   



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

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