C語言點名

本文目錄一覽:

跪求c語言上課隨機點名程序設計

#includestdio.h

#includestdlib.h

#includetime.h

#defineSTU_NUM_MAX4

structStudentInfo//學生信息結構

{

charname[15];

intstu_id;

}stu[STU_NUM_MAX];

voidWriteData()//寫入學生信息

{

FILE*fp;

intstu_num=4;

for(inti=0;istu_num;i++)

{

printf("請輸入第%d個學生的姓名:",i+1);

scanf("%s",stu[i].name);

printf("請輸入第%d個學生的學號:",i+1);

scanf("%d",stu[i].stu_id);

}

if((fp=fopen("myfile.dat","ab"))==NULL)

{

printf("Can'topenfile\n");

exit(1);

}

for(intj=0;jstu_num;j++)

{

if(fwrite(stu[j],sizeof(structStudentInfo),1,fp)!=1)

printf("Errorwritingfile.\n");

}

fclose(fp);

}

voidTeacherDM(intstuID)//教師點名

{

FILE*fp;

boolfind_mark=false;

printf("\n\t%s\t\t%s\n","學號","姓名");

if((fp=fopen("myfile.dat","rb"))==NULL)

{

printf("Can'topenfile\n");

exit(1);

}

inti=0;

do

{

fseek(fp,i*sizeof(structStudentInfo),SEEK_SET);

fread(stu[i],sizeof(structStudentInfo),1,fp);

if(stu[i].stu_id==stuID)

{

printf("\t%4d\t%s\n",stu[i].stu_id,stu[i].name);

printf("\n\n\t請【%s】同學回答某某問題.\n",stu[i].name);

find_mark=true;

break;

}

i++;

}while(!feof(fp));

if(!find_mark)printf("\n\t\t未能找到學生號為:%d的記錄!\n",stuID);

fclose(fp);

}

voidmain(void)

{

intstuID[4]={2013011001,2013011002,2013011003,2013011004};

//WriteData();

srand((unsigned)time(NULL));//隨機種子

TeacherDM(stuID[rand()%(3-0+1)+0]);

}

運行效果截圖:

另外多說一句,你所說的公正性,是不是指被點名過的同學不會再次被隨機點名到。如果是這個意思,那麼你可以通過數組來設置它,即把點名過的同學的學號或姓名保存到一維數組裡,隨機判斷時只需循環檢查下該同學是否已被點名過。這裡就留給你做了。

用C語言編寫一個隨機點名程序

例:

#include<stdio.h>/*standardinput&output*/

#include<stdlib.h>/*standardlibary*/

#include<string.h>/*string*/

#include<conio.h>/*ConsoleInput/Output*/

#include<time.h>

structstudentinfo/*學生信息的結構體*/

charsNo[5];/*學生編號*/

charsxueNo[14];/*學號*/

charsname[20];/*學生的姓名*/

}st[100];

charhash[100]={0};/*鏈表的數組*/

intmain()

inti=0,j=0,flag=0,RN,*a;

FILE*fp;

charch,filename[20]={0},line[100]={0};

printf("Pleaseinputfilename:");

//fflush(stdin);/*用來清空輸入緩存,以便不影響後面輸入的東西*/

gets(filename);/*鍵盤輸入文件名*/

fp=fopen(filename,"r");/*openreadonly*/

printf("名單如下:\n");/*顯示所有的學生信息*/

while(fgets(line,sizeof(line)-1,fp))

if(line[0]!='\n'&&line[0]!='')

sscanf(line,"%s%s%s\n",st[i].sNo,st[i].sxueNo,st[i].sname);/*文件輸入*/

printf("%s\n%s\n%s\n",st[i].sNo,st[i].sxueNo,st[i].sname);/*列印出來*/

i++;/*統計人數*/

/*設置隨機數種子*/

srand((unsigned)time(NULL));

/*sizeof(類型符)是計算類型所佔位元組數,sizeof(int)是int所佔位元組數,再乘以i,得到i個int型數據的總位元組數。malloc函數用於動態開闢一塊內存空間,參數為開闢的內存空間位元組數,返回開闢的內存空間的首地址指針。*/

a=(int*)malloc(sizeof(int)*i);

memset(a,-1,sizeof(a));/*將已開闢內存空間a的第4個位元組設置為-1*/

printf("按空格鍵點名,其他鍵退出:");

fflush(stdin);

while((ch=getch())=='')

/*while(!(ch=getch())==NULL)*/

if(flag==i)/*如果flag等於總人數*/

printf("%s\n","點名結束");

break;

RN=rand()%i;/*產生一個隨機數*/

while(hash[RN]==1)/*判斷有沒有完成某個一個學生點名*/

RN=rand()%i;/*產生隨機數*/

flag++;/*計數*/

printf("\n~~~~~\n%s\n%s\n%s\n------------\n",st[RN].sNo,st[RN].sxueNo,st[RN].sname);/*輸出學生的信息*/

hash[RN]=1;

擴展資料:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md-->m域寬,列印出來以後,在控制台上,顯示m位;

如果我們要列印的數的位數如果超過我們設定m則原樣輸出;

如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。

隨機點名程序設計 C語言編程

設置一個足夠大的隨機池,給每一個學生分配相同的空間,然後利用隨機數來選取被點名的學生,同時對該學生所分配的空間和其他學生的空間進行縮減或增加。然後執行下一輪。

大致思路就是這樣,希望能夠幫到你哦~

c語言 隨機點名

「為了公平起見,我們決定做一個隨機點名小程序」不是說你們決定做一個小程序嗎?為什麼不自己做呀?沒有必要一個班的學生都沒有能力編寫一個這種簡單程序吧

百度知道並不是一個提交結果的平台,所謂知道就是將知識貢獻,讓大家獲得啟發,不是給人當奴隸幹活!

求c語言班級點名程序,高手們來幫幫忙啊

#include stdio.h

#include stdlib.h

#include time.h

typedef struct Student

{

char name[20];

bool IsRead;

}Student;

int main()

{

int i;

int select;

int mark=1;

//下面中你還可以加入一些學生,記得初始化的IsRead都是false

Student student[]=

{

{"張三",false},

{"李四",false},

{"王五",false},

{"劉六",false},

{"趙七",false}

};

printf("歡迎進入點門系統,以下是全班的花名冊:\n");

for (i=0;isizeof(student)/sizeof(Student);i++)

printf("%s ",student[i].name);

printf("\n");

do

{

printf("請選擇:\n1.點名\n2.顯示沒有點到的學生名字\n3.退出點名系統\n");

scanf("%d",select);

system("cls");//如果是Linux系統,把cls改成clear。如果是其他系統請把這行注釋掉,清頻

if(1==select)

{

mark = 1;

while (1)

{

for(i=0;isizeof(student)/sizeof(Student);i++)

mark=mark*(student[i].IsRead? 1:0);

if(mark)

{

printf("你已經把全班點了個遍\n");

break;

}

srand(time(NULL));

i = rand()%(sizeof(student)/sizeof(Student));

if(!student[i].IsRead)

{

printf("點名:%s\n",student[i].name);

student[i].IsRead = true;

break;

}

}

}

else if (2==select)

{

for(i=0;isizeof(student)/sizeof(Student);i++)

{

if(!student[i].IsRead)

printf("%s ",student[i].name);

}

printf("\n");

}

else if(3==select)

{

printf("謝謝使用\n");

return 0;

}

}while(true);

return 0;

}

這可是我一個字一個字的打出來的,專門為你寫的!~

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 03:01
下一篇 2024-12-24 03:01

相關推薦

  • 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
  • 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
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論