Kai*_*ity 0 c arrays arguments sum
该程序应该计算参数的数量,遍历参数列表,每个参数将参数转换为整数并将其复制到数组,迭代数组的元素,将每个参数的值添加到a变量(这计算元素的总和),并打印总和.不会有超过15个参数.到目前为止,我有:
int sumofA (int sizeofA, int x, int y){
int i = sizeofA;
if (i <= 15){
int z = x + y;
return z;
}
}
int main (int argc, char*argv[]){
int sizeofA = argc - 1;
int i = 1;
while (i <= sizeofA){
int x = GetInt (argc, argv, i);
i = i + 1;
int y = GetInt (argc, argv, i);
printf ("%d\n", sumofA (sizeofA, x, y));
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
好吧,现在(当给出除./a之外的三个参数时)它打印第一个参数和第二个参数的总和......然后是第二个和第三个...然后是第三个参数的值.为什么?
这是GetInt的代码(我必须使用它):
int GetInt (int argc, char * argv[], int i) {
if (i < 0 || i >= argc) return 0;
return atoi(argv[i]);
}
Run Code Online (Sandbox Code Playgroud)
我是否需要通过并将每个参数分配给一个整数(例如int z = GetInt (argc, argv, i + 2))?
这里有一些问题:
请使用(gcc:-Wall -Werror -pedantic)上的所有警告标志编译代码,并确保代码编译时没有警告.
请注意,不需要变量大小:使用while(i <argc).
编辑:现在你添加了GetInt的代码,替换
GetInt (argc, argv, i);
Run Code Online (Sandbox Code Playgroud)
同
atoi(argv[i]);
Run Code Online (Sandbox Code Playgroud)
有没有使用GetInt,所以你完全可以将其删除.
最后:在你的问题中,你提到将数字存储在一个数组中,然后将它们相加.你想这样做,还是需要这样做(由于某些任务?)因为没有必要:只需将所有调用的结果添加到atoi.然后阵列A是多余的.
编辑2:我看到你在某些地方修复了代码.您当前的代码(CEST 23:31)分别为每个参数添加第一个参数并打印它们.你还没到那儿.祝好运!
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |