有一個陣列,您需要將這個陣列的每個元素除以前后元素的最后一位數字的乘積。
任務全文:從檔案input.txt中填入一個20個元素的一維陣列并顯示在螢屏上。通過將陣列的每個元素除以前一個和下一個元素的最后一位數字的乘積來更改陣列的元素。在新行上將修改后的陣列列印到螢屏上。
如何才能做到這一點?我有這樣的代碼,但它不起作用:
#include <stdio.h>
#include <stdlib.h>
#define N 20
int main(void) {
FILE *output;
int i, array[N], pred, posl, proizv;
output = fopen("output.txt", "w r");
for (i = 0; i < N; i ) {
array[i] = -100 rand() % (100 100 1);
fprintf(output, "%d ", array[i]);
}
for (i = 0; i < N; i ) {
fscanf(output, "%d ", &array[i]);
printf("%d ", array[i]);
}
fclose(output);
printf("\n\n");
for (i = 1; i < N - 1; i ) {
pred = array[i - 1] % 10;
posl = array[i 1] % 10;
proizv = pred * posl;
printf("%d *%d =%d\n", pred, posl, proizv);
}
printf("\n\n");
return 0;
}
如何重寫它以便我可以將已修改的陣列輸出到檔案?
我還有一些任務需要解決。處理完第一個問題,我會盡快補充這個問題。
uj5u.com熱心網友回復:
output = fopen("output.txt", "w r");
for (i = 0; i < N; i ) {
array[i] = -100 rand() % (100 100 1);
fprintf(output, "%d ", array[i]);
}
for (i = 0; i < N; i ) {
fscanf(output, "%d ", &array[i]);
printf("%d ", array[i]);
}
一,您既不檢查fopen()也不檢查fscanf()成功。要么失敗...
......而fscanf()最肯定沒有失敗,因為你仍然在指著結束的output撰寫所有這些值后。嘗試rewind( output )在兩個回圈之間添加。
我還有一些任務需要解決。處理完第一個問題,我會盡快補充這個問題。
別。每個帖子一個問題,請。如果您在解決此問題后有新問題,請發新帖。
uj5u.com熱心網友回復:
據我了解,代碼應該像這樣作業。是的,我知道打開檔案進行閱讀時缺乏檢查,我知道除以 0,但這有點次要。
#include <stdlib.h>
#define N 20
int main(void) {
FILE *output;
int i, array[N], pred, posl, proizv[N], array2[N];
output = fopen("output.txt", "w r");
for (i = 0; i < N; i ) {
array[i] = -100 rand() % (100 100 1);
fprintf(output, "%d ", array[i]);
}
for (i = 0; i < N; i ) {
fscanf(output, "%d ", &array[i]);
printf("%d ", array[i]);
}
fclose(output);
printf("\n\n");
for (i = 1; i < N - 1; i ) {
pred = array[i - 1] % 10;
posl = array[i 1] % 10;
proizv[i] = pred * posl;
printf("%d *%d =%d\n", pred, posl, proizv[i]);
}
printf("\n\n");
for (i = 1; i < N - 1; i ) {
array2[i] = array[i] / proizv[i];
printf("%d ", array2[i]);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359870.html
標籤:C
上一篇:具有不同結構的2個結構之間的“傳輸/轉換”如何在C中作業?
下一篇:圓所見的點的位置
