1. 程式人生 > >C 語言:有一個班4個學生,5門課程。

C 語言:有一個班4個學生,5門課程。

題目:有一個班4個學生,5門課程。1、求第一門課程的平均分;2、找出有兩門課程以上不及格的學生,輸出他們的學號和全部課程成績及平均成績;3、找出平均成績在90分以上或全部課程成績在85分以上的學生。分別編3個函式實現以上3個要求

在這之前,一直對
int (*pointer)[ num ]
這種用法產生了誤解,導致在之前的練習中,多次的不正確使用,程式無法正常的執行。
通過這道題目 應該算是有了個比較清楚的認識了。

當有這麼有一個數組時:

int (*p)[4];
int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}},
 p = a;

int (*p)[4]; 表示定義p為一個指標變數,它指向包含4個整型元素的一維陣列

p的型別不是int ,而是 int()[4]型 p被定義為指向一維整型陣列的指標變數,一維陣列有4個元素,因此P的基型別是一維陣列 其長度是16位元組。

#include<stdio.h>{
void average(int (*p)[5],int n );  //形參為一維整型陣列的指標
void fail(int * p);
void excellent(int *p);

int grades[4][5] = {{68,39,98,45,66},{87,89,93,94,80},{75,65
,88,74,59},{99,88,77,87,90}}; //int (*pt)[4] = grades; average(grades, 4); // 所以這裡需要把grades的首地址當實參傳給函式 fail(grades,4); excellent(grades,4); return 0; } void average(int (*p)[5] ,int n){ int i,sum = 0,aver = 0; for(i=0;i<4;i++){ sum += *(*(p+i)+0); } aver = sum/4; printf("第一門課程的平均分 :%d \n"
,aver ); printf("\n"); } void fail(int (*p)[5],int n){ int i,j,count=0,num=0,k; for(i=0;i<n;i++){ for(j=0;j<5;j++){ if(*(*(p+i)+j) < 60){ count++; } } if(count >= 2){ int sum=0,aver=0; printf("學號 :%d\n",i+1 ); printf("全部課程的成績 :"); for(k=0;k<5;k++){ printf("%3d ",*(*(p+i)+k) ); sum += *(*(p+i)+k); } printf("\n"); aver = sum/ 5; printf("平均分 :%d\n",aver ); printf("\n"); } count = 0; } } void excellent(int (*p)[5],int n){ int i,j,aver=0,sum=0; for(i=0;i<4;i++){ for(j=0;j<5;j++){ sum += *(*(p+i)+j); } aver = sum / 5; if(aver >90){ printf("%d\n",i+1 ); break; } if(*(*(p+i)+0)>85&&*(*(p+i)+1)>85&&*(*(p+i)+2)>85&&*(*(p+i)+3)>85&&*(*(p+i)+4)>85){ printf("%d\n",i+1 ); break; } } }

相關推薦

C 語言一個4學生5課程

題目:有一個班4個學生,5門課程。1、求第一門課程的平均分;2、找出有兩門課程以上不及格的學生,輸出他們的學號和全部課程成績及平均成績;3、找出平均成績在90分以上或全部課程成績在85分以上的學生。分別

一個4學生5課成績要求程式設計實現把這四學生的成績按照第一課由小到大排序(冒泡法)

#include <stdio.h> #include <stdlib.h>int main(int argc,char** argv){  int student[4][5];//記錄4個學生5門功課成績 int changeRecord[4]={0

C語言 一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".

題目:有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".     要求:不能使用庫函式。只能開闢有限個空間(空間個數和字串的長度無關)。 分析:分為兩大部分:①把整個字元陣列逆置                

c語言實現一個函式判斷year是不是潤年

實現一個函式判斷year是不是潤年。程式:#include<stdio.h>int leap_year(intyear)//leap year 閏年{if ((year % 4 == 0 &

編寫程式提示使用者輸入5學生5課程的成績然後計算每個學生的總分和

#include<stdio.h>int main(void){float score[5][5],totalscore[5]={0},averagescore[5]={0},courseaverage[5]={0};float score_max[5]={0}

c語言找出1到4000中數字的各位數之和能被4整除的數多少

