C語言程式設計現代方法P181練習題

2021-08-15 10:20:46 字數 1775 閱讀 8888

4.編寫下列函式:

void swap(int *p, int *q); 

swap(&i, &j);/* exchange values of i and j */

#include

void swap(int *p, int *q);

int main(void)

void swap(int *p, int *q)

8.編寫下列函式:

int *find_largest(int a, int n); 

當傳入長度為n的陣列a時,函式將返回指向陣列最大元素的指標。

#includeint *find_largest(int a, int n);int main(void)    y = *find_largest(a, b);  //注意此處,輸出直接輸出y即可,前面不需要加*。  why?? 因為y又不是指標呀!    printf("%d\n", y);    return 0;}int *find_largest(int a, int n)    }    return &a[max];}

12.編寫下面的函式:

void find_two_largest(const

int *a, int n, int *largest,  

int *second_largest); 

a指向長度為n的陣列。函式從陣列中找出最大和第二大的元素,並把它們分別儲存到由largest和second_largest指向的變數中。要求使用指標算術運算而不是取下標來訪問陣列元素。

正確做法:

#include

#define n 10

void find_two_largest(int a, int n, int *largest, int *second_largest);

int main(void)

p = null;

q = null;  // 指標一定要初始化, 要不然這兩處會出現兩個warnning;

find_two_largest(a, n, p, q);

return 0;

}void find_two_largest(int a, int n, int *largest, int *second_largest)

}largest = &a[mark1];

for(i = 0; i < mark1; i++)

}for(i = mark1 + 1; i < n; i++)

}second_largest = &a[mark2];

printf("%d %d\n", *largest, *second_largest);

}錯誤做法!!!!!!!

#include

void find_two_largest(int a, int n, int *largest, int *second_largst);

int main(void)

p = &a[0];

q = &a[0];

find_two_largest(a, n, p, q);

return 0;

}void find_two_largest(int a, int n, int *largest, int *second_largest)

}for(i = 0; i < m; i++)

}for(i = m + 1; i < n; i++)

}printf("%d %d\n", *largest, *second_largest);

}

《c語言程式設計 現代方法》

我最開始接觸的c語言書籍是,譚浩強的c語言教材。在 資料結構 中,學會了使用指標。後來,單獨花時間克服了字元的處理。工欲善其事,必先利其器。我在本科暫時的三個目標是 c c 作業系統,網路。暑假看了 作業系統 真象還原 作業系統的知識,暫時夠我使用了。歡迎在這個倉庫上,建立分支,留下本書好的 c語言...

《C語言程式設計 現代方法》摘要

不應該以聰明才智和邏輯分析能力來評判程式設計師,而要看其分析問題的全面性。上面是原文的一句話,我非常喜歡。工程師的職責是把自己或者別人腦子裡想像的東西動手做出來。能把大問題拆解成小問題,然後把乙個個小問題逐一擊破,這是工程師的基本能力。我們當前大部分企業遇到的絕大部分問題都是有現成的解決方案的,工程...

C語言程式設計練習

1 給你任意三個整形資料,找出其中最大乙個整形數。include main int findmax int x,int y,int z else if z max return max 使用函式 三目運算子 include int main int findmax int x,int y 2 求1 ...