제목이 여전히 모호하면 죄송합니다.수정 된 배열 값을 C의 기본 함수로 다시 전달
저는 학교에서이 과제를하고 있습니다. 정의 된 함수 프로토 타입, 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 <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.
'change_array'는 호출자가 수정할 수 있도록 실제로 배열을 수정합니다. 실제 코드, 가급적 완전한 프로그램을 게시해야합니다. –
방금 게시했습니다. 감사합니다. –
새 코드는 문제가 단순히 printf 형식 문자열임을 분명히합니다. –