| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3768 人关注过本帖
标题:关于统计一个字符串里面0~9数字出现的个数的fun函数不知道哪里出错了
只看楼主 加入收藏
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:12 
关于统计一个字符串里面0~9数字出现的个数的fun函数不知道哪里出错了
程序代码:
#include<string.h>
void fun(char* str,int num[10],int n)
{
    int i,j,k=0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<n;j++)
        if(num[i]==*(str+j))
        {
            k++;
        }
        num[i]=k;
    }
    for(i=0;i<10;i++)
    {
        printf("%d ",num[i]);
    }
}
void main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9},n;
    char str1[100],*str2;
    str2=str1;
    printf("Input the array:\n");
    gets(str1);
    n=strlen(str1);
    fun(str2,a,n);
    //printf("%d ",fun(str2,a,n));

}

   为什么输出的结果全是0?fun函数是让一个字符串里面的数字统计各出现了几次
然后再a数组里对应输出出现的次数。比如说“33sd3er2s2”这个字符串,输出结果应
该是“0023000000”。但我的程序哪里错了输出的全是“0000000000”。

搜索更多相关主题的帖子: 字符串 统计 
2016-08-24 13:50
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
在线等结果,进来的冒个泡哈,别潜水~
2016-08-24 13:51
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
对了,忘复制#include<string.h>
2016-08-24 13:53
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
#include<stdio.h>
2016-08-24 13:54
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:5 
程序代码:
#include<string.h>
#include<stdio.h>
void fun(char* str,int num[10],int n)    //此处num[10] 可以改为 int *num;  不过也不影响
{
    int i,j,k=0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<n;j++)    //另外,这里最好把 {}加上
        if(num[i]==*(str+j))    // *(str + j) 这是一个字符, 你用数字跟字符比较肯定是不会相等的。
        {
            k++;
        }
        num[i]=k;
    }
    for(i=0;i<10;i++)
    {
        printf("%d ",num[i]);
    }
}
void main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9},n;
    char str1[100],*str2;
    str2=str1;
    printf("Input the array:\n");
    gets(str1);
    n=strlen(str1);
    fun(str2,a,n);
    //printf("%d ",fun(str2,a,n));

}


[此贴子已经被作者于2016-8-24 14:11编辑过]

2016-08-24 14:03
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
程序代码:
#include<string.h>
#include<stdio.h> 
void fun(char* str, int num[], int n)
{
    int i, j, k = 0;
    int c;
    for (i = 0; i<10; i++)
    {
        k = 0;
        for (j = 0; j < n; j++)
        {
            c = *(str + j) - '0';
            if (i == c)
            {
                k++;
            }
        }
        num[i] = k;
    }
    for (i = 0; i<10; i++)
    {
        printf("%d ", num[i]);
    }
}
void main()
{
    int a[10] = { 0}, n;
    char str1[100], *str2;
    str2 = str1;
    printf("Input the array:\n");
    gets(str1);
    n = strlen(str1);
    fun(str2, a, n);
    //printf("%d ",fun(str2,a,n));

}
2016-08-24 14:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <string.h>

void fun( const char* str, unsigned num[static 10] )
{
    memset( num, 0, 10*sizeof(*num) );
    for( ; *str; ++str )
    {
        if( *str>='0' && *str<='9' )
            ++num[*str-'0'];
    }
}

int main( void )
{
    char str[100];
    puts( "Input the array:" );
    gets( str ); // gets已经被C标准废弃掉了

    unsigned a[10];
    fun( str, a );
    for( size_t i=0; i!=10; ++i )
        printf( "%u ", a[i] );

    return 0;
}
2016-08-24 14:11
cppyjou
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:16
注 册:2016-8-4
收藏
得分:0 
6楼正解,哈哈
2016-08-24 14:30
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
回复 4楼 弟大勿勃
对啊,我这个撒比!
2016-08-24 14:40
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:5 
#include<string.h>
#include <stdio.h>
void fun(char* str,int num[10],int n)
 {
     int i=0,j,k=0;
         for(j=0;j<n;j++)
         if(*(str+j)>='0'&&*(str+j)<='9')
         {
             k++;
             num[i]=*(str+j);
             i++;
         }
         printf("共有%d个数\n",k);
         num[i]='\0';
         i=0;
         printf("它们是:\n");
     while(num[i]!='\0')
     {
         printf("%c ",num[i]);
         i++;
     }
 }
 main()
 {
     int a[10]={0,1,2,3,4,5,6,7,8,9};
     int n;
     char str1[100],*str2;
     str2=str1;
     printf("Input the array:\n");
     gets(str1);
     n=strlen(str1);
     fun(str2,a,n);
     //printf("%d ",fun(str2,a,n));

 }
2016-08-24 14:59
快速回复:关于统计一个字符串里面0~9数字出现的个数的fun函数不知道哪里出错了
数据加载中...
 
   



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

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