| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1492 人关注过本帖
标题:统计字符数的小问题?
只看楼主 加入收藏
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
结帖率:96.15%
收藏
已结贴  问题点数:10 回复次数:9 
统计字符数的小问题?
编写一个程序,该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的十进制ASCII码。每行打印8个字符/编码对。建议:利用字符技术和模运算符(%)在每8个循环周期时打印一个换行符。
我编了以下程序,感觉错漏百出,请大神指点。
#include <stdio.h>
int main()
{
    char ch;
    int n_ch = 0;
    int n_enter;
    while((ch = getchar()) != '#')
    {
        n_ch++;
        n_enter = n_ch % 8;
    }
    printf("%s,%d", ch,ch);
    return 0;
}
搜索更多相关主题的帖子: include return 换行符 十进制 统计 
2016-08-05 13:52
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
程序代码:
#include <stdio.h>
int main()
{
    char ch;
    int n_ch = 0;
    int n_enter;
    while ((ch = getchar()) != '#')
    {    
        n_enter = n_ch % 8;
        if (n_enter == 0)
        {
            printf("\n");            //把回车打印出来
        }
        printf("%c,%d ", ch, ch);
        n_ch++;
    }
    
    return 0;
}
2016-08-05 13:59
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
为什么我只能读取大写字母?比方我打一行"i'm a writer." 打印出的字符都是大写字母配对的编码对。
ps:用的xcode软件
2016-08-05 14:26
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 2楼 grmmylbs
为什么我只能读取大写字母?比方我打一行"i'm a writer." 打印出的字符都是大写字母配对的编码对。
ps:用的xcode软件
2016-08-05 14:26
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
这不可能吧,你截图看看?
2016-08-05 14:32
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
我用的chrome不能截图。。。不过好像一直都是这样的,编译了好多次到读取小写字母打印出来就变成了大写字母。。
2016-08-05 14:37
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 5楼 grmmylbs
我用的chrome不能截图。。。不过好像一直都是这样的,编译了好多次到读取小写字母打印出来就变成了大写字母。。
2016-08-05 14:37
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 7楼 Eahonxu
你是不是记错了大写字母和小写字母对应的ascii码值啊,小写字母的ascii码要大于大写字母的ascii码值
2016-08-05 14:45
FQYB
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:43
专家分:130
注 册:2016-7-29
收藏
得分:0 
二楼代码没错啊,能输出小写ASCII码
#include <stdio.h>
int main()
{
    char ch;
    int n_ch = 0;
    int n_enter;
    while ((ch = getchar()) != '#')
    {  
        n_enter = n_ch % 8;
        if (n_enter == 0)
        {
            printf("\n");            //把回车打印出来
        }
        printf("%c,%d\n", ch, ch);
        n_ch++;
    }
  
    return 0;
}
操作系统>    Ubuntu 14.04
编译器>      gcc
运行截图>
图片附件: 游客没有浏览图片的权限,请 登录注册

2016-08-06 13:30
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
回复 2楼 grmmylbs
这个程序我改良了下,如下所示
#include <stdio.h>
#include <ctype.h>
#define STOP '#'
int main(void)
{
    char c;
    long n_chars = 0L;
    int o_chars = 0;
   
    printf("请输入一串字符: \n");
    while((c = getchar()) != STOP)
    {
        n_chars++;

        if(!isspace(c))
        {
            o_chars++;
            if(o_chars % 8 != 0)
                printf("%c,%d ", c, c);
            else
                printf("%c,%d\n", c, c);
        }
        
            
    }
    return 0;
}
这样一来可以避免换行字符的误读
2016-08-21 18:58
快速回复:统计字符数的小问题?
数据加载中...
 
   



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

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