没有默认的分数形式
只能根据值
自己计算出分子和分母
然后
输出两个整型
比如
printf("%d/%d", a,b);
从浮点数转为分数是不精确的 要计算分数, 最好的方法 就是最初就按照分数计算和存储。
改好了,问题不大,我都写在注释里了:
#include<stdioh>
#include<mathh>
#define N 35
#define COURSE 4
struct student
{
char num[10];/如果把num当作字符串的话,不能用int,而是char数组。不然就用int num;/
float score[4];
float sum;
float aver;
}
stu[N];
void main()
{
void Input(struct student stu[]);
void count(struct student stu[]);
void sort(struct student stu[]);
void find(struct student stu[]);
sqrt(10);/不知你用什么编译器,如果TC的话,有个BUG。就是结构体里有float型的话,要加这句,不然会报错/
Input(stu);
count(stu);
find(stu);
/为什么你的程序里没有执行着几个函数咧/
}
void Input(struct student stu[])
{
int i,j;
printf("Enter Noand score as :score1 score2 score3 score4\n");
for (i=0;i<N;i++)
{
scanf("%s",stu[i]num);/用%s输入字符串/
for (j=0;j<COURSE;j++)
{
scanf("%f",&stu[i]score[j]);
}
}
}
void count(struct student stu[])
{
float sum,aver;
int i,j;
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<5;j++)
sum+=stu[i]score[j];
aver=sum/4;
stu[i]sum=sum;
stu[i]aver=aver;
}
}
void sort(struct student stu[])
{
int i,j,k;
struct student temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[k]sum<stu[j]sum)k=j;
if(k!=i)
{
temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;
}
}
printf("number score1 score2 score3 score4 sum average \n");
for(i=0;i<N;i++)
printf("%-8s%-82f%-82f%-82f%-82f%-82f%-82f\n",stu[i]num,stu[i]score[0],stu[i]score[1],stu[i]score[2],stu[i]score[3],stu[i]sum,stu[i]aver);
/输出学号也用%s/
}
void find(struct student stu[])
{
int flag=0;
int i,j;
sort(stu) /;//stu[];)/
printf("the student of one score>=90 and 前五名:\n");
/这两句调换一下位置,不然输出不太好/
for(i=0;i<5;i++)
{
int sum=0;
for(j=0;j<4;j++)
if(stu[i]score[j]>=90 )sum++;
if(sum)
{
flag=1;
printf("%-8s%-82f%-82f%-82f%-82f%-82f%-82f\n",stu[i]num,stu[i]score[0],stu[i]score[1],stu[i]score[2],stu[i]score[3],stu[i]sum,stu[i]aver);
}
}
if(flag==0)
printf(" not exist!\n");
/这个判断放在循环体之外,不然会输出好多" not exist!"/
}
另外,注意:
1个班的学生成绩最多35人。你的咋是固定35人捏?
2第四点要求:根据用户要求输入课程号显示该门课程成绩在90以上且总分在前五的学生的 学号和各科成绩,平均分和总分
你似乎没有看清题意吧?是要用户输入课程号耶。
这些你自己应该知道怎么做吧?
public class Score {
// 记录学生的姓名
private String[] name;
// 记录分数
private int[][] fraction;
// 记录分数等级
private char[] grade;
// 存储数据
private void saveData() {
thisname = new String[] { "Johnson", "Aniston", "Cooper", "Gupta", "Blair" };
thisfraction = new int[][] { { 85, 83, 77, 91, 76 }, { 80, 90, 95, 93, 48 }, { 78, 81, 11, 90, 73 }, { 92, 83, 30, 69, 87 }, { 23, 45, 96, 38, 59 } };
thisgrade = new char[thisnamelength];
}
public Score() {
// 在构造函数中调用saveData存储数据。
thissaveData();
}
// 计算分数等级。传入一个分数,返回该分数的评分等级。
private char getGrade(int fraction) {
if (fraction > 100) {
// 100分的考卷分数居然超过了100,肯定和老师有交易,给你个X!
return 'X';
}
else if (fraction >= 85) {
return 'A';
}
else if (fraction >= 75) {
return 'B';
}
else if (fraction >= 65) {
return 'C';
}
else if (fraction >= 50) {
return 'D';
}
return 'F';
}
// 输出成绩/平均分/评分/班级平均分/班级评分
public void printScore() {
int average = 0;// 存储班级的平均分
for (int i = 0; i < thisfractionlength; i++) {
Systemoutprint(thisname[i] + "\t");// 输入学生的名字(\t是输出制表符,相当于按一下Tab的效果)
int temp = 0;// 临时存储数据的变量
for (int x = 0; x < thisfraction[i]length; x++) {
temp += thisfraction[i][x];
Systemoutprint(thisfraction[i][x] + "\t");
}
temp = temp / thisfraction[i]length;// 此时temp的值就是该学生的平均分
thisgrade[i] = thisgetGrade(temp);// 存入平均分
Systemoutprintln("平均分:" + temp + "\t评价" + thisgrade[i]);// 输出该学生的平均分和评价
average += temp;
}
average = average / thisnamelength;
Systemoutprintln("班级平均分:" + average + "\t班级评价" + thisgetGrade(average));
}
public static void main(String[] args) {
new Score()printScore();
}
}
运行结果:
Johnson 85 83 77 91 76 平均分:82 评价B
Aniston 80 90 95 93 48 平均分:81 评价B
Cooper 78 81 11 90 73 平均分:66 评价C
Gupta 92 83 30 69 87 平均分:72 评价C
Blair 23 45 96 38 59 平均分:52 评价D
班级平均分:70 班级评价C
#include<stdioh>int fm,f;int tf(int a,int b,int m,int n){ int i,s; for(i=b>nb:n;;i++) { if(i%b==0&&i%n==0) break; } fm=i; if(f) s=(i/ba+i/nm); else s=(i/ba-i/nm); return s;}int hj(int t,int s){ int i; for(i=t<st:s;i>=1;i--) { if(t%i==0&&s%i==0) { t/=i; s/=i; } } fm=s; return t;}main(){ int a,b,m,n,t,s,fz,r,c,ff=0; char k; printf("------------------------------------------\n"); printf(" [1] 加法 [2] 减法\n"); printf(" [3] 乘法 [4] 除法\n"); printf(" [0] 退出\n"); printf("------------------------------------------\n"); do{ printf("请输入你选择的菜单(0--4):"); k1: scanf("%d",&c); if(c<0||c>4) { printf("菜单中没有本选项,请重新输入!"); fflush(stdin); goto k1; getchar(); } printf("请输入第一个分数的分子和分母:"); scanf("%d %d",&a,&b); printf("请输入第二个分数的分子和分母:"); scanf("%d %d",&m,&n); switch(c) { case 0:return 0;break; case 1:f=1;t=tf(a,b,m,n);s=fm;k='+';break; case 2:f=0;t=tf(a,b,m,n);s=fm;k='-';break; case 3:t=am;s=bn;k='';break; case 4:t=an;s=bm;k='/';break; } fz=hj(t,s); printf("%d/%d%c%d/%d=%d/%d\n",a,b,k,m,n,fz,fm); }while(1);}自己编的!!好累!!
比如你 语文80 是文本框1 数学76是文本框2 以此类推
a=val(text1text)+val(text2text)+val(text3text)+val(text4text)+val(text5text)
v=a/5 '平均分v变量
给个简单的程序你
#include
#include
typedef
struct
Fraction
{
int
m;
//分子
unsigned
int
d;
//分母
}F;
F
Addition(F
a,F
b);
//加法
F
Subtraction(F
a,F
b);
//减法
F
Multiplication(F
a,F
b);
//乘法
F
Division(F
a,F
b);
//除法
int
Getm(int
u,unsigned
int
v);//最大公约数
void
Output(F
c);//显示
void
main()
{
F
a,b,c;
am=-2;
ad=5;
bm=3;
bd=7;
c=Addition(a,b);
Output(c);printf("\n");
c=Subtraction(a,b);
Output(c);printf("\n");
c=Multiplication(a,b);
Output(c);printf("\n");
c=Division(a,b);
Output(c);printf("\n");
}
F
Addition(F
a,F
b)
{
F
c;
int
t,t1;
unsigned
int
t2;
t1=ambd+adbm;t2=adbd;
t=Getm(abs(t1),t2);
cm=t1/t;
cd=t2/t;
return
c;
}
F
Subtraction(F
a,F
b)
{
F
c;
cm=-bm;
cd=bd;
return
Addition(a,c);
}
F
Multiplication(F
a,F
b)
{
F
c;
int
t,t1;
unsigned
int
t2;
t1=ambm;t2=adbd;
t=Getm(abs(t1),t2);
cm=t1/t;
cd=t2/t;
return
c;
}
F
Division(F
a,F
b)
{
F
c;
cm=int(bd);
cd=unsigned
int(bm);
if(bm<0)
cm=-cm;
return
Multiplication(a,c);
}
int
Getm(int
m,unsigned
int
d)
{
int
t;
while(d!=0)
{
t=m%d;
m=d;
d=t;
}
return
m;
}
void
Output(F
c)
{
printf("%d",cm);
if(cd!=1)
printf("/%d",cd);
}
以上就是关于请教,C语言中怎么输出数的分数形式全部的内容,包括:请教,C语言中怎么输出数的分数形式、用c语言设计一个程序统计一个班的学生成绩、编写一个java程序来计算学生考试成绩的平均分和他们的分数等级。你可以假设以下数据:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)