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;
}