c語言stuscore,while用法C語言

本文目錄一覽:

C語言編寫單科學生成績 編寫一個單科學生成績處理程序,具體要求如下: 1)學生個數定義成符號常量。

#includestdio.h

#define MAX_STU_NUM 100  //學生人數最大值

int main()

{

 int stu_num, i;  //學生人數

 float stu_score[MAX_STU_NUM]; //成績

 float stu_fail = 0;  //不及格人數比例

 float stu_pass = 0;  //及格人數比例

 float stu_high = 0;  //高分人數比例

 float stu_average = 0; //平均成績

 printf(“輸入學生人數:”);

 scanf(“%d”, stu_num);

 printf(“輸入學生成績(空格或換行分開):\n”);

 for (i = 0; i  stu_num; i++)

 {

  scanf(“%f”, stu_score[i]);

  stu_average += stu_score[i];

  if (stu_score[i]  60)

   stu_fail++;

  else if (stu_score[i] = 80)

  {

   stu_high++;

   stu_pass++;

  }

  else

   stu_pass++;

 }

 stu_average /= stu_num;

 stu_fail /= stu_num;

 stu_pass /= stu_num;

 stu_high /= stu_num;

 printf(“\n學生人數:%d\n”, stu_num);

 printf(“平均成績:%.f\n”,stu_average);

 printf(“高分比例:%.2f%%\n”,stu_high*100);

 printf(“及格比例:%.2f%%\n”,stu_pass*100);

 printf(“不及格比例:%.2f%%\n”,stu_fail*100);

 return 0;

}

C語言運行STU然後再SCORE

typedef struct stu{

char * name,gender;

int score;

}STU;

void f(char *p)

{

//p=(char *)malloc(10);

strcpy(p,”Qian”);

}

int main(void)

{

STU a={NULL,’m’,290},b;

a.name=(char *)malloc(10);

strcpy(a.name,”Zhao”);

b = a;

f(b.name);

b.gender =’f’;

b.score =350;

printf(“%s,%c,%d

\n”,a.name,a.gender,a.score);

printf(“%s,%c,%d

\n”,b.name,b.gender,b.score);

return 0;

}

為啥注釋掉了以後的答案變成:Qian,m,290,Qian,f,

350,?

而不注釋掉答案卻是: Zhao,m,290,Zhao

,f,350?

你的目的是通過函數去修改另外一個結構體對象b中成員name

的值。

觀察到成員中的gender和score基本上沒有什麼值得研究 ,

所以只研究第一個成員name。

在你執行了代碼b=a的時候,b和a分別在內存條上佔用

sizeof(stu)的空間大小。而且,這兩個空間中的值都是一

模一樣的。

當你執行了函數f()的時候,分兩種情況。

第一沒有注釋:函數f會在棧上分配4個位元組的內存(sizeof

(char*),因為p的類型就是char*)。那麼p的值就是等於

b.name。

b.name的值我們假設是0x1234567,那麼現在p的值也就是

0x1234567。沒有注釋的情況下,p的值馬上被修改成malloc

的返回值,所以現在p的值一定不是0x1234567。

假如malloc的返回值是0x7654321,那麼現在p的值也就是

0x7654321。你使用了strcpy,那麼0x7654321首地址開始的

內容就變成了zhao。

所以,你沒有改變0x1234567所指向的內容。結果就是

0x1234567指向的內容還是為zhao。

第二有注釋:函數f會在棧上分配4個位元組的內存(sizeof

(char*),因為p的類型就是char*)。那麼p的值就是等於

b.name。

b.name的值我們假設是0x1234567,那麼現在p的值也就是

0x1234567。有注釋的時候。p的值沒有被malloc改變,還是

0x1234567.你使用了strcpy,就修改了0x1234567所指向的

內存。

最開始的內存中值是zhao,你修改後就變成了qian.

你的這個例子錯誤很多,但是基於你是實驗的目的,我就不指

正了。針對不注釋的情況,如果你要改變的話,我認為比較正

確的做法應該是這樣的。

typedef struct stu{

char * name,gender;

int score;

}STU;

void f(char **p)

{

*p=(char *)malloc(10);

strcpy(*p,”Qian”);

}

int main(void)

{

STU a={NULL,’m’,290},b;

a.name=(char *)malloc(10);

strcpy(a.name,”Zhao”);

b = a;

f(b.name);

free(a.name);

a.name=NULL:

return 0;

}

C語言編寫程序:

#includestdio.h

struct stu

{char stuID[20];

 char stuName[20];

 int stuScore;

};

int main( )

{struct stu scoreArray[5],t;

 int i,j;

 for(i=0;i5;i++)

   scanf(“%s%s%d”,scoreArray[i].stuID,scoreArray[i].stuName,

     scoreArray[i].stuScore);

 for(i=0;i4;i++)

   for(j=0;j4-i;j++)

     if(scoreArray[j].stuScorescoreArray[j+1].stuScore)

     {t=scoreArray[j];

      scoreArray[j]=scoreArray[j+1];

      scoreArray[j+1]=t;

 }

 for(i=0;i5;i++)

   printf(“%s\t%s\t%d\n”,scoreArray[i].stuID,scoreArray[i].stuName,

     scoreArray[i].stuScore);

 return 0;

}

C語言結構體定義

struct stuscore{

    int stuNo;

    float stuScore1;

    float stuScore2;

    float stuAvg;

};

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150577.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-08 14:54
下一篇 2024-11-08 14:54

相關推薦

  • Python中的while true:全能編程開發必知

    對於全能編程開發工程師而言,掌握Python語言是必不可少的技能之一。而在Python中,while true是一種十分重要的語句結構,本文將從多個方面對Python中的while…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論