c程序问题,假设有A、B、C、D、E五个高等院校进行田径对抗赛, 各院校的单项成绩均以存入计算机并构成一张

作者&投稿:卜尝 (若有异议请与网页底部的电邮联系)
c语言的问题~

#includemain(){int wscore;int mscore;int tscore;int i;int j;int k;int a[5][2][2];for(i=0;i<=4;i++) for(j=0;j<=1;j++) for(k=0;k<=1;k++) {scanf("%d",&a[i][j][k]);getchar();} for(i=0;i<=4;i++){ wscore=a[i][0][0]+a[i][1][0]; mscore=a[i][0][1]+a[i][1][1]; tscore=wscore+mscore; printf("院校%c
",65+i); printf("wscore=%d",wscore); printf("
"); printf("mscore=%d",mscore); printf("
"); printf("tscore=%d",tscore); printf("
");} }问题不大,稍微修改了下,从程序来看你输入时要按顺序输入,先输a院校男生成绩再输女生成绩,依次往下输,运行结果如下:

这个程序用链表做的话会更简单

///试下,看是不要这个效果,注意输入时的格式哈(空格);

#include
#include
#define N 10 //共有N个人的比赛信息
typedef struct
{
char *sport;
enum{male,female} gender;
char schoolname;
char *result;
int score;
} resulttype;
typedef struct
{
int malescore;
int femalescore;
int totalscore;
} scoretype;
void summary(resulttype result[5])
{
scoretype score[5]={0};
int i=0;
while(result[i].sport!=NULL)
{
switch(result[i].schoolname)
{
case 'A':
{
score[0].totalscore+=result[i].score;
if(result[i].gender==0) score[0].malescore+=result[i].score;
else score[0].femalescore+=result[i].score;
}
break;
case 'B':
{
score[1].totalscore+=result[i].score;
if(result[i].gender==0) score[1].malescore+=result[i].score;
else score[1].femalescore+=result[i].score;
}
break;
case 'C':
{
score[2].totalscore+=result[i].score;
if(result[i].gender==0) score[2].malescore+=result[i].score;
else score[2].femalescore+=result[i].score;
}
break;
case 'D':
{
score[3].totalscore+=result[i].score;
if(result[i].gender==0) score[3].malescore+=result[i].score;
else score[3].femalescore+=result[i].score;
}
break;
case 'E':
{
score[4].totalscore+=result[i].score;
if(result[i].gender==0) score[ i].malescore+=result[i].score;
else score[4].femalescore+=result[i].score;
}
break;
}
i++;
}
for(i=0;i<5;i++)
{
printf("School %c:
",i+65);
printf("Total score of male:%d
",score[i].malescore);
printf("Total score of female:%d
",score[i].femalescore);
printf("Total score of all:%d

",score[i].totalscore);
}
}
void main()
{
int i;
resulttype result[N];
for(i=0;i<N;i++)
{
result[i].sport=(char*)malloc(sizeof(20));
result[i].result=(char*)malloc(sizeof(20));
printf("please input the %d de information
项目名称 性别(0/1) 学校名称 成绩 该项得分
",i+1);
scanf("%s %d %c %s %d",result[i].sport,&result[i].gender,&result[i].schoolname,result[i].result,&result[i].score);
}
printf("项目名称性别学校名称成绩该项得分
");
for (i=0;i<N;i++)
{

printf("%s%d%c%s%d
",result[i].sport,result[i].gender,result[i].schoolname,result[i].result,result[i].score);
}
summary(result);
}

第一处:
主函数中ScoreType score[100];定义后应该将其中所有元素初始化为0,不然调用Scores()时得不到预期的结果。

printf("运动员%d:
",i+1);

scanf("%s%d%s%s%d",result[i].sport,result[i].gender,

result[i].schoolname,result[i].result,result[i].score);//scanf()语句应该用用地址
}

第二处:
typedef struct {
char sport; // 项目名称
Sex gender; // 性别(女:female;男:male)

第三处(致命错误!):
for(i=0;i<n;++i)

在修改了第二结构体ResultTy的前提下改成下面的语句为妙:

for(i=0;i<n;++i)
{
printf("运动员%d:
",i+1);
fflush(stdin);
printf("输入项目:
");


扩展资料:

1987年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。

C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。

用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。

1990年,国际化标准组织ISO(International Standard Organization)接受了87 ANSI C为ISO C 的标准(ISO9899-1990)。

1994年,ISO修订了C语言的标准。目前流行的C语言编译系统大多是以ANSI C 为基础进行开发的,但不同版本的C编译系统说实现的语言功能和语法规则有略有差别。

参考资料来源:百度百科-c程序



我找到了三项比较明显的错误:
第一处:
主函数中ScoreType score[100];定义后应该将其中所有元素初始化为0,不然调用Scores()时得不到预期的结果。

第二处:
typedef struct {
char sport; // 项目名称
Sex gender; // 性别(女:female;男:male)
char schoolname; // 校名为'A','B','C','D'或'E'
char *result; // 成绩 最好定义为数组result[20]
int score; // 得分(7,5,4,3,2或1)
}ResultType;

第三处(致命错误!):
for(i=0;i<n;++i)
{
printf("运动员%d:\n",i+1);
scanf("%s%d%s%s%d",result[i].sport,result[i].gender,
result[i].schoolname,result[i].result,result[i].score);//scanf()语句应该用用地址
}
在修改了第二结构体ResultTy的前提下改成下面的语句为妙:
for(i=0;i<n;++i)
{
printf("运动员%d:\n",i+1);
fflush(stdin);
printf("输入项目:\n");
scanf("%c",&result[i].sport);
fflush(stdin);
printf("输入性别:\n");
scanf("%d",&result[i].gender);
fflush(stdin);
printf("输入校名:\n");
scanf("%c",&result[i].schoolname);
fflush(stdin);
printf("输入结果:\n");
scanf("%s",result[i].result);
fflush(stdin);
printf("输入分数:\n");
scanf("%d",&result[i].score);
}

第二个不晓得题目要求解释枚举型的什么东东,能再清楚点就好了。female相当于常量0,male相当于1吧。


C++ 程序问题,Aprod=(a1\/1)*(a2\/2)*...*(an\/n) , Aharm = n\/(1\/a1...
include <iostream >using namespace std;int main (){double a[10] = {25.4 ,53.27 ,51.75 ,68.14 ,24.34 ,25.4 ,34.84 ,89.1 ,37.0 ,15.15};double prod=0 , harm=0;\/\/ ***for(int i=0; i<n; i++){ prod+=a[i]\/(i+1);}for(int i=0; i<n; i++...

已知“int a=10,*p;int *&r=p; r=&a;*r=20;cout<<A;”,则输出为()。
这个问题是,假设A是在别的地方定义过的,那可能cout会输出“不确定值”,所以我才说,假设这是完整的程序,选D,不过如果不是完整的程序⋯⋯可能就是B 这是建立在你没输错大小写和你的题目完整的情况下⋯⋯这种题都很偏激的⋯⋯还要去猜出题人怎么想,比较...

手机显示错误码 2002错误信息:授权失败怎么办?
☆☆☆错误提示六:证书受限★问题说明:一般由软件签名出错或者软件已被多次签名引起。★解决办法:使用未签过名的软件重新签名后再安装。☆☆☆错误提示七:无法安装不被信任的提供商提供的受保护应用程序★问题说明:有几种可能引发此问题:1.手机设置问题。2.软件没有签名或者签名不正确 3.证书冲突。

为什么我的程序100以内的回文素数出不来,问题在哪里需要怎么更改_百度...
你的sum计算有问题,公式中假设了a是个三位数,比如a =11,按你的算法,n = 1,m = 1,l = 0;sum= 110;此时sum 和a不相等,就不会打印,实际11是回文素数,归根结底是你的假设不严谨

假设变量s、a、b、c均已定义为整型变量
您好,很高心回答您的问题:解答:1,首先,看程序段:s += 1,这句的意思是s = s + 1,而由s = a可知,s 的初值为a,所以s = a + 1;2,看循环语句:从b= 1,开始循环,知道b = c 的时候结束,而每次循环的具体操作是s 自加1,也就是c有多大,s 就要加(c-b+1,因为c本身...

关于程序框图的问题
Pay = a * b 比如3:求两数之和问题,假设加数1:a,加数2为b,和为S,那么,可以表示为:S = a + b 比如4:已知代数式为:2a + 3b -8,其中:a=1,b=2,求代数式的值,可以设y y = 2a + 3b -8 回到主题,所有这些,可以理解为等式的左边是要通过程序运行计算后输出的值,而...

编写程序实现功能:已知有序数组a,用户通过键盘输入一个数,查找改数组中...
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!先来分析你的需求吧,因为我只会写C++ PHP 但是思路都是一致的。a表示数组中有几个数据,所以第一个 是数组大小。每查一个数,都是要对整个数组进行遍历,寻找是否有该值。b表示需查询的...

我们一起学并发编程:Java内存模型(一)基础
假设处理器A和处理器B按程序的顺序并行执行内存访问,最终可能得到x=y=0的结果,具体原因如下: 处理器和内存交互 说明:处理器A和处理器B可以同时把共享变量写入自己的写缓冲区(A1、B1),然后从内存中读取另一个共享变量(A2、B2),最后才把自己写缓冲区中保存的脏数据刷新到内存中(A3、B3)。当以这种时序执行时,...

有一个矩阵 int a[100][100],以行为先进行存储。
这是操作系统中内存页调度很经典的题目:注意矩阵是按行存储的 程序A由于是外层是行索引,内层是列索引,因此在执行2次外层循环(也就是200次内层循环)后 才会产生一次缺页,那么100次外层循环也就是50次缺页。而程序B和A恰恰相反,外层是列索引,内层是行索引,这意味着每执行两次内层循环就得进行...

编写程序,求表达式ad+(2cb)\/e的值,假设a=50,b=2,c=20,d=3,e=5
先算2cb的值,2cb=80 然后算2cb\/e的值,2cb\/e=16 接着算ad的值,ad=150 最后算ad+(2cb)\/e的值,ad+(2cb)\/e=161 PS:\/两边如果都是整数,就是取商的整数部分,而不会算余数

南丹县19683704748: C语言问题,求大家帮忙【1】 假设字母a、b、c、d、e、f的霍夫曼编码分别是1、00、011、0100、01010、01011.那么字符串“abcdef”的编码显然就是... -
桂缸迪皿:[答案] 用java写的,作参考:public class EnCode { public static void main(String[] args) { int[] a = new int[] { 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0 }; print(a); } public static void print(int[] a) { for (int i = 0; i < a.length; ++i) { if (a[i] == 1) ...

南丹县19683704748: 一道C语言题,“若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式a -
桂缸迪皿:[答案] 我来简单的说下,这个题考察的是X Y :Z 如果X的正确的,则答案取Y.相反如果X是错的,就取Z 对于你这道题,用括号表示下嵌套就是 (a

南丹县19683704748: 有四个数ABCD,求(A+B)/(C+D)=?用C语言编程,要程序. -
桂缸迪皿: 同样假设四个数为整数 //-------------------------------------------------------------- #include "stdio.h" int fun(int a ,int b, int c, int d){return (a+b)/(c+d);} void main(){printf("请输入四个数 \n");scanf("%d%d%d%d",&a,&b,&c,&d);if ((c+d)==0){printf...

南丹县19683704748: C语言如何简化运行次数的问题
桂缸迪皿: 这和你的数据存储方式有关,首先第一种应该是链表存储.第二种就是说每个人都要知道其他四个人的位置,也就是个也就是完全图,可以用邻接表形式存储.第三种应该就是直接数组存储了,知道下标直接就能找到C 如果对于这个提示还是不明白的话可以追问 因为不知道你要如何表示一个人所以我用char字符来表示一个人.s['C']就是用字符'C'直接找到这个人.因为字符'C',ASC2码位67所以我声明变量声明的比较大char s[256];而s[who-'A'];我是下标从0开始,所以你输入C就变成了'C'-'A'=2,就是s[2]

南丹县19683704748: C语言的一个排列组合问题 -
桂缸迪皿: #include void main() { int a=1,b=2,c=3,d=4,e=5; int i,j,k,l,sum=15,n=0; for(i=2;i for(j=1;j if(j!=2) for(k=1;j if(j!=3) for(l=1;l if(i!=j&&i!=k&&i!=l&&i!=(sum-i-j-k-l)) if(j!=k&&j!=l&&j!=(sum-i-j-k-l)) if(k!=l&&k!=(sum-i-j-k-l)&&l!=(sum-i-j-k-l)) { printf("甲%d\t乙%d\...

南丹县19683704748: C语言 a,b,c三个整数,输出最大值 -
桂缸迪皿: 你好, 程序如下: #include<stdio.h> void main() { int x,y,z; int max; printf("输入三个数字:\n"); scanf("%d%d%d",&x,&y,&z); if(x>y&&x>z) max=x; if(y>x&&y>z) max=y; if(z>x&&z>y) max=z; printf("最大值是: %d\n",max); } 结果如图:有疑问提出. 如果能够帮助你解决 问题,那么希望你点击“采纳”, 举手之劳,将鼓 励我们继续解答其他QQ网友的问题,谢谢!

南丹县19683704748: C语言 组合问题 求解 -
桂缸迪皿: #include int mark[11]; int n; int r; int path[11]; void dfs(int dep) { int i; if(dep==r) { for(i=0;i printf("%c",path[i]-1+'A'); puts(""); return; } for(i=1;i if(!mark[i]) { mark[i]=1; path[dep]=i; dfs(dep+1); mark[i]=0; } } void main() { n=7; r=7; int i; for(i=1;i dfs(0); }

南丹县19683704748: 有三个整数a,b,c,由键盘输入,输出其中最大的数 c语言编程问题 -
桂缸迪皿: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23intmain() {inta,b,c,max;printf("输入a=");scanf("%d",&a);printf("输入b=");scanf("%d",&b);printf("输入c=");scanf("%d",&c); //比较a,b.把大的赋给maxif(...

南丹县19683704748: 一道C语言题,“若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式a<b?a:c<d?c:d的值?” -
桂缸迪皿: 我来简单的说下,这个题考察的是X ? Y : Z 如果X的正确的,则答案取Y.相反如果X是错的,就取Z 对于你这道题,用括号表示下嵌套就是(a<b)?a:((c<d)?c:d) 把值带进去就是(1<4)?1((3<2)?3:2) 所以很明显,答案就是1(因为1<4正确,所以后面的((c<d)?c:d)的不用计算了),我用MyEclipse验证了一下是对的 祝愉快~~

南丹县19683704748: 用C语言 编写程序,解决下述问题(用0,1表示不获奖和获奖) -
桂缸迪皿: #include <stdio.h> int main() { int a,b,c,d,e,f; for(a=0;a<2;a++) for(b=0;b<2;b++) for(c=0;c<2;c++) for(d=0;d<2;d++) for(e=0;e<2;e++) for(f=0;f<2;f++) { if(a+b>=1&&a+c+d>=2&&a+e<=1&&b==f&&c==e&&c+d+e+f<=3) { if(e==0) { if(f==0) printf("%d %...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网