| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1365 人关注过本帖
标题:关于c primer plus,函数章节我自己编译了一个程序但是运行结果不对
只看楼主 加入收藏
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
关于c primer plus,函数章节我自己编译了一个程序但是运行结果不对
编写一个程序,使其从标准输入读取字符,直到遇到文件结尾。对于每个字符,程序需要检查并报告该字符是否是一个字母。如果是的话,程序还应报告该字母在字母表中的数值位置。例如,c和C的字母位置都是3。可以先实现这样一个函数:接受一个字符参数,如果该字符为字母则返回该字母的数值位置,否则返回-1。//这是题目
#include<stdio.h>

int letter(char *);

int main()
{
    char ch;
    printf("Input a char:");
    while(scanf("%c",&ch)!=EOF)
    {
        if(ch>='a'&&ch<='z')
        printf("%c is a letter.\n",ch);
        else if (ch>='A'&&ch<='Z')
        printf("%c is a letter.\n",ch);
        else printf("%c is not a letter.\n",ch);
        printf("the position of the char in ABC is: %d\n",ch,letter(&ch));
    }
    return 0;
}

int letter(char *ch)
{
    int num=-1;

    if(*ch>='a'&&*ch<='z')
    num=*ch-'a'+1;
    else if(*ch>='A'&&*ch<='Z')
    num=*ch-'A'+1;

    return num;
}
//这是我的code。
图片附件: 游客没有浏览图片的权限,请 登录注册
//这是运行结果
希望有大神指点
搜索更多相关主题的帖子: include letter 字母表 
2016-11-16 18:16
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
有大神帮忙不
2016-11-16 19:23
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:0 
哪里不对呢?可以再描述清楚点

~~~~~~我的明天我知道~~~。
2016-11-16 19:46
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:10 
是去掉空格对吧, 加一句        if(ch==' '||ch=='\n')  continue;
#include<stdio.h>
#include<string.h>
int letter(char *);

 int main()
 {
     char ch;
     printf("Input a char:");
     while(scanf("%c",&ch)!=EOF)
     {
     
                 if(ch==' '||ch=='\n')  continue;
         else if(ch>='a'&&ch<='z')
         printf("%c is a letter.\n",ch);
         else if (ch>='A'&&ch<='Z')
         printf("%c is a letter.\n",ch);
         else printf("%c is not a letter.\n",ch);
         printf("the position of the char in ABC is: %d\n",ch,letter(&ch));
     }
     return 0;
 }

 int letter(char *ch)
 {
     int num=-1;

     if(*ch>='a'&&*ch<='z')
     num=*ch-'a'+1;
     else if(*ch>='A'&&*ch<='Z')
     num=*ch-'A'+1;

     return num;
 }

[此贴子已经被作者于2016-11-16 20:18编辑过]


早知做人那么辛苦!  当初不应该下凡
2016-11-16 20:15
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:10 
#include<stdio.h>

int main()
{
    char ch;
    printf("Input a char:");
    while(scanf(" %c",&ch)!=EOF)
    {
        if(ch>='a'&&ch<='z')
        {
            printf("%c is a letter.\n",ch);
               printf("the position of the char in %c%c%c is: %d\n",34,ch,34,ch-'a'+1);
        }
        else if (ch>='A'&&ch<='Z')
        {
            printf("%c is a letter.\n",ch);
            printf("the position of the char in %c%c%c is: %d\n",34,ch,34,ch-'A'+1);
        }
        else printf("%c is not a letter.\n",ch);
        
    }
    return 0;
}
2016-11-16 20:31
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 3楼 xufan
显示的结果应该是显示字母在字母表中的排序,结果显示成在ascll表中的顺序了。而且,如果输入不是字母,返回值也不是-1.还莫名多了一个字符
2016-11-16 21:41
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 5楼 linlulu001
题目的要求是希望用函数来实现主体功能,我主要疑惑在于为什么我的返回值会是输入字符的ascll表的值
2016-11-16 21:46
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 4楼 炎天
多出一个字符的原因找出来了,谢谢,但还是想问一下,我的返回值还是ascll表的值,怎么让他的返回值变成在字母表中的排序,或不是字母的时候返回-1呢?
2016-11-16 21:51
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
你仔细看看我的输出,再对比下你的输出不就清楚了
2016-11-16 21:51
jdljy1997
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2016-11-16
收藏
得分:0 
回复 9楼 linlulu001
好的,谢谢啦
2016-11-16 21:52
快速回复:关于c primer plus,函数章节我自己编译了一个程序但是运行结果不对
数据加载中...
 
   



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

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