⑴ 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;
}