c語(yǔ)言用while輸入n個(gè)成績(jī),輸出他們的等級(jí)劃分,并統(tǒng)計(jì)人數(shù)
- 資格考試
- 2022-11-23 07:56:30
C語(yǔ)音~(yú)~輸入N位學(xué)生的成績(jī),統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù),統(tǒng)計(jì)結(jié)果存入數(shù)組,并輸出
數(shù)組在定義的時(shí)候是要定義大小的。我理解的你的意思是:先輸入要統(tǒng)計(jì)的學(xué)生的數(shù)目N,也既是定義一個(gè)大小為N的數(shù)組,有一個(gè)偷懶的方法就是你預(yù)先定義一個(gè)很大的數(shù)組,遠(yuǎn)超過(guò)你能使用的極限,比如你可能統(tǒng)計(jì)100人的成績(jī),你可以預(yù)先定義一個(gè)大小為1000的數(shù)組來(lái)存儲(chǔ)成績(jī),這樣就可以用for循環(huán)了,只是在輸入成績(jī)的時(shí)候你要有一個(gè)判斷來(lái)告訴程序你的輸入結(jié)束,比如當(dāng)你輸入的成績(jī)超過(guò)100時(shí)判定輸入結(jié)束。但是這樣的定義浪費(fèi)了內(nèi)存。 更好的方法是動(dòng)態(tài)建立一個(gè)數(shù)組,我用C++實(shí)現(xiàn),下面是程序,你看看 #includec語(yǔ)言編程,輸入n個(gè)學(xué)生的成績(jī),以輸入-1表示輸入結(jié)束,輸出學(xué)生的人數(shù),總分(不顯示小數(shù))及平均值(...
#include
#include
intmain()
{
inti=0;//學(xué)生人數(shù)計(jì)數(shù)器
floatn;
doublesum=0;
printf("請(qǐng)依次輸入學(xué)生成績(jī)以-1結(jié)束:\n");
while(n!=-1)
{
scanf("%f",&n);
sum=sum+n;
i++;
}//當(dāng)i==-1時(shí)sum-1且i+1所以下邊總分要是i-1,總分為sum+1;時(shí)間不夠沒(méi)改到很好見(jiàn)諒
printf("學(xué)生人數(shù):%d\n",i-1);
printf("總分:%.0f\n",sum+1);//
printf("平均分:%.2f\n",(sum+1)/(i-1));
return0;
}
c語(yǔ)言求助 輸入n個(gè)學(xué)生的考試成績(jī),求出其中最高分、最低分以及超過(guò)平均分的人數(shù)(使用動(dòng)態(tài)分配)
你想輸入多少輸入多少,我就輸入4個(gè)分?jǐn)?shù)測(cè)試。
#include
#include
typedefstructstud
{
intscore;
structstud*next;
}STD;
STD*insertScore(STD*stdHead,STD*stdTail);//錄入成績(jī)
voidprintfSTD(STD*stdHead);//打印鏈表數(shù)據(jù)
int*tjSTD(STD*stdHead);//統(tǒng)計(jì)返回[3]數(shù)組,分別表示最高分最低分超過(guò)平均分人數(shù)
intmain()
{
int*redata=NULL;
STD*stdHead=(STD*)malloc(sizeof(STD));
stdHead->next=NULL;
STD*stdTail=NULL;
do{
stdTail=insertScore(stdHead,stdTail);
}while(stdTail);
printfSTD(stdHead);
redata=tjSTD(stdHead);
printf("最高分:%d,最低分:%d,超過(guò)平均分的人數(shù):%d\n",redata[0],redata[1],redata[2]);
return0;
}
voidprintfSTD(STD*stdHead)//打印數(shù)據(jù)
{
while(stdHead->next!=NULL)
{
printf("%d\n",stdHead->next->score);
stdHead=stdHead->next;
}
}
int*tjSTD(STD*stdHead)//統(tǒng)計(jì)返回[3]數(shù)組,分別表示最高分最低分超過(guò)平均分人數(shù)
{
intmax=-1,min=-1,sum=0,count=0,*reData;
floatave;
STD*stdHeadSave=stdHead;
reData=(int*)malloc(sizeof(int)*3);
while(stdHead->next!=NULL)
{
if(max==-1||maxnext->score)
max=stdHead->next->score;
if(min==-1||min>stdHead->next->score)
min=stdHead->next->score;
sum=sum+stdHead->next->score;
count++;
stdHead=stdHead->next;
}
ave=(float)sum/count;
printf("總?cè)藬?shù):%d,平均分:%f\n",count,ave);
count=0;
stdHead=stdHeadSave;
while(stdHead->next!=NULL)
{
if(stdHead->next->score>ave)
count++;//大于平均分的人數(shù)
stdHead=stdHead->next;
}
reData[0]=max;reData[1]=min;reData[2]=count;
returnreData;
}
STD*insertScore(STD*stdHead,STD*stdTail)//錄入成績(jī)
{
intscore;
printf("輸入成績(jī)(輸入-1結(jié)束錄入):");
scanf("%d",&score);
if(score==-1)
returnNULL;
STD*stdNew=(STD*)malloc(sizeof(STD));
stdNew->score=score;
stdNew->next=NULL;
if(stdHead->next==NULL)
stdHead->next=stdNew;
else
stdTail->next=stdNew;
stdTail=stdNew;
returnstdTail;
}
c語(yǔ)言1)按成績(jī)高低排序,輸出排序后的成績(jī);2)統(tǒng)計(jì)并輸出不及格成績(jī)、人數(shù);3)輸出最高分、最低分?
根據(jù)題目中信息所示:僅輸入一科目成績(jī);人數(shù)不作為參數(shù)輸入;
現(xiàn)在假設(shè):及格線(xiàn)為60分(題目未明確給出)
#include
//#include< cstring>
//#include
typedef struct {
int grade;
}student;
//選擇排序
void selectSort(student stu[10],int n){
for(int i=0;i<=n;i++)
{int k=i;
for(int j=k+1;j<=n;j++){
if(stu[j].grade>stu[k].grade)
{k=j;
}}
int temp=stu[i].grade;
stu[i].grade=stu[k].grade;
stu[k].grade=temp;}}
//數(shù)據(jù)輸出
void display(student stu[10],int n)
{
for(int j=0;j
printf("%d ",stu[j].grade);
printf("\n");}
//數(shù)據(jù)最大值與最小值
void poll_values(student stu[2],int n){
printf("%d %d",stu[0].grade,stu[n].grade);
printf("\n");
}
int main(){
student stu[10];
student fail[10];
student poll[2];
int n=0;//總?cè)藬?shù)
int m=0;//不及格人數(shù)
while(n<10){
scanf("%d",&stu[n].grade);
if(stu[n].grade<0){
break;
}
++n;}
selectSort(stu,n);
//--------------------------------------
for(int i=0;i
if(stu[i].grade<60){
fail[m]=stu[i];
++m;}
selectSort(fail,m);
display(stu,n);
display(fail,m);
poll[0]=stu[0];
poll[1]=stu[n-1];
display(poll,2);
//poll_values(stu,n)
return 0;
}
運(yùn)行結(jié)果如下
輸入一個(gè)正整數(shù)n,再輸入n個(gè)學(xué)生的成績(jī),計(jì)算平均分,并統(tǒng)計(jì)各等級(jí)成績(jī)的個(gè)數(shù)
#include
main()
{
int n,i;
int A=0,B=0,C=0,D=0,E=0;//用來(lái)統(tǒng)計(jì)各階段學(xué)生成績(jī)的人數(shù),初始值都為0;
float score;//定義成績(jī)變量;
float ave=0;//定義平均成績(jī)
float num=0;//定義全部成績(jī)總和
scanf("%d",&n);//從鍵盤(pán)輸入學(xué)生成績(jī)的個(gè)數(shù)
for(i=1;i<=n;i++)
{
scanf("%f",&score);//輸入每個(gè)學(xué)生的成績(jī),共有n個(gè)學(xué)生
num+=score;//計(jì)算總成績(jī)
switch(score)//switch 語(yǔ)句來(lái)計(jì)算各個(gè)分?jǐn)?shù)段的成績(jī)個(gè)數(shù)
{
case score>=90&&score<=100:A++;
case score>=80&&score<=89:B++;
case score>=70&&score<=79:C++;
case score>=60&&score<=69:D++;
case score>=0&&score<=59:E++;
default:break;
}
}
ave=num/n;//計(jì)算平均成績(jī)
printf("%f",ave);//輸出平均成績(jī)
printf("%d",A);//輸出成績(jī)?cè)?0-100的個(gè)數(shù)
printf("%d",B);//輸出成績(jī)?cè)?0-89的個(gè)數(shù)
printf("%d",C);//輸出成績(jī)?cè)?0-79的個(gè)數(shù)
printf("%d",D);//輸出成績(jī)?cè)?0-69的個(gè)數(shù)
printf("%d",E);//輸出成績(jī)?cè)?-59的個(gè)數(shù)
}
擴(kuò)展資料:
正整數(shù),為大于0的整數(shù),也是正數(shù)與整數(shù)的交集。正整數(shù)又可分為質(zhì)數(shù),1和合數(shù)。正整數(shù)可帶正號(hào)(+),也可以不帶。如:+1、+6、3、5,這些都是正整數(shù)。 0既不是正整數(shù),也不是負(fù)整數(shù)(0是整數(shù))。
以0為界限,將整數(shù)分為三大類(lèi):
1、正整數(shù),即大于0的整數(shù),如,1,2,3…
2、0既不是正整數(shù),也不是負(fù)整數(shù)(0是整數(shù))。
3、負(fù)整數(shù),即小于0的整數(shù),如,-1,-2,-3…
參考資料來(lái)源:百度百科-正整數(shù)