‘壹’ c语言 学生成绩排序 按学生的序号输入 n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩
#include<stdio.h>
#include<malloc.h>
typedefstructstudent
{
intid;
intscore;
structstudent*next;
}STU;
intstuIndex;
voidinputStuInfo(STU*stuHead);//输入学生信息
voidorderStuInfo(STU*stuHead);//按照分数高到低顺序重组链表
voidprintStuInfo(STU*stuHead,intflag);//打印学生信息。参数flag=0:正常打印链表信息。flag!=0:打印排序后的名次信息
intmain()
{
STU*stuHead=(STU*)malloc(sizeof(STU));
stuHead->next=NULL;
stuIndex=1;
inputStuInfo(stuHead);
printf("--打印原始输入的链表!--
");
printStuInfo(stuHead,0);
printf("--开始按分数降序排列!--
");
orderStuInfo(stuHead);
printf("--链表按降序重组完成!--
");
printf("--打印降序排序的链表!--
");
printStuInfo(stuHead,1);
return0;
}
voidorderStuInfo(STU*stuHead)
{
STU*stuSave1=NULL,*stuSave2=NULL,stuSave3;
stuSave1=stuHead;
while(stuSave1->next!=NULL)//冒泡排序
{
stuSave2=stuSave1->next;
while(stuSave2->next!=NULL)
{
if(stuSave1->next->score<stuSave2->next->score)//交换成员值,保留原链表指针值
{
stuSave3=*(stuSave1->next);
stuSave1->next->id=stuSave2->next->id;
stuSave1->next->score=stuSave2->next->score;
stuSave2->next->id=stuSave3.id;
stuSave2->next->score=stuSave3.score;
}
stuSave2=stuSave2->next;
}
stuSave1=stuSave1->next;
}
}
voidprintStuInfo(STU*stuHead,intflag)
{
inti=1;
while(stuHead->next!=NULL)
{
if(flag==0)
printf("学生%d,成绩%d
",stuHead->next->id,stuHead->next->score);
else
printf("第%d名,学生%d,成绩%d
",i++,stuHead->next->id,stuHead->next->score);
stuHead=stuHead->next;
}
}
voidinputStuInfo(STU*stuHead)
{
intscore;
STU*stuNew=NULL,*stuTail=NULL;
while(1)
{
printf("输入学生%d的成绩:(输入负数结束输入)",stuIndex);
scanf("%d",&score);
if(score<0)
break;
stuNew=(STU*)malloc(sizeof(STU));
stuNew->score=score;
stuNew->id=stuIndex;
stuNew->next=NULL;
if(stuHead->next==NULL)
stuHead->next=stuNew;
else
stuTail->next=stuNew;
stuTail=stuNew;
stuIndex++;
}
}
‘贰’ C语言利用数组实现输入N名学生成绩,有小到大进行排序,并计算平均分
这应该能满足要求了:
#include <stdio.h>
void Sort(float* arr, int len) {
double temp;
int i , j;
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
float AvgGrade(float* arr,int len) {
int i = 0;
double result = 0;
for (; i < len; i++) {
result += arr[i];
}
return result;
}
int main() {
float arr[100], temp = 0;
int n, i;
n = 0;
printf("输入学生的成绩,可以连续输入,直到输入一个小于0的数:\n");
scanf("%f", &temp);
while (temp >= 0) {
arr[n++] = temp;
scanf("%f", &temp);
}
printf("平均分为%f\n", AvgGrade(arr, n));
printf("排序后的分数为:\n");
Sort(arr, n);
for (i = 0; i < n; i++) {
printf("%f\t",arr[i]);
if ((i + 1) % 5 == 0)
printf("\n");
}
return 0;
}
‘叁’ c语言 输入n个同学的某门课程成绩编写函数计算平均分 用 while 循环
int n,s,sum;
scanf("%d",&n);//n位同学
while(n--){
scanf("%d",&s);//输入同学的成绩
sum+=s;//n位同学的成绩总和
}
double x=(double)sum/n; //平均分,强制转换为浮点数
printf("%.2f", x); //保留两位小数
‘肆’ C语言:输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的个数。
#include <stdio.h>
int main(int argc, char *argv[])
{
int count,i,sum=0,avg;
int score[20];
int count_A=0,count_B=0,count_C=0,count_D=0,count_E=0;
printf("你要输入几个学生的成绩:");
scanf("%d",&count);
printf("请输入%d个学生的成绩 ",count);
for(i=0;i<count;i++){
scanf("%d",&score[i]);
}
for(i=0;i<count;i++){
sum+=score[i];
}
avg=sum/count;
for(i=0;i<count;i++){
if(score[i]<=100&score[i]>=90) count_A++;
else if(score[i]<90&score[i]>=80) count_B++;
else if(score[i]<80&score[i]>=70) count_C++;
else if(score[i]<70&score[i]>=60) count_D++;
else if(score[i]<600&score[i]>=0) count_E++;
else {}
}
printf("A等的成绩个数有:%d个 ",count_A);
printf("B等的成绩个数有:%d个 ",count_B);
printf("C等的成绩个数有:%d个 ",count_C);
printf("D等的成绩个数有:%d个 ",count_D);
printf("E等的成绩个数有:%d个 ",count_E);
getch();
}
这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。
(4)用c语言录入n名学生的成绩扩展阅读
起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。
K&R C主要介绍了以下特色:
结构体(struct)类型
长整数(long int)类型
无符号整数(unsigned int)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。
即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。
‘伍’ C语言。输入n个学生的姓名,语文,数学,英语成绩,
#include <stdio.h>
float average;
}stu[N],temp;
void main()
printf("请依次输入%d个学生的姓名、语文成绩、数学成绩、英语成绩: ",N);
scanf("%s%d%d%d",&stu[i].name,&stu[i].yuwen,&stu[i].shuxue,&stu[i].yingyu);
stu[i].average=(stu[i].yuwen+stu[i].shuxue+stu[i].yingyu)/3.0;
printf(" 姓名 语文 数学 英语 平均分 ");
for(i=0;i<N;i++)
简介
C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。