C语言编程学生成绩统计程序修改,求大神帮助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程学生成绩统计程序修改,求大神帮助相关的知识,希望对你有一定的参考价值。

int main()
int score[Student_N],n;
long num[Student_N];
float aver;char a;
printf("input the total number of the students(n<=30):");
scanf("%d",&n);
Readscore();
do
Listing();
printf("确定退出?\n1.Y2.N\n");
scanf("%c",&a);
while(a=='Y');
//Print(score,num,n);
return 0;

//选择
void Listing()

int n;
printf("1.Add record\n2.Caculate total and average score of course\n");
printf("3.Sort in descending order by score\n4.Sort in ascending order by number\n");
printf("5.Search by number\n6.Statistic analysis\n7.List record\n0.Exit");
printf("Please enter your choice:");
scanf("%d",&n);
switch (n);
case 1: Addscore();break;
case 2: Averforcourse();break;
case 3: SortSelect();break;
case 4: NUMSelect();break;
case 5: BinSearch();break;
case 6: Statistic();break;
case 7: Printstud();break;
case 0: break;

// 成绩表选择排序方式
void NUMSelect()

int p;
printf("1.选择排序法\n2.交换排序法");
scanf("%d",&p);
switch (p);
case 1: SelectionNUM (int num[];int n;int score[][2]);break;
case 2: DataSorting(int score[][2],int n,int rank[]); break;


//折半法-按学号查找学生排名及其考试成绩 0
void BinSearch(long num[],long x ; int n)

int low=0,high=n-1,mid;
while(low<=high)

mid=(high+low)/2;
if(x>num[mid]) low=mid+1;
else if(x<num[mid])
high=mid-1;
else
return mid;



(只是部分程序,受字数限制只能发这么多) 可以发完整程序的~

我觉得问题出在do-while循环里,你问确定退出?那么输入Y也就是输入yes的时候,应该跳出循环了。所以应该改为while(a==\'N\')。 参考技术A 编译器报什么错?

求Linux大神帮忙!!!!

文件pc.txt中保存了某班学生的数学成绩(第一项S*为学生学号,第二项数字为成绩),试编写一段shell程序完成以下操作:①按A(90-100)、B(80-89)、C(70-79)、D(60-69)、E(不及格)五档对成绩进行统计、计算后输出各个分数段的学生人数及总平均分;
②将各分数段的信息分别存入A、B、C、D、E五个文件中(在统计过程中动态完成)。
#!/bin/bash
numa=0
numb=0
numc=0
numd=0
nume=0
marka=0
markb=0
markc=0
markd=0
marke=0
while read line
do
mark=`echo $line | awk -F: 'print $2'`
if $mark >= 90
then numa=`expr $numa + 1`
marka=`expr $marka + $mark`
#else if $mark -ge 80 -a $mark -lt 90
#then numb=`expr $numb + 1`
#markb=`expr $markb + $mark`
#else if $mark -ge 70 -a $mark -lt 80
#then numc=`expr $numc + 1`
#markc=`expr $markc + $mark`
#else if $mark -ge 60 -a $mark -lt 70
#then numd=`expr $numd + 1`
#markd=`expr $markd + $mark`
#else nume=`expr $nume + 1`
#marke=`expr $marke + $mark`
#fi
#fi
#fi
fi
done < ./pc.txt
ah=`expr $marka \/ $numa`
#al=`expr $marka - $ah \* $numa`
bh=`expr $markb \/ $numb`
#bl=`expr $markb - $bh \* $numb`
ch=`expr $markc \/ $numc`
#cl=`expr $markc - $ch \* $numc`
dh=`expr $markd \/ $numd`
#dl=`expr $markd - $ch \* $numd`
eh=`expr $marke \/ $nume`
#el=`expr $marke - $ch \* $nume`
echo "A等学生有$numa人学生平均成绩: $ah"

echo "B等学生有$numb人学生平均成绩: $bh"

echo "C等学生有$numc人学生平均成绩: $ch"

echo "D等学生有$numd人学生平均成绩: $dh"

echo "E等学生有$nume人学生平均成绩: $eh"

是这么写么?判断成绩的语句不太对,应该怎么改啊?

#其中的if语句可以这么写。 
if [ $mark -ge 90 ]; then
    let numa+=1
elif [ $mark -ge 80 -a $mark -lt 90 ]; then
    let numb+=1
elif [ $mark -ge 70 -a $mark -lt 80 ]; then
    let numc+=1
elif [ $mark -ge 60 -a $mark -lt 70 ]; then 
    let numd+=1
else
    let nume+=1
fi

追问

还有“将各分数段的信息分别存入A、B、C、D、E五个文件中(在统计过程中动态完成)。”这个呢???
还有怎么能把代码在网页上显示成这样而不是普通格式的文本???

追答

分段存入文件,就是在各个if分支中用输出重定向。
比如,第一个if分支中,echo "$line" >>A
网页我不懂,第二个问题回答不了。

参考技术A 问题出在这个%c上,并不是所有的数字都有对应的ascii的,有些没有当然是乱码了,另外还和你terminal的lang环境变量,语言和字符编码是对应关系的,这都影响解码。
是否可以解决您的问题?

以上是关于C语言编程学生成绩统计程序修改,求大神帮助的主要内容,如果未能解决你的问题,请参考以下文章

跪求C语言程序代码“学生成绩管理”

怎么用C语言编一个学生成绩记录簿?

学生成绩管理系统的c语言程序

C语言 学生成绩管理系统

C语言 学生成绩管理系统

C语言程序设计 学生成绩管理信息系统