intepoint.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:3k
源码类别:

数学计算

开发平台:

Visual C++

  1. # include <stdio.h>
  2. void avsco(float *psco, float *pave);
  3. void avcour5(char *pcou, float *psco);
  4. void fali2(char *pcou, int *pnum, float *psco, float *pave);
  5. void excellence(char *pcou, int *pnum, float *psco, float *pave);
  6. void main()
  7. {
  8. /* 数组num用于存放每位学生的学号 */
  9. int i, j, *pnum, num[4];
  10.     /* 数组aver用于存放每位学生的平均分,二维数组score用于存放学生成绩 */
  11. float score[4][5], aver[4], *psco, *pave;
  12. /* 数组course存放5门课程的名称 */
  13. char course[5][10], *pcou;  
  14. printf("请按行输入5门功课的名称:n");
  15. pcou = course[0];  /* 指针变量pcou用来存放数组course的首地址 */
  16.                    /* 从首地址开始,每十个字节存放一个课程的名称 */
  17. for(i=0; i<5; i++)
  18. scanf("%s", pcou+10*i);  /* 以空格为间隔输入五门课程的名称 */    
  19. printf("请按下面的格式输入4个学生的学号和各科成绩:n");
  20. printf("学号");
  21. for(i=0; i<5; i++)
  22. printf(",%s", pcou+10*i);  /* 输出各门课程的名称 */
  23. printf("n");
  24. psco = &score[0][0];  /* 指针psco指向数组score中的第一个元素 */
  25.                       /* 即指向第一个学生第一门课程的成绩 */
  26. pnum = &num[0];
  27. for(i=0; i<4; i++)
  28. {
  29. scanf("%d", pnum+i);  /* 输入学号 */
  30. for(j=0; j<5; j++)
  31. scanf(",%f", psco+5*i+j);  /* 以逗号为间隔输入学生成绩 */
  32. }
  33. pave = &aver[0];  /* 将数组aver的首地址赋给指针pave */
  34. printf("n");  /* 空行 */
  35. avsco(psco, pave);
  36. avcour5(pcou, psco);
  37. printf("n");  /* 空行 */
  38. fali2(pcou, pnum, psco, pave);
  39. printf("n");  /* 空行 */
  40. excellence(pcou, pnum, psco, pave);
  41. }
  42. void avsco(float *psco, float *pave)  /* 求每个学生的平均成绩 */
  43. {
  44. int i, j;
  45. float sum, average;
  46. for(i=0; i<4; i++)  /* i代表学生的序号,表示第i个学生 */
  47. {
  48. sum = 0.0;
  49. for(j=0; j<5; j++)  /* j代表课程的序号,表示第j门课程 */
  50. sum = sum + (*(psco+5*i+j));  /* 累计每个学生的各科成绩 */
  51. average = sum/5;  /* 计算第i个学生平均成绩 */
  52. *(pave+i) = average;
  53. }
  54. }
  55. void avcour5(char *pcou, float *psco)  /* 求第五门课程的平均成绩 */
  56. {
  57. int i;
  58. float sum, average5;
  59. sum = 0.0;
  60. for(i=0; i<4; i++)
  61. sum = sum + (*(psco+5*i+4));  /* 累计每个学生第五门课的得分 */
  62. average5 = sum/4;    /* 计算第五门课程的平均成绩 */
  63. printf("第5门课程%s的平均成绩为%5.2f.n", pcou, average5);
  64. }
  65. void fali2(char *pcou, int *pnum, float *psco, float *pave)
  66. {
  67. int i, j, k, label;
  68. printf("      =====两门以上课程不及格的学生=====     n");
  69. printf("  学号  ");
  70. for(i=0; i<5; i++)
  71. printf(" %-8s", pcou+10*i);  /* 输出课程名称 */
  72. printf("  平均分n");
  73. for(i=0; i<4; i++)
  74. {
  75. label = 0;
  76. for(j=0; j<5; j++)
  77. if(*(psco+5*i+j) < 60.0)
  78. label++;  /* 计算第i个学生不及格课程的门数 */
  79. if(label >= 2)
  80. {
  81. printf("%-8d", *(pnum+i));  /* 输出学号 */
  82. for(k=0; k<5; k++)
  83. printf("  %-8.2f", *(psco+5*i+k));  /* 输出符合条件学生的各科成绩 */
  84. printf("  %-8.2fn", *(pave+i));  /* 输出符合条件学生的平均分 */
  85. }
  86. }
  87. }
  88. /* 程序结构和上一个子函数fali2类似 */
  89. void excellence(char *pcou, int *pnum, float *psco, float *pave)    
  90. {
  91. int i, j, k, label;
  92. printf("      =====成绩优秀学生=====n");
  93. printf("  学号  ");
  94. for(i=0; i<5; i++)
  95. printf("  %-8s", pcou+10*i);
  96. printf("  平均分n");
  97. for(i=0; i<4; i++)
  98. {
  99. label = 0;
  100. for(j=0; j<5; j++)
  101. if(*(psco+5*i+j) >= 85.0)
  102. label++;
  103. if((label>=5)||(*(pnum+i)>=90))
  104. {
  105. printf("%-8d", *(pnum+i));
  106. for(k=0; k<5; k++)
  107. printf("  %-8.2f", *(psco+5*i+k));
  108. printf("  %-8.2fn", *(pave+i));
  109. }
  110. }
  111. }