问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言编程求助啊.....

发布网友 发布时间:2022-05-22 07:45

我来回答

3个回答

热心网友 时间:2024-03-29 11:00

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct
{
char judgment[20];
char singer[20];
float score;
}record;

typedef struct
{
record data[100];
int count;
}JudgTable;
typedef struct
{
char singer[20];
float score;
}Score;
typedef struct
{
Score data[100];
int count;
}ScoreTable;

void Add(JudgTable &T,record R)
{
if (T.count<100)
T.data[T.count++]=R;
}
void AddScore(ScoreTable &T,Score R)
{
if (T.count<100)
T.data[T.count++]=R;
}
void Create(JudgTable &T,ScoreTable &ST,int m,int n)
{ int i,j;
record R;
Score S;
float max,min,avaerg;
for (i=0;i<m;i++)
{
printf("输入歌手姓名");
gets(R.singer);
min=32767;
max=0;
avaerg=0;
for (j=0;j<n;j++)
{
printf("输入裁判姓名");
gets(R.judgment);
printf("输入成绩");
scanf("%f",&R.score);
getchar();
if (R.score<min) min=R.score;
if (R.score>max)max=R.score;
avaerg+=R.score;
Add(T,R);
}
strcpy(S.singer,R.singer);
avaerg=(avaerg-max-min)/(float)(n-2);
S.score=avaerg;
printf("%f",S.score);
AddScore(ST,S);
}
}
void Sortscore(ScoreTable &T)
{
int i,j,p;
Score S;
for (i=0;i<T.count;i++)
{
p=i;
for (j=i;j<T.count;j++)
if (T.data[p].score<T.data[j].score) p=j;
if (p!=i)
{
S=T.data[p];
T.data[p]=T.data[i];
T.data[i]=S;
}
}
}

void Save(ScoreTable T)
{
//
}

void ListScore(ScoreTable T)
{
int i;
for (i=0;i<T.count;i++)
printf("%s\t%5.2f\n",T.data[i].singer,T.data[i].score);
}
void ListJudgTable(JudgTable JT)
{
int i;
for (i=0;i<JT.count;i++)
printf("%s\t%s\t%5.2f\n",JT.data[i].judgment,JT.data[i].singer,JT.data[i].score);
}

void main()
{
int ch;
ScoreTable St;
St.count=0;

JudgTable JT;
JT.count=0;
do{
printf("1.输入 2.排序 3.输出歌手成绩 4.输出评分表 5. 保存0 exit");
scanf("%d",&ch);
getchar();
switch (ch)
{
case 1:Create(JT,St,10,5);break;
case 2:Sortscore(St);break;
case 3:ListScore(St);break;
case 4:ListJudgTable(JT);break;
case 5:Save(St);break;
case 0:exit(0);

}
}while (1==1);
}
保存文件很简单啦!自己解决 ,vc6.0,程序扩展名要用。cpp追问要C语言的啊、、

追答这个就是呀!只是编译环境不同而已!这里用来引用型变量,如果在TC上用,改为指针就OK了,超简单了

热心网友 时间:2024-03-29 11:01

你是在学编程吧,我觉得直接给出程序的话,这就没锻炼了。
(1)这种数据结构就算题目不说,也是用结构体比较简单明了。
我觉得定义机构体时可以定义姓名字符数组,一个score数组(包含5个评分),最终分数单独定义。
struct singer
{
char name[10];
float score[5],final;
}
(2)所谓的结构话设计,我觉得就是模块化,把打分、排序、输出文件等写成子函数。
(3)用户也就是裁判吧,所以打分程序应该有两个下属子程序,表示不同打分方式。根据用户选择进行不同程序调用,可以用指向函数的指针。
(4)也就是(3)中的两个子程序
(5)调用文件输出子程序。
计算最终分和排序,首先先将打分排序(这个简单),然后计算,接着根据最终成绩排序,也不难,冒泡或选择都行。追问我是文科生。。。这是选修课。。。最后的大作业。。。。为了学分。。。你懂得,能帮我编下吗??谢谢了啊。。

追答我用的是VS2005 ,如果你用的是VC6.0,请将int _tmain(int argc, _TCHAR* argv[])改为void main() 并去掉#include "stdafx.h" 长度超了,发不了。
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define SIZE 10
#define CPNUM 5
struct singer
{
long num; //编号
char name[10];
float score[CPNUM],final; //CPNUM个裁判的打分和最终成绩
}s[SIZE];
int _tmain(int argc, _TCHAR* argv[])
{ //这里应该加函数声明。长度有限,删了
char f[CPNUM][20]; //裁判的评分文件名
int t,i;
printf("请输入评分的方式,0为键盘输入,1为文件输入: ");
scanf("%d",&t);
if (t==0) keyin();
else
{printf("请输入各个裁判的评分文件名.\n");
for (int i=0;i<CPNUM;i++) {scanf("%s",f[i]);filein(f[i],i);}}
cal();
sort();
save();
return 0;
}
void keyin() //这个是键盘输入,每个都要输入10个歌手的信息
{}
void filein(char f[],int n) //这个是文件输入
{FILE *fp;
if((fp=fopen(f,"r"))==NULL)
{printf("文件打开出错.\n");exit(0);}
for( int i=0;i<SIZE;i++)
{ fscanf(fp,"%ld%s%f ",&s[i].num ,s[i].name ,&s[i].score[n]);
printf("%8ld %10s ",s[i].num ,s[i].name);
for( int j=0;j<CPNUM;j++) printf("%5.1f ",s[i].score[j]);
printf("\n");}
fclose(fp);
}
void save() //保存歌手文件
{}
void cal() //计算成绩
{}
void sort() //按成绩由高到低排序
{int i,j,k;
struct singer temp;
for(i=0;i<SIZE;i++)
{k=i;
for(j=i+1;j<SIZE;j++)
if (s[i].final<s[j].final) k=j;
temp=s[k];s[k]=s[i];s[i]=temp;
}
printf("按成绩由高到低输出各歌手成绩\n");
for(i=0;i<SIZE;i++)
{printf("%8ld号%8s 最终成绩: %5.1f 各裁判打分: ",s[i].num ,s[i].name,s[i].final);
for( int j=0;j<CPNUM;j++) printf("%5.1f ",s[i].score[j]);
printf("\n");
}
}