找出1到4000中,數字的各位數之和能被4整除的數,如:745:7+4+5=16,16可以被4整除;28:2+8=10,10不能被4整除;745就是這樣的特殊數字,而28不是,求:這樣的數字共有多少個?解:(1)對於4000,4+0+0+0=4,顯然4000是滿足條件的數字;

c語言1、2、3、4數字能組成多少互不相同且無重複數字的三位數?打印出來?

有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?打印出來?解:程式:#include<stdio.h>int main(){int i, j, k;int count = 

C語言5學生每個學生3課的成績從鍵盤輸入學生資料計算平均成績

有5個學生,每個學生有3門課的成績,從鍵盤輸入學生資料(包括學生號、姓名、三門課成績),計算平均成績,將原有資料和計算出的平均分數存放在磁碟檔案“stud”中  對於平均成績的思路就是:把平均成績當做結構體的一項  在輸入3門課成績以獲得平均成績時,要注意在c語言中,三門成績

ACMNO.21 C語言-逆序輸出 輸入10數字然後逆序輸出 輸入 十整數 輸出 逆序輸出空格分開 樣例輸入 1 2 3 4 5 6 7 8 9 0

題目描述 輸入10個數字,然後逆序輸出。 輸入 十個整數 輸出 逆序輸出,空格分開 樣例輸入 1 2 3 4 5 6 7 8 9 0 樣例輸出 0 9 8 7 6 5 4 3 2 1 提示 陣列?堆疊? 來源/分類 C語言

C語言實現一個字元陣列的內容為:"student a am i"請你將陣列的內容改為"i am a student"

//有一個字元陣列的內容為:"student a am i",請你將陣列的內容改為"i am a student"。    要求:不能使用庫函式。               只能開闢有限個空間(空間個數和字串的長度無關)。   解題思路:               

C語言實現一個通訊錄可以進行增刪查改等多項功能(動態版本)

基於前一篇文章的靜態通訊錄,新增malloc函式,realloc函式以及free,將其改變為一個動態的通訊錄,可以動態記憶體開闢,儘可能防止記憶體的浪費。 具體程式碼如下: contact.h #ifndef __CONTACT_H__ #define __CO

c語言實現一個函式判斷一個數是不是素數

實現一個函式,判斷一個數是不是素數。程式:#include<stdio.h>#include<math.h>int prime(intnum) //prime表示素數{int i

C語言輸入一個不確定位數的正整數把位數翻轉出來!

Code: /*給一個正整數,要求:  1.求出它是幾位數;  2.分別輸出每一位數字;  3.按逆序輸出各位數字,  */ #include <stdio.h> #include <math.

c語言輸出一個菱形圖

輸出一個菱形圖。解:程式:#include<stdio.h>int main(){int i, j;char diamond[][5] = { {' ',' ','*'},{' ','*',

C語言全域性變數在多c檔案中公用的方法

 用C語言編寫程式的時候,我們經常會遇到這樣一種情況:希望在標頭檔案中定義一個全域性變數,然後包含到兩個不同的c檔案中,希望這個全域性變數能在兩個檔案中共用。   舉例說明:專案資料夾project下有main.c、common.c和common.h三個檔案,其中com

c語言判斷一個年份是不是閏年和雞兔同籠問題

#include<stdio.h> int main() { int year; printf("請輸入年份:\n"); scanf("%d",&year); if((year%4==0)&&(year%100

c語言先後輸出BOY三字元

先後輸出BOY三個字元。程式:#include<stdio.h>int main(){char   a='B', b = 'O', c = 'Y';putchar(a);putchar(b)

C語言實現一個函式判斷year是不是閏年

判斷是否是閏年:    四年一閏,百年不閏,四百年再閏#include<stdio.h> #include<stdlib.h> int leap(int year) {     int ret = 0;;     if (((year % 4 == 

C語言編寫一個程式統計輸入字串中各個數字、空白字元、以及其他所有字元出現的次數

#include<stdio.h> int main() {      int c = 0;      int num_count = 0;      int emp_count = 0;      int els_count = 0;            w

c語言一個正整數分解質因數

Code: /*將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5  */ #include <stdio.h> void  main()   {       int  a,i,j;       printf("輸入