我試圖在數組中打印整數的摘要。例如,如果用戶鍵入:「1 4 5 8」 結果應該是:「1 5 10 18」(0 + 1 = 1,1 + 4 = 5,5 + 5 = 10,10 + 8 = 18 ) 當我運行此代碼的輸入:「1 1 1」 第一次結果是:「1 2 3 32767 256」 和任何其他時間運行如期:\ 這樣做的算法很簡單,它的工作原理但我習慣了OOP和 剛剛開始學習C.這裏的東西似乎不正確..什麼東西與指針或malloc?任何幫助? 執行此操作的「正確」方式是什麼? 乾杯..!如何在C中打印數組元素的摘要
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
/*function prototype*/
int* summary(int a[], int length);
void printArray(int array[], int i);
int main(){
int k;
int length=0;
int userArray[MAX];
printf("Enter some numbers:\n");
while((scanf("%d", &k) ==1)){
userArray[length] = k;
length++;
/*print the array after 'Enter' key pressed*/
if(getchar() == '\n'){
summary(userArray, length);
length = 0;
printf("\n");
}/*if*/
}/*while*/
summary(userArray, length);
printf("\n");
return 0;
}/*main*/
int* summary(int a[], int length){
int i;
int counter = 0;
int *p;
p = (int *) malloc(length * sizeof(int));
if(!p){
printf("memory allocation failed!");
exit(0);
}/*if null*/
for(i=0 ; i<length ; i++){
counter+=a[i];
p[i] = counter;
}/*for*/
a[length] = '\0';
printArray(p, 0);
return p;
free(p);
}/*summary*/
void printArray(int array[], int i){
if(array[i]=='\0'){
printf("finished printing");
return;
}
else{
printf(" %d\n", array[i]);
printArray(array, i+1);
}
}/*printArray*/
非常感謝您的快速和高效的響應,您非常幫助我! – Raskanskyz