请教,C语言中怎么输出数的分数形式

请教,C语言中怎么输出数的分数形式,第1张

没有默认的分数形式

只能根据值

自己计算出分子和分母

然后

输出两个整型

比如

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程序来计算学生考试成绩的平均分和他们的分数等级。你可以假设以下数据:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10103527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存