| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12772 人关注过本帖
标题:一个把小写字母转换成大写字母的程序
只看楼主 加入收藏
明光
Rank: 1
来 自:江西
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-6-25
收藏
 问题点数:0 回复次数:16 
一个把小写字母转换成大写字母的程序
#include<stdio.h>
void chang(char x[],int length);
int main()
{
    char a[40];
    printf("请输入小写字母");
    gets(a);
    chang(a,39);
}

void chang(char x[],int length)
{
    int i;
    for (i=0;i<39;i++)
    {
        if (x[i]=='/0')
        continue;
        else
        printf("%c",x[i]-32);
    }
}
最后运行的时候比如输入abcd,程序会输出ABCD但后面还跟了一大串乱码,求原因
搜索更多相关主题的帖子: 字母 chang 
2015-06-27 13:38
明光
Rank: 1
来 自:江西
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-6-25
收藏
得分:0 
大神们都在吗休息吗??
2015-06-27 13:46
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
'\0'

梦想拥有一台龙芯3A-4000
2015-06-27 14:03
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
也可以考虑这样编写:

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    int c;

    while ((c = getchar()) != EOF)
            putchar(toupper(c));
    return 0;
}

[ 本帖最后由 ditg 于 2015-6-27 16:34 编辑 ]

梦想拥有一台龙芯3A-4000
2015-06-27 14:05
明光
Rank: 1
来 自:江西
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-6-25
收藏
得分:0 
谢谢你,但是改成/0后还是没多大变化,只是乱码少了一点。。。会不会是因为我在前面定义数组长度太长?我每次只打几个字母,有很多数组元素没用到
2015-06-27 14:14
明光
Rank: 1
来 自:江西
等 级:新手上路
帖 子:13
专家分:2
注 册:2015-6-25
收藏
得分:0 
那些没用到的数组是不是自动填入/0呢?
2015-06-27 14:17
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
那就退出循环呀,嘿嘿……

梦想拥有一台龙芯3A-4000
2015-06-27 14:20
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
/0改为\0,continue改为break

一片落叶掉进了回忆的流年。
2015-06-27 14:26
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
#include<stdio.h>
void chang(char x[],int length);
int main()
{
    char a[40];
    printf("请输入小写字母");
    gets(a);
    chang(a,39);
}

void chang(char x[],int length)
{
    int i;
    for (i=0;i<39;i++)
    {
        if (x[i]=='\0')
        continue;
        else
        printf("%c",x[i]-32);
    }
}
楼主的程序问题出在红色部分。
分析:
如果你输入"abcd",则数组x中的内容是"abcd\0......",省略号表示后面的内容是未知的。如你程序中那样判断,当"x[i]=='\0'"时结束本次循环,回去执行for语句中的表达式3,表达式2,此时i<39,所以继续执行循环中的语句,当执行到"x[i]=='\0'"时,因为前面说了,这里的内容是未知的,可能不是'\0',所以转去执行else中的显示语句,将后面未知的内容显示了出来,就是你所看到的乱码。可以改为:
if(x[i]=='\0')    break;
2015-06-27 14:33
风清云起
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2015-6-27
收藏
得分:0 
等一下,我试试
2015-06-27 14:37
快速回复:一个把小写字母转换成大写字母的程序
数据加载中...
 
   



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

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