| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 455 人关注过本帖
标题:自己写的程序,统计输入字符串中的字母数,出问题搞不定了。。。
只看楼主 加入收藏
g540203430
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-12-2
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
自己写的程序,统计输入字符串中的字母数,出问题搞不定了。。。
不管输入的是什么,输出都是0个。。。

程序代码:
#include<stdio.h>
#include<string.h>
#define N 26
void main()
{
    int b;
    int i,j,n;
    char a[200];
    printf("请输入英文文字");
    scanf("%s",a);
    b=strlen(a);
    for(i=0;i<N;i++)
    {
        n=0;
        for(j=0;j<b;j++)
        {
            if(a[j]=='65+i'||a[i]=='97+i')
                n++;
        }
    printf("%c有%d个\n",65+i,n);
    }
}
搜索更多相关主题的帖子: 字符串 
2012-12-10 19:32
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:5 
我有个建议:
楼主按自己的思路一步一步来,别组合省略语句。

WE GO
2012-12-10 19:40
hwf214685147
Rank: 2
等 级:论坛游民
帖 子:70
专家分:94
注 册:2011-9-14
收藏
得分:15 
这里有问题 if(a[j]=='65+i'||a[i]=='97+i')  '65+i'和‘97+i’是字符不是数?转化有问题,应该改成65+i和97+i,而且你这样写得不到你想要的结果!
2012-12-10 19:57
麦香
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:65
专家分:163
注 册:2011-10-18
收藏
得分:0 
程序代码:
for(j=0;j<b;j++)
        {
            if(a[j]==(65+i)||a[i]==(97+i))//实际比较的是ASCII,你的'65+i',假设i = 10,'65+i' 和'75' 是一样的,这样表示75 而不是K
                n++;
        }

你们要进窄门,因为引向灭亡的门是宽的,路是大的,进去的人也多。
2012-12-10 20:00
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
65+i是一个字符串,不是字符

这个问题比你想象的复杂一点

可以先将它们分割成单词再逐个比较

也可以用if语句检查6或9开头的字符
不过用第一种有利于实践,而第二种只是针对性的而已
我就选第一种来做了啊:
程序代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

#define SIZE 100

char *get_word(char const buffer[]);  /*得出buffer中的每个单词*/
int i = 0;

int main(void)
{
    char buffer[SIZE];
    int count = 0;
    char *temp =NULL;

    fgets(buffer, SIZE, stdin);
   
    /*分割*/
    while(buffer[i] != '\n')
    {
        temp = get_word(buffer);

        if(strcmp(temp ,"65+i") == 0 ||
            strcmp(temp ,"97+i") == 0)
        count++;

        free(temp);
        temp = NULL;
    }
    /*Output*/
    printf("\n\n\"%s\" and \"%s\" :%2d\n\n","65+i","97+i",count);
}

char *get_word(char const buffer[])
{
    char *temp =(char*)malloc(SIZE);
    int count = 0;

    for(;;)
    {
        if(isspace(buffer[i++]))
            continue;
       
        i--;
        while(!isspace(buffer[i]))
            temp[count++] = buffer [i++];

        temp[count] = '\0';
        return temp;
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册



I have not failed completely
2012-12-10 20:38
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
神马?!已经结了?
我编的太慢了...

I have not failed completely
2012-12-10 20:40
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用神龙赖了在2012-12-10 20:40:47的发言:

神马?!已经结了?
我编的太慢了...
不会是为了分 而回复网友的问题吧

DO IT YOURSELF !
2012-12-10 20:43
无重量空气
Rank: 2
等 级:论坛游民
帖 子:36
专家分:36
注 册:2012-12-5
收藏
得分:0 
#include<stdio.h>
 #include<string.h>
 #define N 26
 void main()
 {
     int b;
     int i,j,n;
     char r='a',t='A';
     char a[200];
     printf("请输入英文文字");
     scanf("%s",a);
     b=strlen(a);
     for(i=0;i<N;i++)
     {
         n=0;
         for(j=0;j<b;j++)
         {
             if(a[j]==r+i||a[i]==t+i)
                 n++;
         }
     printf("%c有%d个\n",65+i,n);
     }
 }
改了下!!
2012-12-10 21:04
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
回复 7楼 wp231957
那倒不是,其实我来解决问题也是为了锻炼自己
只是刷分的话拿个马甲就行了,只是那样太肤浅
不过编的很辛苦诶...总还是希望点犒劳吧...

I have not failed completely
2012-12-10 22:44
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
收藏
得分:0 

路过
2012-12-10 22:50
快速回复:自己写的程序,统计输入字符串中的字母数,出问题搞不定了。。。
数据加载中...
 
   



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

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