第一个

来源:互联网 发布:根据mac地址查询设备 编辑:程序博客网 时间:2024/04/29 19:14

实用吧,以后综合测评算起来会省事儿点儿。

学c月余,暂写控制台程序,预计学了win函数,再写个windows窗口程序,让界面好点儿。


/*zhcp.c--用于计算班级(学院)学生综合测评成绩.历史081版(夏)
主要操作:输入学生各科成绩、行为附加分、民主评议分、体育成绩、室内达标成绩等;输出智育分、德育分、体育分和综合成绩*/
/**********************************************************************************************************************/
#include<stdio.h>
#define NUMA 2        //定义要计算学生人数为常量
#define NUMB 9    //科目数
#define GAO 96        //德育最高分
const double JING=2,XUAN=4,JUN=2,HAN=2.5,SHI=5,ZHONG=5,ENG=4,SI=2.5,CE=2,ENGLISH=4.5; //各科学分
const float SUM1=29.0f,SUM2=29.5f;//总学分


double zhi(struct all *);  //声明计算智育分的函数
double zhi2(struct all *); //二级
double de(struct all *);   //德育分
double ti(struct all *);   //体育分
void welcome(void);        //打印欢迎词
void zifu(void);           //打印字符函数

struct all{            //建立all模板
 char name[31];              //声明存储姓名的变量
 double grade[NUMB];   //各科成绩
 double action;            //行为附加分
 double evaluate;          //民主评议分
 double physical;          //体育成绩
 double rts;        //室内达标
};
struct all total[NUMA];      //声明结构数组total

/**********************************************************************************************************************/
/**********************************************************************************************************************/
int main()
{
 
 int index,index1;    //计循环次数的临时变量
 char bye;
 welcome();
 zifu();
 /*循环--读入每个学生的数据*/
 for(index=0;index<NUMA;index++)   
 {
  printf("请输入一个学生姓名,输入后按Enter键确认!/n/n");
  scanf("%s",total[index].name);
       printf("请依次输入%s的经济史、文选、军事理论、古汉语、世界史",total[index].name);
       printf("、中国古代史、英语、思修、形势政策课成绩,每次输入后按Enter键盘确认!/n");
  
  /*循环--依次读入某个学生各科成绩 */
  for(index1=0;index1<NUMB;index1++) 
     scanf("%lf",&total[index].grade[index1]);

  printf("请输入%s的行为附加分,输入后按Enter键确认!/n",total[index].name);
  scanf("%lf",&total[index].action);
  printf("请输入%s的民主评议分,输入后按Enter键确认!/n",total[index].name);
  scanf("%lf",&total[index].evaluate);
  printf("请输入%s的体育课成绩,输入后按Enter键确认!/n",total[index].name);
  scanf("%lf",&total[index].physical);
  printf("请输入%s的室内达标成绩,输入后按Enter键确认!/n",total[index].name);
  scanf("%lf",&total[index].rts); 
  printf("/n");
 }
 printf("/n");
   /**********************************************************************************************************************/
 zifu();
 printf("请核对输入是否有误!/n/n");
 for(index=0;index<NUMA;index++)
 {
     printf("%s/n的经济史成绩为%lf;/n文选成绩为%lf;/n",total[index].name,total[index].grade[0],total[index].grade[1]);
     printf("军事理论成绩为%lf;/n古汉语成绩为%lf;/n",total[index].grade[2],total[index].grade[3]);
     printf("世界史成绩为%lf; /n中古史成绩为%lf;/n",total[index].grade[4],total[index].grade[5]);
     printf("英语成绩为%lf;/n思修成绩为%lf。/n",total[index].grade[6],total[index].grade[7]);
     printf("形势政策成绩为%lf;/n",total[index].grade[8]);
     printf("行为附加分为%lf;/n民主评议分为%lf;/n",total[index].action,total[index].evaluate);
     printf("体育课成绩为%lf;/n室内达标成绩为%lf。/n",total[index].physical,total[index].rts);
  printf("/n");
 }
 printf("/n");
 printf("核对结束!/n");
 zifu();
 /***********************************************************************************************************************/
 /*调用函数*/
 for(index=0;index<NUMA;index++)
 {
     double zong1,zong2,zong3;
           if(index!=2&&index!=7&&index!=18)
              zong1=zhi(&total[index]);
            else
              zong1=zhi2(&total[index]);
     zong2=de(&total[index]);
     zong3=ti(&total[index]);
     printf("%s的综合成绩是%lf/n",total[index].name,zong1+zong2+zong3);
  printf("/n");
 }
 zifu();
 printf("退出程序请按“q”!/n");
 scanf("%s",&bye);
 while(bye!='q')
 {
  printf("其他字符视为失误输入,不退出程序以保留计算结果。/n");
    scanf("%s",&bye);
 }
 return 0;
}
/******************************************************************************************************************************/
/******************************************************************************************************************************/
double zhi(struct all * ptr)
{
     double linshi1,linshi2,linshi3;
     linshi1=ptr->grade[0]*JING+ptr->grade[1]*XUAN+ptr->grade[2]*JUN+ptr->grade[3]*HAN;      
     linshi2=ptr->grade[4]*SHI+ptr->grade[5]*ZHONG+ptr->grade[6]*ENG+ptr->grade[7]*SI+ptr->grade[8]*CE;
     linshi3=(linshi1+linshi2)/SUM1*0.7;
     printf("%s的智育分是%lf/n;",ptr->name,linshi3);
     return linshi3;

}

double zhi2(struct all * ptr)
{
     double linshi1,linshi2,linshi3;   
     linshi1=ptr->grade[0]*JING+ptr->grade[1]*XUAN+ptr->grade[2]*JUN+ptr->grade[3]*HAN;
     linshi2=ptr->grade[4]*SHI+ptr->grade[5]*ZHONG+ptr->grade[6]*ENGLISH+ptr->grade[7]*SI+ptr->grade[8]*CE;
     linshi3=(linshi1+linshi2)/SUM2*0.7;
     printf("%s的智育分是%lf;/n",ptr->name,linshi3);
     return linshi3;
}

double de(struct all * ptr)
{
 double linshi;
 linshi=((60+ptr->action)*0.8*100/GAO+ptr->evaluate*0.2)*0.2;
 printf("%s的德育分是%lf;/n",ptr->name,linshi);
 return linshi;
}

double ti(struct all * ptr)
{
 double linshi;
    linshi=(ptr->physical*0.8+ptr->rts*0.2)*0.1;
 printf("%s的体育分是%lf;/n",ptr->name,linshi);
 return linshi;
}

void welcome(void)
{
 printf("欢迎使用zhcp--班级(学院)综合测评计算程序.历史081版!/n/n");
 printf("本程序提供学生各科成绩、行为附加分、民主评议分、体育成绩、室内达标成绩等的输入");
 printf("和智育分、德育分、体育分和综合成绩等的输出等操作。/n");
 printf("操作简便,不再讲解,详询蔡佳楠。/n");
 printf("/n/n/nGO·········/n/n/n");
}

void zifu(void)
{
 int x;
 for(x=0;x<160;x++)
   printf("*");
 printf("/n");
}
/*收获:1、变量的作用域(s);2、作为循环计次的变量和作为数组下标的变量的使用;
3、不同类型参数向函数的传递;4、指针与数组下标的使用的关系*/

原创粉丝点击