热心网友 时间:2024-03-29 11:01

void fun1()
{
//按照物理原理,亮度与距离的平方成反比,设 x_max为最亮点到灯1的基点的距离,x_min为最暗点到灯1的基点的距离。
double power1=2.0 ,power2=3.0;
double h1=5.0,h2=6.0;
double w=20.0;
double light,max_light,min_light;
double delta_x=0.0001;
double x,x_max,x_min;
max_light=min_light=power1/(h1*h1)+power2/(h2*h2+w*w);
for(x=0.0;x<w;x+=delta_x)
{
light=power1/(h1*h1+x*x)+power2/(h2*h2+(w-x)*(w-x));
if(light>max_light)
{
max_light=light;
x_max=x;
}
if(light<min_light)
{
min_light=light;
x_min=x;
}
}
cout<<"x_max="<<x_max<<"\nx_min="<<x_min<<"\n";
}

void fun2()
{
//有关缉私艇用_p表示,有关走私船用_c表示,r为两艇距离
//以缉私艇开始位置为坐标原点
double x_p,y_p,x_c,y_c,t;
double dt,r,dx_p,dy_p,dx_c,dy_c,v_p,v_c;
dt=0.001;
v_p=40.0; v_c=20.0;
x_p=0.0; y_p=0.0;
x_c=15.0; y_c=0.0;
t=0.0;
dx_p=v_p; dy_p=0.0;
dx_c=0.0; dy_c=v_c;
r=sprt((x_c-x_p)*(x_c-x_p)+(y_c-y_p)*(y_c-y_p));
for(t=0.0;r<0.0001;t+=dt)
{
dx_p=(x_c-x_p)/r;
dy_p=(y_c-y_p)/r;
//更新位置
x_p+=dx_p; y_p+=dy_p;
x_c+=dx_c; y_c+=dy_c;
r=sprt((x_c-x_p)*(x_c-x_p)+(y_c-y_p)*(y_c-y_p));
}
cout<<"相遇时间 t="<<t;

}
将每一时刻的位置打印或画出来就是航线了。
不过你要数学建模还是用Matlab方便,还可以画出图形来
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
交通工程好考公务员吗 交通工程类考公时包括哪些专业 交通工程专业的能报考什么样的公务员 交通工程专业往哪些方向考公务员 交通工程可以考公务员有哪些岗位 我专业交通工程。能考什么类型的公务员 支付宝怎么关联另一个账号 支付宝怎么关联另一个支付宝 支付宝关联账号在哪里?怎么添加? 京东买手机发票可以开别人名字吗 谁知道heaven i need a hug这首歌的英汉对照翻译 求大神用C++6.0编程以下程序 (⊙o⊙) I keeps it versatile.这句英文keep后面为什么加s? Set It Off中英文歌词!!急!! C++素数问题,请来看一下。 亡命夺宝 高兴有什么词 表示“高兴”的词语 高兴的词有什么? 关于高兴的词语还有什么 高兴可以用什么词语来表示? 高兴能组什么词语 高高兴兴对什么词语 写出与下面词语的意思相近的词高兴对什么 英雄联盟怎么调,说我方防御塔以被摧毁语音 英雄联盟,像双杀,摧毁防御塔这些话英语怎么说的 LOL里“敌方防御塔已被摧毁”和“我放防御塔已被摧毁”用英语都怎么说? 保定蠡县住宿酒店有什么连锁的? 中山市坦洲柏曼酒店法人代表 韶关柏曼酒店电话 ---How can the problem be solved? ---Well,we must ____it to the president&#39;s own judginent. 信用卡逾期一次,多久才能删除? &lt;亡命夺宝&gt; 一个c++素数问题 C++ 1000以内的素数求和 发生逾账户数是5,是逾期5次吗?2012年1个月,2013年5个月,2015年1个月,这样可以公积 戏剧中唢呐一般用什么曲牌 豫剧结尾音乐、就是最后结束的时候好像是吹的唢呐吧,什么名字 唢呐的代表曲叫做? 河北梆子唢呐曲牌 谁有 跪求! 华为下一个旗舰手机会是什么?MATE11? 山东梆子的伴奏曲牌有哪几种? 评剧里的唢呐皮曲牌怎么用 2016年旗舰华为p9出后下一个旗舰机是什么型号 白事上常用的唢呐曲牌,高山流水,余音绕梁 喜庆唢呐曲牌庆丰收 上海征兵体检需要多久,必须全裸吗。男女都是吗 2010年上海当兵的体检具体日期是几号啊???急!!! 上海普陀区征兵体检通知什么时间发 我今年未满十八岁可以去做征兵体检吗?