導航:首頁 > 信息系統 > 如何用數組存放學生信息

如何用數組存放學生信息

發布時間:2022-10-08 19:06:36

① c語言中用一個結構體數組保存其相關學生信息,然後輸入一個學號,檢索該學號的信息。

這題目咋這么熟悉呢,好像我們當初c結課的時候課程設計就是這個。。。。這個很簡單的.
#include
<stdio.h>
struct
student
{
/*這裡面定義你的學生變數,學號啥的*/
};

int
main()
{
student
s[5];
int
num
=
0;
for(int
i
=
0;
i
<
5;
i++)
{
printf("請輸入第%d個學生的信息\n",
i);
scanf(「%s」,
&s[i].name);//這里是輸入第i個學生的名字啥的
自己補充吧
}
//求學生成績總和
printf("total
=
%d\n",
(s[0].grade+s[1].grade+s[2].grade+s[3].grade+s[4].grade));//grade是在結構體中定義的,名字靈活寫,定義什麼寫什麼
//顯示信息
printf("輸入學號:");
scanf("%d",
&num);
printf("%d
%s
%d
%d\n",
s[num].num,
s[num].name,s[num].age,s[num].grade);//同之前結構體中變數
return
0;
}

② 定義一個一維數組存儲學生學號,二維數組存儲學生姓名,二維數組存儲學生三門課程成績及總分

#include<stdio.h>

intmain()
{
intid[100],n,i=0,len;
charname[100][10];
intscore[100][4];
while(1)
{
printf("分別輸入學生%d的學號、姓名、三門成績 ",i+1);
printf("(學號輸入負數結束輸入):");
scanf("%d",&n);
if(n<0)
break;
id[i]=n;
scanf("%s%d%d%d",name[i],&score[i][0],&score[i][1],&score[i][2]);
score[i][3]=score[i][0]+score[i][1]+score[i][2];
if(i++==99)
break;
}
printf(" 您輸入的學生信息為: ");
len=i;
for(i=0;i<len;i++)
printf("%d%s%d%d%d%d ",id[i],name[i],score[i][0],score[i][1],score[i][2],score[i][3]);
}

③ 使用結構數組存儲學生信息,信息包括了姓名name和成績score,按學生成績從高到低排

我現寫的一個,簡潔明了,應該是符合你的口味的,測試完全通過
#include <stdio.h>
#define N 100
typedef struct student
{
int id; //學號
char name[20]; //姓名
int gender; //性別(0代表男生,1代表女生)
float score; //成績
}stu;
stu s[N];
int main()
{
int i;
for(i=0;i<N;i++)
{
printf("請輸入第%d個學生的學號:",i+1);
scanf("%d",&s[i].id);
printf("請輸入第%d個學生的姓名:",i+1);
scanf("%s",&s[i].name);
printf("請輸入第%d個學生的性別:",i+1);
scanf("%d",&s[i].gender);
printf("請輸入第%d個學生的成績:",i+1);
scanf("%f",&s[i].score);
}
stu ss[N];
stu* p=ss;
for(i=0;i<N;i++)
ss[i]=s[i];
for(i=0;i<N-1;i++)
{
for(int j=i+1;j<N;j++)
{
if(ss[i].score<ss[j].score)
{
stu temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
printf("所有學生的信息按成績由高到低排名如下:\n");
printf("學號\t姓名\t性別\t成績\n");
for(i=0;i<N;i++)
{
printf("%d\t%s\t%d\t%.1f\n",(p+i)->id,(p+i)->name,(p+i)->gender,(p+i)->score);
}
return 0;
}

④ 學生數據處理,用對象數組存儲輸入的學生數據

#include <iostream>
using namespace std;

class Student
{
public:
void get_student();
void display();
private:
int num;
int score;
};
void Student::get_student()
{
cin>>num>>score;
}
void Student::display()
{
cout<<"num="<<num<<"\t"<<"score="<<score<<endl;
}
int main()
{
int i;
Student *p;
p = new Student[5]; //這里創5個student

for(i=0;i<5;i++)
{
cout<<"請輸入第"<<i+1<<"名學號和成績:";
p[i].get_student();//這里指定p所指向的第幾個student 的值
}
cout<<"輸出第1.3.5個學生的數據:\n";
for(i=0;i<5;i=i+2)
{
p[i].display();//同理指定所對應的第幾個student

}
delete p;
return 0;
}

你原來那個p創建的時候沒有指定個數,然後p始終指向創建的第一個student,所以把那個改了以後還是會有錯,所以要用下標,我也只是初學,所以不是很懂

⑤ 怎麼定義一個數組保存全班所有人的姓名用javascript

varname=newArray("a0","a1","a2");
varpeople_number=3;
varran_number=Math.ceil(Math.random()*(people_number-1));
varran_number2=Math.round(Math.random()*(people_number))-1;
if(ran_number2==-1){
ran_number2=2;
}
alert("編號:"+ran_number+",名字:"+name[ran_number]+"編號2:"+ran_number2
+",名字2:"+name[ran_number2]);

不好意思問題沒看全

Math.random(); 返回0和1間(包括0,不包括1)的一個隨機數。

Math.ceil(n); 返回大於等於n的最小整數。取0的幾率極小。

Math.round(n); 返回n四捨五入後整數的值。其中獲取最小值0和最大值的幾率少一半。

ran_number極少出現0 可能導致不會出現a0這個名字,如果寫成

var ran_number = Math.ceil(Math.random()*(people_number))-1;可能導致出現ran_number為-1 提示報錯。

ran_number2 的寫法相當於把最小值歸於最大值,使最大值的概覽和其他值差不多。

真是不好意思 一開始沒看全問題。

⑥ 用結構體數組存儲學生信息,每個學生有姓名、學號、年齡和成績。輸入N(10)名學生信息,按成績從高低

注意輸入數據時的形式。
#include<stdio.h>
struct person
{int xuehao;
char name[20];
char sex;
int year;
int grade;
}man[80];
main()
{int n,i,max,k=0;
printf("一共有多少學生;");
scanf("%d",&n);
for(i=0;i<n;i++)
{scanf("%d,%d,%d,",&man[i].xuehao,&man[i].year,&man[i].grade);
scanf("%c,%s",&man[i].sex,&man[i].name);}
max=man[0].grade;
for(i=0;i<n;i++)
if(max<man[i].grade)
{max=man[i].grade;
k=i;}
printf("name sex xuehao year grade\n");
printf("--------------------------------------------------\n");
for(i=0;i<n;i++)
printf("%-12s%-4c%4d%8d%10d\n",man[i].name,man[i].sex,man[i].xuehao,man[i].year,man[i].grade);
printf("最高分的學生信息:\n");
printf("name sex xuehao year grade\n");
printf("--------------------------------------------------\n");
printf("%-12s%-4c%4d%8d%10d\n",man[k].name,man[k].sex,man[k].xuehao,man[k].year,man[k].grade);
}

⑦ 利用C語言讀取含文件頭的txt文本並將學生信息和成績分別保存到數組

思路:

1、fgets每次讀取一行,根據文本格式找到姓名和分數的行字元串。

2、分別解析行字元串,獲取其中的姓名和成績(成績字元串拆解後用atof函數轉換成浮點數保存在浮點數數組中)。

3、通過malloc和realloc申請一個對應大小的結構數組(你題目要求用數組,換成鏈表更好)

4、將解析的數據保存到結構數組成員中。

注意:代碼是根據你提供的樣本格式解析的,如格式發生改變,需自行修改條件

注意:你成績之後內容沒有貼出來,所以成績內容到哪裡為結束,我只能參照姓名的個數。如成績行數比姓名行數多,多餘的會被忽略。

下面是我寫得演示代碼,已詳細備注(注意我的函數你如想單獨調用,注意free釋放內存):

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#include <string.h>

#define M 1000 //預估一行最大字元數,必須大於等於文本一行最大長度

#define S 5 //預讀取的成績科目數量

int slen=0;//學生人數

typedef struct student

{

char *name;//姓名

float *scores;//成績數組

}STU;

/*getaLine每調用一次讀取一行字元串(返回的是動態申請地址,如你要單獨調用該函數,記得free釋放)

函數用靜態變數記錄文件指針偏移量。參數傳非0每次調用往下行讀取,參數傳0從第一行重新讀取

讀取成功返回字元串首地址,失敗或者讀取到文件末尾返回NULL

*/

char *getaLine();

/*

getName截取名字,注意該函數只是截取,多餘字元空間沒有刪除,如單獨調用該函數自行處理地址空間。

參數傳入包含名字的那一行字元串,根據內容規則遇到第一個數字就在前一個字元置0

成功返回處理後的字元串首地址,失敗返回NULL

*/

char *getName(char *nameStr);

float *getScores(char *scoreStr);//通過字元串空格分隔格式截取各科成績,重組浮點數數組返回。異常返回NULL

STU *getNamesAndScore();

int main()

{

int i,j;

STU *stus=NULL;

stus=getNamesAndScore();

if(!stus) return 1;

for(i=0;i<slen;i++)

{

printf("姓名:%s ",stus[i].name);

for(j=0,printf("成績:");j<S;j++)

printf("%.2f ",stus[i].scores[j]);

printf(" ");

}

return 0;

}

STU *getNamesAndScore()

{

int flag=0,n=1,scnt=0;

STU *stups=NULL,*spTemp=NULL;

char *sLine=NULL;

while(1)

{

sLine=getaLine(1);

if(!sLine) break;//文件讀取到末尾或異常

if(sLine[0]=='#' && sLine[1]=='-' && sLine[2]=='-' && sLine[3]=='-'&& sLine[4]=='-'&& sLine[5]=='-')

{

flag++;

continue;

}

if(flag==2 && sLine[0]=='~' && sLine[1]=='A' && sLine[2]==' ' && sLine[3]=='C' && sLine[4]=='h'&& sLine[5]=='i')

{

continue;

}

if(flag==0) continue;

if(flag==1)//開始讀取姓名

{

if(!stups)

{

stups=(STU *)malloc(sizeof(STU));

if(!stups) return NULL;

}

else

{

n++;

spTemp=(STU *)realloc(stups,sizeof(STU)*n);

if(!spTemp) return NULL;

stups=spTemp;

}

slen++;

getName(sLine);

stups[n-1].name=(char *)malloc(sizeof(char)*(strlen(sLine)+1));

strcpy(stups[n-1].name,sLine);

free(sLine);

}

if(flag==2)//開始讀取成績

{

scnt++;

stups[scnt-1].scores=getScores(sLine);

if(!stups[scnt-1].scores)return NULL;

if(scnt==slen) break;//確保成績和姓名個數匹配,只讀對應行數的成績

}

}

return stups;

}

float *getScores(char *scoreStr)

{

int n=0;

char *p0=scoreStr,*p1=scoreStr;

float *scs=NULL;

scs=(float *)malloc(sizeof(float)*S);

if(!scs)return NULL;

while(*p1!=0)

{

if(*p1==' ')

{

*p1=0;

scs[n++]=atof(p0);

p0=p1+1;

}

p1++;

}

scs[n]=atof(p0);

return scs;

}

char *getName(char *nameStr)

{

char *p=nameStr;

if(!nameStr)return NULL;

while(*p!=0)

{

if(*p>='0' && *p<='9')

{

*(p-1)=0;

break;

}

p++;

}

return nameStr;

}

char *getaLine(int origin)

{

static long offsetSave=0;

int len=0;

char strTemp[M]={0},*rp=NULL,*sLine=NULL;

FILE *fp=NULL;

if(!origin) offsetSave=0;

fp=fopen("C:\testData.txt","r");

if(!fp) return NULL;

fseek(fp,offsetSave,SEEK_SET);

rp=fgets(strTemp,M,fp);

if(!rp)return NULL;

len=strlen(rp);

offsetSave+=len+1;

fclose(fp);

sLine=(char *)malloc(sizeof(char)*(len+1));

if(!sLine) return NULL;

strcpy(sLine,rp);

return sLine;

}

⑧ 定義一個數組存放5個學生的姓名查看張三是否在內

第一步:定義一個數組存放5個學生的姓名




⑨ java如何創建二維數組進行學生姓名,學號,成績三個信息的存儲,使用for循環語句進行二維數組的遍

1、分析題目,需要存儲姓名學號成績,因此,二維數組需要定義成字元串類型

姓名學號成績
012
0[][][]
1[][][]
2[][][]

數組的每列存儲內容是固定的,一行代表一個學生,遍歷過程嵌套for循環就可以遍歷全部學生,

intn=input;
Stringstu[][]=newString[n][2];//學生個數不定
for(inti=0;i<n;i++){
//i是行,一行就是一個「學生」,如i=0,是第一個學生
for(intj=0;j<3,j++)
{//j,是列,是每個學生的信息,0是姓名,1是學號,2是成績
//循環過程是i=0是,遍歷[0][0],[0][1],[0][2],也就依次是姓名學號成績
System.out.print(stu[i][j]);
}
System.out.println("");//輸完一個學生,換行
}

2、源代碼如下

publicstaticvoidmain(Stringargs[])
{
System.out.println("請輸入學生個數");
Scannerinput=newScanner(System.in);
intn=input.nextInt();
Stringstu[][]=newString[n][3];//學生個數不定
//輸入信息
for(inti=0;i<n;i++){
//i是行,一行就是一個「學生」,如i=0,是第一個學生
System.out.println("請輸入第"+(i+1)+"個學生的信息:");
for(intj=0;j<3;j++)
{//j,是列,是每個學生的信息,0是姓名,1是學號,2是成績
//循環過程是i=0是,遍歷[0][0],[0][1],[0][2],也就依次是姓名學號成績
switch(j){
case0:
System.out.print("姓名:");
stu[i][j]=input.next();
break;
case1:
System.out.print("學號:");
stu[i][j]=input.next();
break;
case2:
System.out.print("成績:");
stu[i][j]=input.next();
break;
default:
break;
}

}
}

//輸出信息
for(inti=0;i<n;i++){//循環同理
for(intj=0;j<3;j++)
{//j,是列,是每個學生的信息,0是姓名,1是學號,2是成績
//循環過程是i=0是,遍歷[0][0],[0][1],[0][2],也就依次是姓名學號成績
switch(j){
case0:
System.out.print("姓名:");
System.out.print(stu[i][j]);
break;
case1:
System.out.print("學號:");
System.out.print(stu[i][j]);
break;
case2:
System.out.print("成績:");
System.out.print(stu[i][j]);
break;
default:
break;
}

}
System.out.println("");//輸完一個學生,換行
}
}

3、運行效果如圖

閱讀全文

與如何用數組存放學生信息相關的資料

熱點內容
生魚片市場在哪裡 瀏覽:126
老的程序怎麼學 瀏覽:949
貢小美如何選擇私護產品 瀏覽:600
委託代理什麼概念 瀏覽:672
有了美食和技術還需要什麼 瀏覽:518
豐田有什麼技術優點 瀏覽:361
如何選k40數據線 瀏覽:930
男裝推送優惠券怎麼給顧客發信息 瀏覽:553
歐姆龍有哪些大的代理商 瀏覽:740
一個保險代理點一年掙多少錢 瀏覽:263
手游代理為什麼會熱門 瀏覽:526
鄭州市哪個市場倉庫最多聚集 瀏覽:857
貨到了郵政所為什麼還沒有信息 瀏覽:861
為什麼網店的產品都那麼立體 瀏覽:626
禁止風險代理的案子有哪些 瀏覽:73
古董交易平台哪裡有賣 瀏覽:298
閩江職業技術學校學費多少啊 瀏覽:221
老手機來不了信息怎麼辦 瀏覽:309
旅遊產品什麼品牌最好 瀏覽:167
代理什麼不要錢 瀏覽:237