?? intepoint.c
字號(hào):
# include <stdio.h>
void avsco(float *psco, float *pave);
void avcour5(char *pcou, float *psco);
void fali2(char *pcou, int *pnum, float *psco, float *pave);
void excellence(char *pcou, int *pnum, float *psco, float *pave);
void main()
{
/* 數(shù)組num用于存放每位學(xué)生的學(xué)號(hào) */
int i, j, *pnum, num[4];
/* 數(shù)組aver用于存放每位學(xué)生的平均分,二維數(shù)組score用于存放學(xué)生成績 */
float score[4][5], aver[4], *psco, *pave;
/* 數(shù)組course存放5門課程的名稱 */
char course[5][10], *pcou;
printf("請按行輸入5門功課的名稱:\n");
pcou = course[0]; /* 指針變量pcou用來存放數(shù)組course的首地址 */
/* 從首地址開始,每十個(gè)字節(jié)存放一個(gè)課程的名稱 */
for(i=0; i<5; i++)
scanf("%s", pcou+10*i); /* 以空格為間隔輸入五門課程的名稱 */
printf("請按下面的格式輸入4個(gè)學(xué)生的學(xué)號(hào)和各科成績:\n");
printf("學(xué)號(hào)");
for(i=0; i<5; i++)
printf(",%s", pcou+10*i); /* 輸出各門課程的名稱 */
printf("\n");
psco = &score[0][0]; /* 指針psco指向數(shù)組score中的第一個(gè)元素 */
/* 即指向第一個(gè)學(xué)生第一門課程的成績 */
pnum = &num[0];
for(i=0; i<4; i++)
{
scanf("%d", pnum+i); /* 輸入學(xué)號(hào) */
for(j=0; j<5; j++)
scanf(",%f", psco+5*i+j); /* 以逗號(hào)為間隔輸入學(xué)生成績 */
}
pave = &aver[0]; /* 將數(shù)組aver的首地址賦給指針pave */
printf("\n"); /* 空行 */
avsco(psco, pave);
avcour5(pcou, psco);
printf("\n"); /* 空行 */
fali2(pcou, pnum, psco, pave);
printf("\n"); /* 空行 */
excellence(pcou, pnum, psco, pave);
}
void avsco(float *psco, float *pave) /* 求每個(gè)學(xué)生的平均成績 */
{
int i, j;
float sum, average;
for(i=0; i<4; i++) /* i代表學(xué)生的序號(hào),表示第i個(gè)學(xué)生 */
{
sum = 0.0;
for(j=0; j<5; j++) /* j代表課程的序號(hào),表示第j門課程 */
sum = sum + (*(psco+5*i+j)); /* 累計(jì)每個(gè)學(xué)生的各科成績 */
average = sum/5; /* 計(jì)算第i個(gè)學(xué)生平均成績 */
*(pave+i) = average;
}
}
void avcour5(char *pcou, float *psco) /* 求第五門課程的平均成績 */
{
int i;
float sum, average5;
sum = 0.0;
for(i=0; i<4; i++)
sum = sum + (*(psco+5*i+4)); /* 累計(jì)每個(gè)學(xué)生第五門課的得分 */
average5 = sum/4; /* 計(jì)算第五門課程的平均成績 */
printf("第5門課程%s的平均成績?yōu)?5.2f.\n", pcou, average5);
}
void fali2(char *pcou, int *pnum, float *psco, float *pave)
{
int i, j, k, label;
printf(" =====兩門以上課程不及格的學(xué)生===== \n");
printf(" 學(xué)號(hào) ");
for(i=0; i<5; i++)
printf(" %-8s", pcou+10*i); /* 輸出課程名稱 */
printf(" 平均分\n");
for(i=0; i<4; i++)
{
label = 0;
for(j=0; j<5; j++)
if(*(psco+5*i+j) < 60.0)
label++; /* 計(jì)算第i個(gè)學(xué)生不及格課程的門數(shù) */
if(label >= 2)
{
printf("%-8d", *(pnum+i)); /* 輸出學(xué)號(hào) */
for(k=0; k<5; k++)
printf(" %-8.2f", *(psco+5*i+k)); /* 輸出符合條件學(xué)生的各科成績 */
printf(" %-8.2f\n", *(pave+i)); /* 輸出符合條件學(xué)生的平均分 */
}
}
}
/* 程序結(jié)構(gòu)和上一個(gè)子函數(shù)fali2類似 */
void excellence(char *pcou, int *pnum, float *psco, float *pave)
{
int i, j, k, label;
printf(" =====成績優(yōu)秀學(xué)生=====\n");
printf(" 學(xué)號(hào) ");
for(i=0; i<5; i++)
printf(" %-8s", pcou+10*i);
printf(" 平均分\n");
for(i=0; i<4; i++)
{
label = 0;
for(j=0; j<5; j++)
if(*(psco+5*i+j) >= 85.0)
label++;
if((label>=5)||(*(pnum+i)>=90))
{
printf("%-8d", *(pnum+i));
for(k=0; k<5; k++)
printf(" %-8.2f", *(psco+5*i+k));
printf(" %-8.2f\n", *(pave+i));
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -