C語言編寫統計學生平均成績
㈠ C語言 統計學生成績
#include<stdio.h>
#include<stdlib.h>
struct student
{
double score[5];
}s[10];
void avg()
{
printf("\n");
double sum;
for(int i=0;i<10;i++)
{
sum=0;
printf("第%d位學生的平均分數是: ",i+1);
for(int j=0;j<5;j++)
sum+=s[i].score[j];
printf("%.2lf\n",sum/5);
}
printf("\n");
return ;
}
void tavg()
{
printf("\n");
double sum;
for(int j=0;j<5;j++)
{
sum=0;
for(int i=0;i<10;i++)
sum+=s[i].score[j];
printf("第%d門功課的平均分是: %.2lf\n",j+1,sum/10);
}
return ;
}
void maxsc()
{
printf("\n");
double max=-1;
int i,j;
for( i=0;i<10;i++)
{
for( j=0;j<5;j++)
if(max<s[i].score[j])
{
max=s[i].score[j];
}
}
printf("最高分是:%.2lf分,對應學生與功課如下:\n",max);
for(i=0;i<10;i++)
{
for(int j=0;j<5;j++)
if(max==s[i].score[j])
{
printf("第%d位學生的第%d門成績\n",i+1,j+1);
}
}
printf("\n");
}
int main()
{
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
printf("輸入第%d位學生的第%d門功課的成績: ",i+1,j+1);
scanf("%lf",&s[i].score[j]);
printf("\n");
}
printf("\n");
}
printf("學生平均分數情況:\n");
avg(); //每個學生的平均分
printf("功課平均分數情況:\n");
tavg(); //每門功課的平均分
printf("最高分數即對應學生功課:\n");
maxsc(); //最高分對應的學生和功課
system("PAUSE");
return 0;
}
㈡ 用c語言結構體編寫函數,計算每個學生的平均成績。
#include<stdio.h>
struct student
{
權long int num;
char name[8];
float score[3];
double ave;
}stu[2];
void fun(struct student * p)
{
double s;
int i,j;
for(i=0;i<2;i++)
{
s=0;
for(j=0;j<3;j++)
s+=p[i].score[j];
p[i].ave=s/3.0;
}
for(i=0;i<2;i++)
printf("Case #%d:ave= %4.2f\n",i+1,p[i].ave);
}
void main()
{
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%f",&stu[i].score[j]);
fun(stu);
}
㈢ c語言編寫程序,從鍵盤輸入6名學生5門功課成績,分別統計出每個學生的平均成績
一、問題分析
需要保存6名學生5門功課的成績,需要設計一個6行列大小的二維數組scores[6][5]來存儲30個成績數據。保存6名學生的平均成績,需要設計一個6列大小的一維數組來avgs[6]存儲平均成績。
為使程序具有更好的通用性,使用宏定義定義學生人數M和課程門數N。
計算每個學生的平均成績時,累加該行所有列的成績數據,並除以列大小即為該學生的平均成績。
二、參考程序
#include<stdio.h>
#defineM6 /*學生人數*/
#defineN5 /*課程門數*/
/*輸入row個學生col門課程的成績*/
voidinput(doublescores[][N],introw,intcol);
/*計算row個學生的平均成績並保存在avgs數組中*/
voidaverage(doublescores[][N],introw,intcol,doubleavgs[]);
/*輸出所有學生的平均成績*/
voidoutput(doubleavgs[],intsize);
voidmain()
{
doublescores[M][N];
doubleavgs[M];
input(scores,M,N);
average(scores,M,N,avgs);
output(avgs,M);
}
/*輸入row個學生col門課程的成績*/
voidinput(doublescores[][N],introw,intcol)
{
inti,j;
printf("請輸入%d個學生%d門課程的成績,每個學生成績在一行,以空格分隔成績: ",row,col);
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
scanf("%lf",&scores[i][j]);
}
}
}
/*計算row個學生的平均成績並保存在avgs數組中*/
voidaverage(doublescores[][N],introw,intcol,doubleavgs[])
{
inti,j;
for(i=0;i<row;i++)
{
avgs[i]=0.0;
for(j=0;j<col;j++)
{
avgs[i]+=scores[i][j];
}
avgs[i]/=col;
}
}
/*輸出所有學生的平均成績*/
voidoutput(doubleavgs[],intsize)
{
inti;
printf("%6s%10s ","序號","平均成績");
printf("---------------------------- ");
for(i=0;i<size;i++)
{
printf("%6d%10.2lf ",i+1,avgs[i]);
}
}
三、運行測試
㈣ C語言程序,請你編寫一個程序計算每個學生的平均成績
#include<stdio.h>
void main()
{
float a[10][10];//用來存放10名學生的5門成績,最後一位用於存放平均成績
int i,j;
float sum=0.0;
for(i=0;i<10;i++)
{
printf("請輸入第%d個學生的5門成績",i+1);
for(j=0;j<5;j++)
{
scanf("%f",&a<i>[j]);
sum=sum+a<i>[j];
}
a<i>[10]=sum/5.0;
}
printf("10名學生的成績及平均分 ");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf("%.3f",a<i>[j]);
printf(" ");
}
}
(4)C語言編寫統計學生平均成績擴展閱讀:
printf的用法
格式
printf函數的原型為:
#include<stdio.h>
int printf(const char*format,...);
在講每一個函數的時候都會先把它的函數原型寫出來,這個原型你們現在看不懂不要緊,等到學完C語言之後再來看這個原型就會發現它是很有參考意義的!它對深刻理解函數有著很大的價值。
printf的格式有四種:
1)printf("字元串 ");
#include<stdio.h>
int main(void)
{
printf("Hello World! ");// 表示換行
return 0;
}
其中 表示換行的意思。它是一個轉義字元,前面在講字元常量的時候見過。其中n是「new line」的縮寫,即「新的一行」。
此外需要注意的是,printf中的雙引號和後面的分號必須是在英文輸入法下。雙引號內的字元串可以是英文,也可以是中文。
2)printf("輸出控制符",輸出參數);
純文本復制
#include<stdio.h>
int main(void)
{
int i=10;
printf("%d ",i);/*%d是輸出控制符,d表示十進制,後面的i是輸出參數*/
return 0;
}
㈤ 使用c語言編寫程序,分別統計出每個學生的平均成績。
#include<stdio.h>
#define N 5//這里設置班級人數
void main()
{
int i,sum=0,high=0,score;
float average;
printf("input everyone's score.\n");
for(i=0;i<N;i++)
{
scanf("%d",&score);
sum+=score;
if(score>high) high=score;
}
average=(float)sum/N;
printf("average=%f\n",average);
printf("highest=%d\n",high);
}
這個代碼很容易懂。你拿去改下。。我就不給你調試了。這個是實現某班平均成績然後輸出平均成績最高成績的,如果採納我的。我可以給你編一個很通用的
㈥ c語言:編寫程序輸入 10 個學生的成績,計算並輸出最高成績和平均成績,然後統計低於平均成績的人數
#include<stdio.h>
int main()
{
int i;
float a[10],min,max,avg;//max表示最高分,min表示最低分,avg表示平均分
printf("請輸入10位學生的分數 ");
printf("******************************** ");
for(i=0;i<=9;i++)
{
printf("請輸入一位學生的分數:");
scanf("%f",&a<i>);
}
max=min=avg=a[0];
for(i=1;i<=9;i++)
{
if(min>a<i>)
{min=a<i>;}
if(max<a<i>)
{max=a<i>;}
avg=avg+a<i>;
}
avg=avg/10;
printf("max=%f ",max);
printf("min=%f ",min);
printf("max=%f ",avg);
printf("******************************** ");
}
(6)C語言編寫統計學生平均成績擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
㈦ C語言編寫 班級成績統計分析 要求:1確定學生來自哪些班級,2計算各個班級平均成績
C語言程序設計 班級學生成績管理系統
解決時間:2009-6-26 09:50
基本要求
1. 初始化成績表:將原成績表的信息清空;
2. 顯示班級學生成績信息:按要求顯示全部或特定學生成績信息;
3. 插入學生成績:插入一個學生成績信息;
4. 修改學生成績:先查找要修改成績的學生學號,如果存在該學生學號,則輸入該學生的各科新成績,替換相應課程的原成績,如不存在該學生學號,則提示「沒找到」;
5. 刪除學生成績:先查找要刪除成績的學生學號,如果存在該學生學號,則刪除該學生的相關信息,如不存在該學生學號,則提示「沒找到」;
6. 查找學生成績:可分別按學號、姓名查找學生成績;
7. 求班級學生人數:統計各個班級的學生總人數;
8. 求每個學生的平均成績:求各個學生的平均成績,並顯示學號、姓名、數分,高代,C語言,馬哲、平均成績等信息。
高級要求
1. 插入學生成績時,需保證學號是唯一的;
2. 輸入學生成績時,要保證課程成績的范圍在0-100之間;
3. 顯示各科成績前三名的學生信息(學號、姓名、性別、班級、課程名稱(數分或高代或C語言或馬哲)、名次。
**********************
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
#define ADDRFILE "c:\\addrlist.txt"
typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];
struct tagLinkedList *prev;
struct tagLinkedLIst *next;
}ADDR;
ADDR *g_pAddrHead = NULL;
ADDR *g_pFind;
int g_bSaved = 1;
void get_addrlist(void);
int add_list(const ADDR *addr);
int find_list(const char *name);
void SetHeadPosition(void);
void SetTailPosition(void);
void Add_addr(void);
void Find_addr(void);
void Modify_addr(void);
void Delete_addr(void);
void Print_addr(void);
void Save_addr(void);
void Remove_addr(void);
void main(void)
{
int ch;
get_addrlist();
puts("通訊錄程序 Version 1.0");
while(1)
{
printf("\n[1]新增 [2]搜索 [3]修改 [4]刪除 [5]輸出 [S]儲存 [Q]退出");
ch = getch();
switch(ch)
{
case '1': Add_addr();break;
case '2': Find_addr();break;
case '3': Modify_addr();break;
case '4': Delete_addr();break;
case '5': Print_addr();break;
case 's':
case 'S': Save_addr();break;
case 'q':
case 'Q':
if(g_bSaved == 0)
{
printf("\n\n修改後的數據需要儲存嗎?(y/n)?");
ch = getchar();
if(ch == 'Y' || ch == 'y') Save_addr();
}
Remove_addr(); exit(1);
default : printf("\n\n 請按1~5或S/Q健.\n\n");break;
}
}
}
void get_addrlist(void)
{
ADDR addr;
FILE *fp;
fp = fopen(ADDRFILE,"rb");
if(fp == NULL)
{
perror("open file error;");
return;
}
while(!feof(fp))
{
fread(&addr,1,sizeof(ADDR),fp);
if(ferror(fp))
{
fclose(fp);
perror("file read error;");
return;
}
if(feof(fp))break;
if(add_list(&addr) == 0)
{
printf(".\n");
}
}
fclose(fp);
}
int add_list(const ADDR *addr)
{
ADDR *plocal,*pn = g_pAddrHead;
SetHeadPosition();
if(g_pAddrHead == NULL)
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));
if(plocal == NULL)
{
return 0;
}
g_pAddrHead = plocal;
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));
if(plocal == NULL)
{
return 0;
}
while(pn->next)
{
pn = pn->next;
}
pn->next = plocal;
plocal->prev = pn;
plocal->next = NULL;
}
strcpy(plocal->name,addr->name);
strcpy(plocal->tel,addr->tel);
strcpy(plocal->addr,addr->addr);
return 1;
}
int find_list(const char *name)
{
ADDR *plocal;
SetHeadPosition();
plocal = g_pAddrHead;
while(plocal)
{
if(strstr(plocal->name,name))
{
g_pFind = plocal;
return 1;
}
plocal = plocal->next;
}
return 0;
}
void SetHeadPosition(void)
{
if(g_pAddrHead == NULL) return;
while(g_pAddrHead->prev)
{
g_pAddrHead = g_pAddrHead->prev;
}
}
void SetTailPosition(void)
{
if(g_pAddrHead == NULL) return;
while(g_pAddrHead->next)
{
g_pAddrHead = g_pAddrHead->next;
}
}
void Remove_addr(void)
{
ADDR *plocal;
if(g_pAddrHead == NULL) return;
SetHeadPosition();
while(g_pAddrHead)
{
plocal = g_pAddrHead->next;
free(g_pAddrHead);
g_pAddrHead = plocal;
}
g_pAddrHead = NULL;
}
void Add_addr(void)
{
ADDR addr;
memset(&addr,0,sizeof(ADDR));
printf("\n\nName: ");gets(addr.name);
if(strlen(addr.name) == 0) return;
printf("TEL: ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);
if(find_list(addr.name) == 1)
{
printf("\n已經存在的姓名.\n\n");
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
return;
}
if(add_list(&addr))
{
g_bSaved = 0;
printf("\n儲存完畢.\n\n");
}
}
void Find_addr(void)
{
char buff[100] ={0,};
ADDR *plocal;
printf("\n\n請輸入要查找的姓名/電話/地址.\n");
printf("姓名/電話/地址 :");gets(buff);
if(strlen(buff) == 0) return;
SetHeadPosition();
plocal = g_pAddrHead;
g_pFind = NULL;
while(plocal)
{
if(strstr(plocal->name,buff))
{
g_pFind = plocal;
break;
}
if(strstr(plocal->tel,buff))
{
g_pFind = plocal;
break;
}
if(strstr(plocal->addr,buff))
{
g_pFind = plocal;
break;
}
plocal = plocal->next;
}
if(g_pFind)
{
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
}
else
{
printf("\n\n搜索不到要找的%s.\n\n",buff);
}
}
void Modify_addr(void)
{
char name[100] = {0,};
ADDR addr;
while(1)
{
printf("\n\n要修改的姓名: ");gets(name);
if(strlen(name) == 0) return;
if(find_list(name) == 0)
{
puts("輸入的姓名不存在.");
continue;
}
break;
}
printf("\n%s的通訊錄如下:\n\n",name);
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
printf("\n輸入要修改的姓名/電話/地址.\n\n");
printf("NAME: ");gets(addr.name);
printf("TEL : ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);
if(strlen(addr.name)==0) strcpy(addr.name,name);
strcpy(g_pFind->name,addr.name);
strcpy(g_pFind->tel,addr.tel);
strcpy(g_pFind->addr,addr.addr);
g_bSaved = 0;
printf("%s的通訊錄修改成功.\n",name);
}
void Delete_addr(void)
{
char name[100] ={0,};
ADDR *plocal;
int ch;
while(1)
{
printf("\n\n要刪除的姓名: ");gets(name);
if(strlen(name)==0) return;
if(find_list(name) == 0)
{
puts("要刪除的通訊錄不存在.");
continue;
}
break;
}
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
printf("確定要刪除%s的通訊錄嗎(y/n)?",name);
ch = getch();
fflush(stdin);
if(ch == 'Y'||ch == 'y')
{
if(g_pFind->prev == NULL)
{
if(g_pFind->next == NULL)
{
free(g_pFind);
g_pAddrHead = NULL;
}
else
{
plocal = g_pFind->next;
free(g_pFind);
plocal->prev =NULL;
g_pAddrHead = plocal;
}
}
else if(g_pFind->next == NULL)
{
plocal = g_pFind->prev;
free(g_pFind);
plocal->next =NULL;
g_pAddrHead = plocal;
}
else
{
plocal = g_pFind->prev;
plocal->next = g_pFind->next;
plocal = g_pFind->next;
plocal->prev = g_pFind->prev;
free(g_pFind);
g_pAddrHead = plocal;
}
g_bSaved = 0;
printf("\n\n刪除完畢.\n\n");
}
}
void Print_addr(void)
{
int count = 1;
ADDR *plocal;
SetHeadPosition();
if(g_pAddrHead == NULL)
{
printf("\n\n無任何數據\n");
return;
}
plocal = g_pAddrHead;
while(plocal->prev)
{
plocal=plocal->prev;
}
printf("\n\n");
while(plocal)
{
printf("NO.%d\n",count++);
puts(plocal->name);
puts(plocal->tel);
printf("%s\n\n",plocal->addr);
printf("請按任意一健(結束:q)\n\n");
getch();
if(getch() == 'q')return;
plocal=plocal->next;
}
}
void Save_addr(void)
{
ADDR *plocal, *pn;
FILE *fp;
if(g_pAddrHead == NULL) return;
fp = fopen(ADDRFILE,"w+b");
if(fp == NULL)
{
perror("file open error;");
return;
}
SetHeadPosition();
plocal = g_pAddrHead;
while(plocal)
{
pn = plocal->next;
plocal = pn;
}
printf("\n所有數據已經儲存完畢.");
g_bSaved = 1;
fclose(fp);
} 嘿嘿,給分吧
㈧ 用c語言編寫程序:計算班級每位學生的平均成績。
第一題:
#include "stdio.h"
float *Grade(float *num,int i) //用來冒泡排序 num傳入數組指針,i傳入數組個數
{
int j,k;
float temp;
for (j=0;j<i;j++)
for (k=0;k<i-j;k++)
{
if (num[k]<num[k+1])
{
temp=num[k];
num[k]=num[k+1];
num[k+1]=temp;
}
}
return num;
}
void main()
{
float num[100];
int i=0,j=0,iavg=0; //i=數組個數,j=循環,iavg=高於平均成績人數
float avg=0,sum=0; //avg=平均成績,sum=總成績
printf("請輸入成績,按Ctrl+D結束:");
while (scanf("%f",&num[i])) //循環輸入成績
{
sum+=num[i];
i++;
}
avg=sum/i;
printf("平均分為%.1f\n",avg);
Grade(num,i);
printf("所有學生的成績為:");
for (j=0;j<i;j++)
{
printf("%.1f ",num[j]);
if (num[j]>avg)
iavg++;
}
printf("\n高於平均人數的有%d人\n",iavg);
}
第二題:
#include "stdio.h"
int digit(int i,int *dinum)
{
int j=0,k=0;
while (i=0) //計算位數
{
dinum[k]=i%10; //將數字存入數組
i=i/10;
j++;k++;
}
return j;
}
void main()
{
int inum,dinum[10],i,j; //inum=整數 dinum=存各個數字的數組 i,j=循環需要
printf("請輸入整數:");
scanf("%d",&inum);
j=digit(inum,dinum);
printf("該整數為 %d 位\n",j);
printf("數字分別為:");
for (i=j-1;i>=0;i--)
{
printf("%d ",dinum[i]);
}
}
第三題:
#include "stdio.h"
int fun(int *a)
{
int i=1,j=0;
for (i;i<1000;i++)
{
if ((i%7==0||i%11==0)&&!(i%7==0&&i%11==0))
{
a[j]=i;
j++;
}
}
return j;
}
void main()
{
int a[500],i,j;
j=fun(a);
for (i=0;i<j;i++)
{
printf("%d ",a[i]);
if (i%15==0)
printf("\n");
}
以上代碼均在VC6.0中編譯通過,現在1點了。後面的題以後再說
㈨ C語言作業編寫一個程序輸入學生分數,統計及格人數和算平均分
#include<stdio.h>
#include<stdlib.h>
typedefstructlist
{
charnumber[10];
floatmark;
}COUNT;
intmain()
{
COUNTaa[100];
inti;
intcount=0;
floatsum=0;
for(i=1;i<=10;i++)
{
scanf("%s",aa[i].number);
scanf("%g",&aa[i].mark);
sum+=aa[i].mark;
if(aa[i].mark>=60)
{
count++;
}
}
if(count==0)printf("that'sbad
");
elseif(count==10)printf("that'sgood
");
elseprintf("justsoso
");
doubleanverage=sum/10.;
printf("Anverage=%lf",anverage);
return0;
}
㈩ C語言編寫函數,求10個學生的平均成績,使用數組
1、首先打開visual studio 2019軟體,新建一個win32控制台程序。