如何将此函数转换为循环

How do I convert this function into a loop?

本文关键字:转换 循环 函数      更新时间:2023-10-16

我有一个包含小写字母的元素数量未知的字母数组。我写了一个函数,用于将小写数字转换为ASCII值

int returnVal (char x)
{
return (int) x;
}

我正试图将所有这些值合并为一个数字。从这些值中减去87意味着该值总是一个2位数。我能够通过以下方式组合由两个元素组成的数组:

returnVal (foo[0]) - 87) + returnVal (foo[1] - 87) * 100

通过由三个元素组成的阵列

returnVal (foo[0]) - 87) + returnVal (foo[1] -87) * 100 + returnVal (foo[2] - 87) * 100 * 100

我将每个元素乘以它在数组中的位置100^并求和。这意味着[a,b,c]将变为121110(是的,"flip"的值首先为"c",最后为"a"是有意的)。有人能对此进行编程吗(针对未知数量的元素数组)?

编辑:我一生中没有接受过任何形式的编程/计算机科学教育,这不是家庭作业。我正在努力自学,但我陷入了困境;我不知道有谁能亲自向我寻求帮助,所以我在这里请求,向那些被冒犯的人道歉。

第二版:我知道这种观点会惹恼很多人;如果stackoverflow.com不是为了交换信息,它的目的是什么?如果我是一个被家庭作业卡住的孩子(我不是),这肯定是使用堆栈溢出的合理原因吗?这个网站上的许多人似乎都认为,如果一个问题是初学者问的,那么就不值得回答,这完全没关系,因为你的时间是你自己的。然而,真正困扰我的是那些看到他们认为微不足道的问题,说"家庭作业"并立即投票否决的人。我认为,如果没有提问所需的"最低水平"知识,这个网站会更好,在我看来,"精英主义"的心态只是幼稚的。

由于这是一个学习练习,这里有一些提示可以让你自己完成任务:

  • 准备一个值,该值将作为您的号码到目前为止的"运行总数">
  • 从零开始计算运行总数
  • 当您将一个数字(例如"1234")转换为int时,该值将首先变成1,然后变成12,再变成123,最后变成1234
  • 运行总数的最终值是您的最终结果
  • 要从上一个值转到下一个值,请将前一个值乘以10,然后将当前数字的值加上
  • 您的returnVal没有意义,因为在C中,您经常可以避免将char显式转换为int。在这种情况下你绝对可以避免
  • 制作一个返回十进制数字值的函数int digit(char c),即c-'a',会有用得多,因为它可以让你在多个位置上去掉c-87
char array[SIZE];
long factor=1;
long result=0;
for(int i=0; i<SIZE; i++)
{
result+=returnVal(foo[i])-87)*factor;
factor*=100;
}

只要long足够大以容纳100^the position的值,当然,只要结果不溢出,这就应该有效。