當前位置:首頁 » 編程語言 » c語言考試題循環錄入學生成績
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言考試題循環錄入學生成績

發布時間: 2022-12-16 22:58:08

c語言 循環輸入張三同學s1結業考試的5門課成績,並計算平均分,

#include<stdio.h>
intmain()
{
inti;
floata[5],sum=0;
printf("請輸入張三五門課成績: ");
for(i=0;i<5;i++)
{
scanf("%f",&a[i]);
sum+=a[i];
}
printf("平均分:%f",sum/5);
return0;
}

代碼如上,正確請採納

⑵ c語言 循環結構編程 輸入若干個學生成績, 若輸入數據大於100或小於0則循環結束, 最後求成績的平均值

#include<stdio.h>

#defineARR_LEN50/*數組長度*/

intmain(void){
intcount,i;
floatscore[ARR_LEN],sum,average;

puts("請分別輸入每個學生的成績:");
count=i=sum=0;

while(1){
printf("第%d個學生:",i+1);
scanf("%f",&score[i]);
if(score[i]<=100&&score[i]>=0){/*成績輸入合法*/
sum+=score[i];/*累加求總分*/
i++;/*計數器+1*/
}
else{/*成績輸入非法*/
count=i;/*記錄成績合法的學生人數*/
printf("成績輸入完成!共%d名學生。 ",count);
break;/*結束循環*/
}
}

average=sum/count;
printf(" %d名學生的平均分為:%.2f ",count,average);

getch();/*屏幕暫留*/
return0;
}

運行結果

⑶ 求用C語言設置一個循環輸入多個學生的語文、數學和英語成績,並分別統計顯示3個學科的平均成績和總成績!

利用一個標志循環 然後 用 count 記錄 人數 sum1 sum2 sum3 分別統計 語文 數學 英語的總成績 就行了嘛
int count = sum1 = sum2 = sum3 = 0;
char ch = scanf("%c",&ch);
while(ch == 'y' || 'Y'){
int chinese = scanf("%d",&chinese);

sum1 += chinese;
..... // 自己加上數學和英語
ch = scanf("%c",&ch);
count ++;

}
int ave = sum / count;

這樣應該差不多了 很久沒寫C了 都不太記得格式了

⑷ C語言,循環錄入5個人的成績,輸出成績大於等於80的人數比例。

#include<stdio.h>

intmain(){
inti,n=5,chengji,count=0;
for(i=1;i<=n;i++)
{
printf("請輸入第%d為學生的成績:",i);
scanf("%d",&chengji);
if(chengji>=80)
count++;
}
printf("80分以上的學生的比例是%d0%% ",count*2);
return0;
}

⑸ 使用do-while循環實現錄入學生姓名和成績功能。要求循環錄入學生姓名和

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
int studentNum = 0;
#define MAXSTUDENT (1024)
#define CheckData()\
{\
if(!studentNum)\
{\
printf("沒有學生數據,按任意鍵返回……\n");\
getch();\
return;\
}\
}\

typedef struct Student
{
int id;
int cScore;
int mathScore;
}Student;
void ClearStudent(Student* student)
{
memset((void*)student,0,sizeof(*student));
}
void ShowMainMenu()
{
system("cls");
printf("1.增加記錄\n2.計算每個學生的總成績\n3.計算每門課程的平均成績\n4.按座號查詢學生的成績\n5.按總分排名\n6.輸出前n名的學生的成績\n7.修改成績\n0.退出\n");
}
void ShowCountScore(const Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
printf("學生%04d的總成績:%d\n",(student+i)->id,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意鍵繼續……");
getch();
}
void ShowClassAvg(const Student* student)
{
system("cls");
CheckData();
double sumc = 0;
double summath = 0;
for(int i = 0;i < studentNum;i++)
{
sumc += (student+i)->cScore;
summath += (student+i)->mathScore;
}
printf("C語言平均成績為:%lf\n",sumc/studentNum);
printf("數學平均成績為:%lf\n",summath/studentNum);
printf("\n按任意鍵繼續……");
getch();
}
void AddStudent(Student* student)
{
system("cls");
if(studentNum == MAXSTUDENT)
{
printf("人數已滿,按任意鍵返回……\n");
getch();
}
printf("分別錄入座號、C語言成績、數學成績:\n");
int id = 0;
int cScore = 0;
int mathScore = 0;
scanf("%d%d%d",&id,&cScore,&mathScore);
for(int i = 0 ;i < studentNum;i++)
if((student+i)->id == id)
{
printf("座號重復,按任意鍵返回……\n");
getch();
return;
}
(student+studentNum)->id = id;
(student+studentNum)->cScore = cScore;
(student+studentNum)->mathScore = mathScore;
studentNum++;
}
void SelectFromID(const Student* student)
{
system("cls");
CheckData();
printf("輸入查詢ID:\n");
int id = 0;
scanf("%d",&id);
printf("查詢結果:\n");
for(int i = 0;i<studentNum;i++)
if(id == (student+i)->id)
{
printf("C語言成績為:%d\n數學成績為:%d\n",(student+i)->cScore,(student+i)->mathScore);
break;
}
printf("\n按任意鍵繼續……");
getch();
}
void SortForCount(Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
{
for(int j = studentNum -1;j > i;j--)
if(((student+j)->cScore+(student+j)->mathScore) > ((student+j-1)->cScore+(student+j-1)->mathScore))
{
Student stu;
stu = *(student+j);
*(student+j) = *(student+j-1);
*(student+j-1) = stu;
}
}
}
void SortForN(Student* student,int n)
{
SortForCount(student);
if(!studentNum)
return;
n = n>studentNum?studentNum:n;
for(int i = 0;i< n;i++)
printf("第%d名:\nID:%d\nC語言成績為:%d\n數學成績為:%d\n總分為:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意鍵繼續……");
getch();
}
void UpdateScore(Student* student)
{
system("cls");
CheckData();
printf("輸入修改ID:\n");
int id = 0;
scanf("%d",&id);
int i = 0;
for(;i<studentNum;i++)
if(id == (student+i)->id)
break;
if(i == studentNum)
printf("\n查無此人,按任意鍵繼續……");
else
{
printf("輸入欲修改的C語言成績、數學成績:\n");
int cScore = 0;
int mathScore = 0;
scanf("%d%d",&cScore,&mathScore);
(student+i)->cScore=cScore;
(student+i)->mathScore = mathScore;
printf("\n按任意鍵繼續……");
}
getch();
}
void RunStudent(Student* student)
{
while(1)
{
ShowMainMenu();
char chGet = getch();
switch(chGet)
{
case '1':
AddStudent(student);
break;
case '2':
ShowCountScore(student);
break;
case '3':
ShowClassAvg(student);
break;
case '4':
SelectFromID(student);
break;
case '5':
SortForCount(student);
for(int i =0;i<studentNum;i++)
printf("第%d名:\nID:%d\nC語言成績為:%d\n數學成績為:%d\n總分為:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意鍵繼續……");
getch();
break;
case '6':
{
int n = 0;
printf("輸入N:\n");
scanf("%d",&n);
SortForN(student,n);
}
break;
case '7':
UpdateScore(student);
break;
case '0':
return;
default:
break;
}
}
}
int main()
{
Student* allStudent = (Student*)malloc(MAXSTUDENT*sizeof(Student));
memset((void*)allStudent,0,MAXSTUDENT*sizeof(Student));
RunStudent(allStudent);
return 0;
}

⑹ C語言循環輸入一個學生5門課程的成績,計算所有大於60分課程成績的平均分,為什麼我的結果平均分永遠為0

統計大於60分課程的總成績和課程數即可求得平均分

沒有看懂你的for循環意義何在

另外如果c和j 都是整型數,那麼c/j 默認也為整型數,若不能除盡則會損失精度

所以求平均分d=c/j 時要先進行類型轉換:d=(float)c/j; 或 d=1.0*c/j

修改後的代碼如下:

#include <stdio.h>

int main() {

int a, b = 0, c = 0;

float d;

int i = 1, j = 0;

while (i <= 5) {

printf("請輸入第%d門成績: ", i);

scanf("%d", &a);

i++;

b += a; // 統計所有課程的總分

if (a > 60) {

c += a; // 統計大於60分課程的總分

j++; // 統計大於60分的課程數

}

}

d = (float)c / j; // 求平均分,注意類型轉換

printf("該學生的總分為%d ", b);

printf("所有大於60分課程成績的平均分為%.2f", d);

return 0;

}

符合題意,望採納~

⑺ c語言 定義數組,使用循環輸入五名學生的成績,並輸出所有學生的成績信息

#include<stdio.h>

typedefstruct{
charname[1024];
intscore;
}Student;

intmain(){
inti;
Studentstudents[]={{"張三",90},{"李四",88},{"王五",99},{"趙四",66},{"齊秦",59}};
printf("學生的信息如下: ");
for(i=0;i<5;i++){
printf("%s%d ",students[i].name,students[i].score);
}
return0;
}

⑻ C語言編程題:求輸入的10個學生的成績之和(循環結構演算法)

#include<stdio.h>
int main()
{
double score,sum = 0;
printf("請輸入10個學生的分數:\n");
for(int i = 0;i < 10;i++)
{
scanf("%lf",&score);
sum += score;
}
printf("成績之和為: %lf\n",sum);
return 0;
}

⑼ C語言,循環輸入n個學生成績,當成績大於等於90,輸出」A」,當成績大於或等於80並且小於90時,輸出」B」

#include<stdio.h>

#defineARRAY_LEN100/*數組長度*/

intmain(void){
intlen,i,flag;
intarr[ARRAY_LEN],arr_target[ARRAY_LEN];

printf("請輸入學生人數: ");
scanf("%d",&len);
printf("====================================================== ");

printf("請輸入%d個學生的成績: ",len);
for(i=0,flag=1;i<len&&flag!=0;i++){
printf("第%d學生:",i+1);
scanf("%d",&arr[i]);
if(arr[i]<=0){
printf("成績輸入錯誤!程序結束! ");
flag=0;
}
if(flag==0)
break;
}
printf("====================================================== ");

if(flag){
printf("%d個學生成績級別: ",len);
for(i=0;i<len;i++){
if(arr[i]>=90)printf("第%d學生:成績%d,級別A ",i+1,arr[i]);
elseif(arr[i]>=80&&arr[i]<90)printf("第%d學生:成績%d,級別B ",i+1,arr[i]);
elseif(arr[i]>=60&&arr[i]<80)printf("第%d學生:成績%d,級別C ",i+1,arr[i]);
elseif(arr[i]<60)printf("第%d學生:成績%d,級別D ",i+1,arr[i]);
}
}

return0;
}

執行結果

成績輸入正確時:

⑽ c語言,1.先輸入學生數,再循環輸入成績,輸出平均分並統計不及格的人數 2.輸入成績直到成績為負

#include<stdio.h>
#definemaxn1024
intmarks[maxn];
voidQ1(void)
{
intn,i;scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&marks[i]);
intcot=0,sum=0;
for(i=0;i<n;i++)
{
sum+=marks[i];
if(marks[i]<60)cot++;
}
printf("%d%d ",sum/n,cot);
return;
}
voidQ2(void)
{
intk=0;
while(scanf("%d",&marks[k])==1&&marks[k]>=0)
k++;
return;
}
intmain(void)
{
Q1();
Q2();
return0;
}