对不起,如果标题仍然含糊不清。
我正在为学校做这个任务,下面是我定义的函数原型,main函数和change_array函数。
该程序的总体目标是允许用户输入5个不同的数字并存储到数组中。 那么change_array函数的作用是将任何低于10的数字加倍(乘以2),但是,它目前没有按照预期的方式进行。 我真的被卡住了,所以我想知道是否有人可以指出我的错误。 我不是要求一个确切的答案,我只需要一些指示和指导。
出现问题的是change_array函数没有改变用户给出的任何值。 因此,例如,如果用户输入“3,5,6,12,32”,则我的程序的输出仍然是“3,5,6,12,32”。 但是我真正想要的是,在从change_array函数传回数组之后,“6,10,12,12,32”。
编辑完整的程序:
#include #define SIZE 5 void fill_array(double x[], int s); void change_array(double x[], int s); void print_array(double x[], int s); main() { double x[SIZE]; fill_array(x, SIZE); printf("The array is as: n"); print_array(x, SIZE); change_array(x, SIZE); printf("After change, the array is: n"); print_array(x, SIZE); } void fill_array(double x[], int s) { int i=0; printf("Please input 5 Non-Negative double numbersn"); for (i=0; i<s; i++) { printf("Number %d: ", i+1); scanf("%d", &x[i]); printf("n"); } } void change_array(double x[], int s) { int i=0; for (i=0; i<s; i++) { if (x[i] < 10) { (x[i] = (x[i] * 2)); } } } void print_array(double x[], int s) { int i=0; for (i=0; i<s; i++) { printf("%ld t", x[i]); } printf("n"); }
我的代码是用C编写的。
change_array
没有任何问题。 它确实修改了调用者数组中的值。
问题在于打印functionprint_array
。 您为printf
使用了错误的格式字符串。 您需要使用%f
而不是%ld
因为它们是浮点值而不是整数。
数组总是通过引用传递,因此这不是问题。 当我添加打印function和额外的大括号时,它按预期工作。 你能提供一个最小的工作示例(MWE),以便我们可以运行代码吗? (我知道这可能应该是一个评论,但是我对评论有点羞怯3分)
我修改了你的代码以制作一个最小的样本,它适用于我 :
#include #define SIZE 5 void change_array(double x[], int s); int main() { double x[SIZE] = {3, 5, 6, 12, 32}; printf("The array is as: n"); for(int i = 0;i
这是输出:
数组如下:
3.000000 5.000000 6.000000 12.000000 32.000000
更改后,数组是:
6.000000 10.000000 12.000000 12.000000 32.000000
以上就是c/c++开发分享将修改后的数组值传递回C中的main函数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/541831.html