首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言有关问题求解

2013-06-25 
C语言问题求解完成函数fun(char *s,int a【】),其功能是把s中的数字转换成数字存储在a【】中,然后返回转换的个

C语言问题求解
完成函数fun(char *s,int a【】),其功能是把s中的数字转换成数字存储在a【】中,然后返回转换的个数。
例如:s=“123abcd4567”;
  则: a【】中存储1234567
   返回:7 C
[解决办法]
都不动手试一下的吗, 还是自己想想算法, 然后写出程序有问题, 再来问大家比较好吧, 不然你是不容易进步的.
[解决办法]
1楼说的有理,论坛的作用是帮助你成长的。
下面程序仅供参考:


#include <iostream>
using namespace std;

int fun(char *s, int a[])
{
    int j = 0;
    char cval = s[j];
    int i = 0;
    while(cval != '\0')
    {
        if(cval >= '0' && cval <= '9')
        {
            a[i] = cval - '0';
            i++;        
        }       
        cval = s[++j];
    }
    return i;
}

int main()
{
    char s[] = "123abcd4567";
    const int size = 20;
    int a[size];
    int totalNumber = fun(s, a);
    cout << totalNumber << endl;
    return 0;    
}

[解决办法]
引用:
听了一楼的话,参照二楼的解答,就重新做了一下。
不过我做的好像和题目的意思不符啊。


# include<stdio.h>
int fun(char *s,int a[]){
int i,j=0;
for(i=0;i<12;i++){  //循环条件应该用结束符,不
if(s[i]>=0 && s[i]<=9){
a[j]=s[i];
j++;
}
}
    return j;
}
int main(){
        // 你这里定义的是一个字符数组,它没有结束符,所以不是c语言的字符串(必须以'\0'结束)。
        // 字符数组与字符串在判断结束条件时条件不一定相同,例如你用的字符个数,2楼用的是结束符
        // 字符'1'与整数1是不一样的,char ch=1,与char ch = ‘1’是不同的,
        // ‘1’对应的整数为49,char ch=1对应的字符是一个我也看不懂的字符。
        // 建议你再好好看下书,理解一下2楼的做法。
char m[12]={3,2,1,'s','d','j','s',4,5,6,7,9}; 
int n[20],i,k;
k=fun(m,n);
for(i=0;i<k;i++)
printf("%d",n[i]);
printf("\n");
printf("%d\n",k);
return 0;
}

热点排行