欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: C語言finput這個(gè)函數(shù)只會(huì)寫入stu[1],輸入一個(gè)覆蓋一個(gè)。 [打印本頁]

作者: 續(xù)我心弦    時(shí)間: 2021-11-25 14:35
標(biāo)題: C語言finput這個(gè)函數(shù)只會(huì)寫入stu[1],輸入一個(gè)覆蓋一個(gè)。
還有平均成績(jī)的輸出也只能輸出一個(gè),這是什么問題求大佬指點(diǎn)?

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>   //提供 exit() 函數(shù)支持  
  4. #define SIZE 100000
  5. //#include"conio.h"

  6. //聲明函數(shù)原型
  7. void finput();    //存入數(shù)據(jù)
  8. void flist();     //輸出數(shù)據(jù)
  9. void fmax();      //取最大成績(jī)
  10. void ftaxis();    //數(shù)據(jù)排序
  11. void stat();      //統(tǒng)計(jì)數(shù)據(jù)
  12. //定義結(jié)構(gòu)體
  13. struct student
  14. {
  15.         int num;        //存放
  16.         char name[10];  //定義名字?jǐn)?shù)組變量
  17.         int En;         //英語課成績(jī)
  18.         int Math;       //數(shù)學(xué)課成績(jī)
  19.     int C;          //計(jì)算機(jī)語言成績(jī)
  20.         int Mz;          //馬哲成績(jī)
  21.         int Ei;          //電子技術(shù)
  22.         float ave;      //三門課平均成績(jī)
  23. } stu[SIZE];        //在定義結(jié)構(gòu)體時(shí)同時(shí)聲明結(jié)構(gòu)體變量

  24. volatile int length = 0;

  25. int main()
  26. {
  27.         int n;
  28.         for(;;)          //使程序能夠循環(huán),在循環(huán)內(nèi)部判斷何時(shí)結(jié)束
  29.         {
  30.                 printf("\n\n");        //與上次的輸出結(jié)果保持間隔,便于美觀
  31.                 printf("        _________________________________\n");//菜單輸出
  32.                 printf("        |           MENU                |\n");
  33.                 printf("        |       1.輸入成績(jī)              |\n");               
  34.                 printf("        |       2.輸出最大成績(jī)          |\n");
  35.                 printf("        |       3.輸出按成績(jī)大小排列    |\n");
  36.                 printf("        |       4.輸入數(shù)字查看人數(shù)占比  |\n");
  37.                 printf("        |       5.  退出                |\n");
  38.                 printf("        |_______________________________|\n");
  39.                 printf("  Please choose your function:(1-5):");          //功能選擇
  40.                 scanf("%d",&n);
  41.                 printf("\n");
  42.         if(n>0&&n<=8) {
  43.                         switch(n) {
  44.                    case 1:
  45.                                         finput();
  46.                                         break;
  47.                    case 2:
  48.                     flist();
  49.                                         fmax();
  50.                                         break;
  51.                                    case 3:
  52.                                         ftaxis();
  53.                                         break;
  54.                                    case 4:
  55.                                         stat();
  56.                                 case 5:                 
  57.                 printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");     //退出提示
  58.                 printf("             Goodbye!         \n");
  59.                 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  60.                                         exit(0);//將程序退出
  61.                         }
  62.                 } else //沒有按規(guī)范選擇功能,要進(jìn)行錯(cuò)誤提示     //錯(cuò)誤提示
  63.                 {
  64.                 printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  65.                 printf("           error input!       \n");
  66.                 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  67. //                        break; //應(yīng)該將這一句話去掉才能使在輸錯(cuò)的情況下也進(jìn)行菜單循環(huán)
  68.                 }
  69.         }
  70.         return 0;
  71. }
  72. //part 1 : 進(jìn)行信息錄入

  73. void finput()
  74. {
  75.         FILE *fp;            //聲明指針變量
  76.         int i;
  77.         fp=fopen("grades","wb");          //首次打開文件, 若沒有文件將會(huì)自動(dòng)創(chuàng)建新文件
  78.         for(i=0; i<SIZE; i++)
  79.         {
  80.                 printf("1 to continue and 0 to end input: ");        //詢問是否繼續(xù)輸入
  81.                 scanf("%d",&i);
  82.                 if(i==0)
  83.                 {
  84.                         fclose(fp);
  85.                         return;
  86.                 }
  87.                   else {
  88.                         printf("Please inut your school number, your name,English grade, Math grade, C grade, Mazhe grade, Electronic grade:\n");
  89.                         scanf("%d%s%d%d%d%d%d",&stu[i].num,stu[i].name,&stu[i].En,&stu[i].Math,&stu[i].C,&stu[i].Mz,&stu[i].Ei);
  90.                         stu[i].ave=(stu[i].C+stu[i].Math+stu[i].En+stu[i].Mz+stu[i].Ei)/5.0;
  91.                         fwrite(&stu[i],sizeof(struct student),1,fp);
  92.                         length++;
  93.                 }
  94.         fclose(fp);
  95.         }
  96. }

  97. //part 2: 將結(jié)果輸出

  98. void fmax()
  99. {
  100.           int res[256];
  101.         int max;
  102.         int maximum;
  103.         size_t i;
  104.         for(i = 0; i < length; i++){
  105.                 res[i] = stu[i].C+stu[i].Math+stu[i].En+stu[i].Mz+stu[i].Ei;
  106.         }
  107.         printf("%d", length);
  108.         max = res[0];
  109.         for(i = 0; i < length; i++){
  110.                 if(res[i] >= max) {
  111.                         max = res[i];
  112.                         maximum = i;
  113.                 }
  114.         }
  115.         printf("The most niubility student information is:\n");
  116.         printf("Student ID\t Name\t English\t Math\t C \t Electronic\t Maze\t \n");
  117.         printf("%d\t %s\t %d\t %d\t %d\t %d\t %d\t\n", stu[maximum].num,stu[maximum].name,stu[maximum].En,stu[maximum].Math,stu[maximum].C,stu[maximum].Mz,stu[maximum].Ei);
  118. }

  119. void flist()
  120. {
  121.         FILE *fp;
  122.         int i;
  123.         fp=fopen("grades","rb");
  124.         printf("____________________________________________________________________________________________________\n");
  125.         printf("|                                                  Report                                           |\n");
  126.         printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
  127.         printf("|        ID      |    name   |   English grade    |    Math grade   |   Computer grade   | Ma  zhe  | Electron grade |  Average  |\n");
  128.         printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
  129.         for(i=0; fread(&stu[i],sizeof(struct student),1,fp)==1; i++)
  130.                 printf("|%11d%15s%13d%17d%18d%16d%14d%19.2f\n",stu[i].num,stu[i].name,stu[i].En,stu[i].Math,stu[i].C,stu[i].Mz,stu[i].Ei,stu[i].ave);
  131.                 /*
  132.                 此處采用字寬輸入比加空格更好, 因?yàn)槿羰鞘褂每崭褫斎耄?dāng)學(xué)號(hào)或者名字前后輸入的長(zhǎng)度不一致時(shí),格式會(huì)亂掉,導(dǎo)致無法對(duì)其格式
  133.                 */
  134.         printf("|___________________________________________________________________________________________________|\n\n");
  135.         fclose(fp);
  136. }//part 3:按平均成績(jī)進(jìn)行排序
  137. void ftaxis()
  138. {
  139.         int i,j,n;
  140.         FILE *fp;
  141.         struct student t;
  142.         fp=fopen("grades","rb");
  143.         printf("____________________________________________________________________________________________________ \n");
  144.         printf("|                                                  Report                                           |\n");
  145.         printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
  146.         printf("|        ID      |    name   |   English grade    |    Math grade   |   C grade   |    Ma  zhe  |   Electron grade |    Average  |\n");
  147.         printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
  148.         for(i=0; fread(&stu[i],sizeof(struct student),1,fp)==1; i++)
  149.                 printf("|%11d%15s%13d%17d%18d%16d%14d%19.2f\n",stu[i].num,stu[i].name,stu[i].En,stu[i].Math,stu[i].C,stu[i].Mz,stu[i].Ei,stu[i].ave);
  150.         printf("|___________________________________________________________________________________________________|\n\n");
  151.         fclose(fp);
  152.         n=i;
  153.         for(i=0; i<n; i++)
  154.                 for(j=i+1; j<n; j++)
  155.                         if(stu[i].ave<stu[j].ave)
  156.                         {
  157.                                 t=stu[i];
  158.                                 stu[i]=stu[j];
  159.                                 stu[j]=t;
  160.                         }
  161.         fp=fopen("grades","wb");
  162.         printf("\n\n\n");
  163.         printf("_____________________________________________________________________________________________________\n");
  164.         printf("|                                                  Report                                           |\n");
  165.     printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
  166.     printf("|        ID      |    name   |   English grade    |    Math grade   |   C grade   |    Ma  zhe  |   Electron grade |    Average  |\n");
  167.     printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
  168.         for(i=0; i<n; i++)
  169.         {
  170.                 fwrite(&stu[i],sizeof(struct student),1,fp);
  171.                 printf("|%11d%15s%13d%17d%18d%16d%14d%19.2f\n",stu[i].num,stu[i].name,stu[i].En,stu[i].Math,stu[i].C,stu[i].Mz,stu[i].Ei,stu[i].ave);
  172.         }
  173.         printf("|___________________________________________________________________________________________________|\n");
  174.         fclose(fp);
  175. }
  176. //part 4: 統(tǒng)計(jì)指定分?jǐn)?shù)之上的人數(shù)
  177. void stat()
  178. {
  179.         FILE *fp;
  180.         int i,flag=0,count=0,b;//flag 用來判斷是否需要進(jìn)行錯(cuò)誤提示, count用來統(tǒng)計(jì)個(gè)數(shù)
  181.         float score_;
  182.         fp=fopen("grades","rb");
  183.         rewind(fp);
  184.         printf("Do you want to know the percentage of the total score?\nEnter your number: ");
  185.         scanf("%f",&score_);
  186.         
  187.         for(i=0; i<=SIZE; i++)
  188.         {
  189.                 if(score_ < stu[i].ave )
  190.                 {
  191.                         count++;
  192.                         flag=1;
  193.                 }
  194.         }
  195.         if(flag == 1)
  196.                 printf("%d in total above your number\n",count);
  197.         if(flag==0)
  198.         {
  199.                 printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  200.                 printf("           error input!       \n");
  201.                 printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
  202.         }
  203. //        printf("___________________________________________________________________________________________________________\n\n");
  204.         fclose(fp);
  205. }
復(fù)制代碼



作者: Hephaestus    時(shí)間: 2021-11-25 17:44
你讀了一次就把文件關(guān)閉了,下次重新打開當(dāng)然還是第一條記錄。
作者: 續(xù)我心弦    時(shí)間: 2021-11-25 18:40
Hephaestus 發(fā)表于 2021-11-25 17:44
你讀了一次就把文件關(guān)閉了,下次重新打開當(dāng)然還是第一條記錄。

那應(yīng)該怎么改

作者: 天ノ憶    時(shí)間: 2021-11-30 15:23
好家伙,聲明個(gè)變量8000000個(gè)字節(jié)
作者: glinfei    時(shí)間: 2021-11-30 15:40
1.fclose(fp); 要放到for循環(huán)之外,否則第一條就關(guān)閉的文件指針,就不能繼續(xù)了。
2.你應(yīng)該使用鏈表結(jié)構(gòu),而不是定義一個(gè)巨大的數(shù)組。
3.你的存儲(chǔ)函數(shù)有問題,沒有考慮插入問題,如果二次運(yùn)行就會(huì)混亂了。
另外,能解釋一下這個(gè)程序我們單片機(jī)論壇的關(guān)系嗎?




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1