[英]How to send back the values inside a void function to main function in C?
[英]Passing modified array values back to main function in C
抱歉,標題仍然不清楚。
我正在為學校做這項作業,下面是我定義的函數原型,主要函數和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 <stdio.h>
#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 numbers\n");
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編寫的。
數組總是通過引用傳遞的,所以這不是問題。 當我添加打印功能和多余的花括號時,它可以按預期工作。 您能否提供一個最小的工作示例(MWE),以便我們可以運行代碼? (我知道這可能是一條評論,但是我無法發表評論了3分)
我修改了您的代碼以制作最小的示例,它對我來說很好用 :
#include <stdio.h>
#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<SIZE;i++)
printf("\n%f",x[i]);
//fill_array(x, SIZE);
//print_array(x, SIZE);
change_array(x, SIZE);
printf("After change, the array is: \n");
for(int i = 0;i<SIZE;i++)
printf("\n%f",x[i]);
// print_array(x, SIZE);
return 0;
}
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));
}
}
}
這是輸出:
數組為:
3.000000
5.000000
6.000000
12.000000
32.000000
更改后,該數組為:
6.000000
10.000000
12.000000
12.000000
32.000000
change_array
沒有任何問題。 實際上,它確實修改了調用方數組中的值。
問題出在打印函數print_array
。 您為printf
使用了錯誤的格式字符串。 您需要使用%f
而不是%ld
因為它們是浮點值而不是整數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.