程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> ACM1分步實現,打基礎,再實現

ACM1分步實現,打基礎,再實現

編輯:關於C

求一個值delta,讓選上了這一門課(未選的
成績是0)的每個學生的成績+delta,再計算這門課的平均分,這個平均分恰好等於選了這門課的所有的學生的平均成績
 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 //int count_in=0;
 5 //int deta=0;
 6
 7 // (y1 + y2 + .....y_count_in+(count_in)*detal) / count_in = n1 = sum / count_in
 8 // y1 表示本門課程的源成績,
 9 //sum逐個加每個學生(已經選了該門課)所有課程的平均,到下面再除一個count_in就是 所有選這課的學生的 所有成績 的平均值。
10 // count_in表示選本門課的學生數
11 // n1表示選了本門課的 所有學生 的 所有的成績 的平均值。
12 // detal即為所求的本門所需的差值。
13 // => detal=(sum-(y1+y2....y_count_in)) / count_in
14 // => detal= (sum  - totalOfClass ) / count_in.
15 int f_pinjun(int data[][10],int student_num,int row,int class_num)
16 {
17     int count_in=0;
18     int i,sum=0,tmp_sum,j,n_stu_class_num,totalOfClass=0;
19     //deta=0;
20
21     for(i=0; i<student_num; i++)
22     {
23         if(data[i][row]!=0)
24         {
25             tmp_sum=0;
26             n_stu_class_num=0;
27             for(j=0;j<class_num;j++)//這個地方的重復的太多。,應當是預先保存每一個學生的平均值,然後調用,這樣可以避免重復。
28             {
29                 if(data[i][j]!=0)
30                 {
31                     n_stu_class_num++;
32                     tmp_sum+=data[i][j];
33                 }
34
35             }
36
37             totalOfClass+=data[i][row];
38             tmp_sum/=n_stu_class_num;
39             count_in++;
40             sum+=tmp_sum;//sum逐個加每個學生(已經選了該門課)所有課程的平均,到下面再除一個count_in就是 所有選這課的學生的 所有成績 的平均值。
41         }
42     }
43     //deta=totalOfClass/count_in;
44     //return sum/count_in;
45     return (sum-totalOfClass)/count_in;
46 }
47
48 int main()
49 {
50     char class_name[10][15];
51     int student_num,class_num,i,data[20][10],j;
52     //int pinjun[10]= {0,0};
53     scanf("%d %d",&student_num,&class_num);
54     //printf("%d %d\n",student_num,class_num);
55
56     for(i=0; i<class_num; i++)
57     {
58         scanf("%s",class_name[i]);
59     }
60
61     for(i=0; i<student_num; i++)
62     {
63         for(j=0; j<class_num; j++)
64             scanf("%d",&data[i][j]);
65     }
66
67     //print_data(data,student_num,class_num);
68
69     for(i=0; i<class_num; i++)
70     {
71         //pinjun[i]=f_pinjun(data,student_num,i,class_num);
72         //printf("%d ",pinjun[i]);
73         //if(i!=class_num-1)
74         //printf("%s %d\n",class_name[i],pinjun[i]-deta);
75         //printf("%d\n",deta);
76         printf("%s %d\n",class_name[i],f_pinjun(data,student_num,i,class_num));
77     }
78     //printf("%s %d",class_name[i-1],pinjun[i]-deta);
79
80     return 0;
 
81 }
ACM  2 分步實現 打基礎 再實現 將對它改進。

 

 

摘自 zhengmian

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved