当前位置:  开发笔记 > 编程语言 > 正文

我可以提一下关注格式化的重点吗?

如何解决《我可以提一下关注格式化的重点吗?》经验,为你挑选了1个好方法。

该程序应该计算参数的数量,遍历参数列表,每个参数将参数转换为整数并将其复制到数组,迭代数组的元素,将每个参数的值添加到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;  
}  

好吧,现在(当给出除./a之外的三个参数时)它打印第一个参数和第二个参数的总和......然后是第二个和第三个...然后是第三个参数的值.为什么?

这是GetInt的代码(我必须使用它):

int GetInt (int argc, char * argv[], int i) {  
   if (i < 0 || i >= argc) return 0;  
   return atoi(argv[i]);  
}  

我是否需要通过并将每个参数分配给一个整数(例如int z = GetInt (argc, argv, i + 2))?



1> Stephan202..:

这里有一些问题:

我没有在sumofA中定义,因此与它进行比较会产生未定义的行为.

如果i> = 15,则不清楚sumofA将返回什么.

你回到循环里面; 当然这不是你想要的.

您的代码实际上并未在数组A中存储任何内容.

请使用(gcc:-Wall -Werror -pedantic)上的所有警告标志编译代码,并确保代码编译时没有警告.

请注意,不需要变量大小:使用while(i .

编辑:现在你添加了GetInt的代码,替换

GetInt (argc, argv, i);

atoi(argv[i]);

有没有使用GetInt,所以你完全可以将其删除.

最后:在你的问题中,你提到将数字存储在一个数组中,然后将它们相加.你这样做,还是要这样做(由于某些任务?)因为没有必要:只需将所有调用的结果添加到atoi.然后阵列A是多余的.

编辑2:我看到你在某些地方修复了代码.您当前的代码(CEST 23:31)分别为每个参数添加第一个参数并打印它们.你还没到那儿.祝好运!

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有