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("輸入