系列文章《C語言經典100例》持續創作中,歡迎大家的關注和支持。
喜歡的同學記得點讚、轉發、收藏哦~
後續C語言經典100例將會以pdf和代碼的形式發放到公眾號
歡迎關注:計算廣告生態 即時查收
函數:search()
功能:查找成績不及格的學生
描述:有 4 名學生的成績,找出至少有一科不及格的學生,並將成績列表輸出(規定60以下為不及格)
目標:重點理解 int (*p)[N] 的使用方法
int*p[5] 和 int(*p)[5] 的區別
#include <stdio.h> void search(float (*p)[4], int n) { printf("序號為 %d 的學生的成績:\n", n); for (int i = 0; i < 4; ++i) { printf("%5.2f ", *(*(p+n)+i)); }}int main(int argc, char const *argv[]) { float score[3][4]={{60,75,82,91},{75,81,91,90},{51,65,78,84}}; search(score, 2); // 計算得出序號為 2 的學生的成績 getchar();}~~~~~~~~~~~操作結果~~~~~~~~~~~~$ gcc ex022-1.c -o demo./yaojianguodeMacBook-Pro:C語言100題集合代碼 yaojianguo$ ./demo序號為 2 的學生的成績:51.00 65.00 78.00 84.00
#include <stdio.h> #include <stdlib.h>#define N 5/**函數:search()功能:查找成績不及格的學生描述:有 4 名學生的成績,找出至少有一科不及格的學生,並將成績列表輸出(規定60以下為不及格)**/int * search(int (*p)[N]) { int * pt = *(p+1); for (int i = 0; i < 4; ++i) { if (*(*(p+0)+i) < 60) { // 這塊可以寫成*(*p+i) < 60,也就是平常看到了*(*(p+m)+n))來取到二維數組中列向的值 pt = *p; } } return pt;}int main(int argc, char const *argv[]) { int * p; int score[][N]={{60,75,82,91},{75,81,91,90},{51,65,78,84},{65,72,78,72},{75,70,98,92}}; // 四個學生的成績 for (int i = 0; i < N; ++i) { p = search(score+i); if (p==*(score+i)) { printf("成績不及格學生的成績分別是:\n"); for (int j = 0; j < 4; ++j) { printf("%d ", *(p+j)); } } } getchar();}
示例結果:
$ gcc ex022.c -o demo$ ./demo成績不及格學生的成績分別是:51 65 78 84
--END--
喜歡本文的同學記得點讚、轉發、收藏~
更多內容,歡迎大家關注我們的公眾號:計算廣告生態
後續C語言經典100例將會以pdf和代碼的形式發放到公眾號
同時也帶來更多系列文章以及乾貨❤️!