C语言的一个简单函数

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:54:27
定义一个函数使字符数组中的每个字母转换成相应的整形数字,并返回所有数字之和。烦请各位C高手检查一下下述程序的错误。不胜感激!!
int plus(char str[])
{int str1[40];
int m=0;
for(;str[m]!='\0';m++)
{str1[m]=(int)(str[m]);}
m=1;
for(;m<=strlen(str);m++)
{str1[m]=str1[m]+str1[m-1];
return str1[m];}}
我所需要的不是找到一个合适的程序,而是希望谁能告诉我我的程序哪里错了。谢谢 了先。

int plus(char str[])
{
int sum;//原为int str1[40];若只是放和的话,用不着定义数组
int m=0;
for(;str[m]!='\0';m++)
sum+=(int)str[m];//{str1[m]=(int)(str[m]);}因为for循环只有一个语句,故{}可去掉
//m=1; 不要
//for(;m<=strlen(str);m++) 不要
//{str1[m]=str1[m]+str1[m-1]; 不要
return sum;//return str1[m];}
}

求和有误吧

int sum=0;
for(m=0;m<=strlen(str);m++)
sum+=str1[m];

天啦,你这问题多了。
首先你的第二个for应该放到外面去,不应该嵌在第一个里面。
其次你两个for嵌在一起,但是同时用了一个变量 m。
下面是改过的:

#define ERROR_VALUE 0xFFFFFFFF

int plus(char str[])
{
int total = 0;
int m = 0;

if (NULL == str)
return ERROR_VALUE;

for (m = 0; str[m] != '\0'
{
total += (int)(str[m]);
}

return total;
}