标题:请大家帮我修改一下这个程序
只看楼主
陈凤伟
Rank: 1
来 自:四川
等 级:新手上路
帖 子:23
专家分:2
注 册:2011-5-26
结帖率:100%
 问题点数:0 回复次数:6 
请大家帮我修改一下这个程序
请编写一个函数fun, 其功能是: 将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母, 则不转换)。 例如, 若输入"abc4EFg",则应输出"aBc4EFg"。
#include<stdio.h>
#define m 20
void fun(char ss[])
{
    int i;
    for(i=0;i<m;i++)
    if(i/2!=0&&97<=ss[i]<=122) ss[i]=ss[i]-32;
    ss[i]='\0';
    return;
}
int main()
{
    char arr[m];
    printf("please input a string::\n");
    gets(arr);
    fun(arr);
    printf("the result is::\n");
    puts(arr);
    return 0;
}
搜索更多相关主题的帖子: please return 字符串 
2011-06-17 16:50
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
程序代码:
void fun (char *str) {
        int i=1;
        while(*(str+i)) {
                if(*(str+i)>='a'&&*(str+i)<='z') *(str+i)-=0x20;
                i+=2;
        }
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-17 17:05
finalken
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:94
注 册:2007-10-2
得分:0 
if(i/2!=0&&97<=ss[i]<=122) ss[i]=ss[i]-32;
这里写错了

for(i=0;i<m;i++)
还有这里需要用到字符串实际长度,应该改成
for(i=0;ss[i]!='\0';i++)
2011-06-17 17:22
陈凤伟
Rank: 1
来 自:四川
等 级:新手上路
帖 子:23
专家分:2
注 册:2011-5-26
得分:0 
回复 楼主 陈凤伟
*(str+i)-=0x20;
 不好意思,我是初学者。请问*(str+i)-=0x20;
 表示什么意思???
2011-06-17 17:53
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
以下是引用陈凤伟在2011-6-17 17:53:35的发言:

*(str+i)-=0x20;
 不好意思,我是初学者。请问*(str+i)-=0x20;
 表示什么意思???

大写字母和小写字母的十六进制分别是:41~5AH,61~7AH,即他们之间差20H,所以,小变大就减20H,大变小酒加20H

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-17 19:17
XD_cpp
Rank: 1
来 自:广东
等 级:新手上路
帖 子:8
专家分:1
注 册:2011-6-17
得分:0 
回复 5楼 ansic
for(i=0;i<m;i++)
if( i/2 !=0&&97<=ss[i]<=122)
ss[i]=ss[i]-32;
可改为:
for(i=0;ss[i]!='\0';i++)
if(i%2!=0&&'a'<=ss[i]&&ss<='z')
ss[i]=ss[i]-32;
*(str+i)-=0x20;等价于str[i]-=32;
(我也是新手!)
2011-06-17 20:01
夜叶
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:189
注 册:2011-5-7
得分:0 
2楼正解,支持
2011-06-17 20:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-343199-1-1.html




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

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