标题:初学者 求助:将输入的三个字符转换为大写字符
只看楼主
mqhz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-31
结帖率:100%
已结贴  问题点数:5 回复次数:8 
初学者 求助:将输入的三个字符转换为大写字符
我用的是dev-c++,程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define N 3
int main(int argc, char *argv[])
{
    int i;
    char c;
    printf("请输入%d个字符:\n", N);
    for(i=1; i<N; i++)
    {
             scanf("%c", &c);
             if(islower(c))
              c-=32;
             printf("%c\t", c);
             }
    printf("\n");
  system("PAUSE");   
  return 0;
}
程序运行结果为:
输入a b c
输出为:
A           B
 
请按任意键继续。。。。
请高手指点为什么只能输出一个大写字母。非常感谢!
搜索更多相关主题的帖子: include system return 
2011-10-26 20:06
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:1 
回复 楼主 mqhz
for循环从0开始

总有那身价贱的人给作业贴回复完整的代码
2011-10-26 20:17
mqhz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-31
得分:0 
回复 2楼 embed_xuel
楼上兄弟,i=0之后,输入不变。设定的N值为3应该是循环3次,输出3次,不知道为什么只输出2个字符。请帮忙分析一下。谢谢了
2011-10-26 21:17
jerry52400
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2011-10-26
得分:1 
一次输入一个字符,就会输出一个字符。第三次你输入c,输出结果是什么啊
2011-10-26 21:22
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
得分:2 
回复 3楼 mqhz
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define N 3
int main(int argc, char *argv[])
{
    int i;
    char c;
    printf("请输入%d个字符:\n", N);
    for(i=0; i<N; i++)
    {
        scanf("%c", &c);
        printf("输入的是:%c,ASCII:%d\n", c,c);//
        if(islower(c))
            c-=32;
        printf("变化后是:%c,ASCII:%d\n", c,c);
    }
    printf("\n");
    system("PAUSE");  
    return 0;
}
你输入:a b c回车以后,得到:
输入的是:a,ASCII:97
变化后是:A,ASCII:65
输入的是: ,ASCII:32
变化后是: ,ASCII:32
输入的是:b,ASCII:98
变化后是:B,ASCII:66
造成上述结果的原因是,输入:a b c回车时,' '(空格符)保存在缓冲区内,scanf("%c",&c);第2次读取的是' '(空格符)
解决的办法:
1.输入abc回车
2.一次输入一个字符
3.
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define N 3
int main(int argc, char *argv[])
{
    int i;
    char c;
    printf("请输入%d个字符:\n", N);
    for(i=0; i<N; i++)
    {
        scanf("%c", &c);
        fflush(stdin);///////功能:清除一个流
        printf("输入的是:%c,ASCII:%d\n", c,c);//
        if(islower(c))
            c-=32;
        printf("变化后是:%c,ASCII:%d\n", c,c);
    }
    printf("\n");
    system("PAUSE");  
    return 0;
}
2011-10-26 21:40
mqhz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-31
得分:0 
回复 4楼 jerry52400
第一次输入a, 回车,输出A
第二次输入b,回车,输出B,换行,请按任意键继续。。。
不能第三次输入啊
2011-10-26 21:42
gchs2012
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2011-10-26
得分:1 
你把for循环里的i=1改为i=0,运行程序后输入3个小写字母格式是:abc,字母之间不能有空格就OK了!
2011-10-26 21:45
mqhz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-31
得分:0 
回复 5楼 laznrbfe
多谢!多谢
2011-10-26 21:48
mqhz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-31
得分:0 
回复 7楼 gchs2012
多谢兄弟,我怎么这么笨啊!!
2011-10-26 21:49



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




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

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