當前位置:首頁 » 編程語言 » c語言結構體數組輸入
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言結構體數組輸入

發布時間: 2022-10-23 13:47:40

1. c語言結構體數組

#defineN3
#include<stdio.h>
structBook{
charSm[100];//書名
charZz[20];//作者
intNian,Yue,Kc;
};
voidpaixu(structBooks[],intn){
structBookt;
inti,j;
for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)
if(s[i].Kc<s[j].Kc){
t=s[i];s[i]=s[j];s[j]=t;
}

}
voidprint(structBooks[],intn){
inti;
for(i=0;i<n;i++)
printf("%s%s%d%d%d ",s[i].Sm,s[i].Zz,s[i].Nian,s[i].Yue,s[i].Kc);
}
intmain(){
structBooks[N];
inti;
for(i=0;i<N;i++)
scanf("%s%s%d%d%d",s[i].Sm,s[i].Zz,&s[i].Nian,&s[i].Yue,&s[i].Kc);
paixu(s,N);
print(s,N);
}

2. c語言中怎麼把一個結構體數組寫入文件

C語言把一個結構體數組寫入文件分三步:

1、以二進制寫方式(wb)打開文件

2、調用寫入函數fwrite()將結構體數據寫入文件

3、關閉文件指針

相應的,讀文件也要與之匹配:

1、以二進制讀方式(rb)打開文件

2、調用讀文件函數fread()讀取文件中的數據到結構體變數

3、關閉文件指針

參考代碼如下:

#include<stdio.h>
structstu{
charname[30];
intage;
doublescore;
};
intread_file();
intwrite_file();
intmain()
{
if(write_file()<0)//將結構體數據寫入文件
return-1;
read_file();//讀文件,並顯示數據
return0;
}

intwrite_file()
{
FILE*fp=NULL;
structstustudent={"zhangsan",18,99.5};
fp=fopen("stu.dat","wb");//b表示以二進制方式打開文件
if(fp==NULL)//打開文件失敗,返回錯誤信息
{
printf("openfileforwriteerror ");
return-1;
}
fwrite(&student,sizeof(structstu),1,fp);//向文件中寫入數據
fclose(fp);//關閉文件
return0;
}

intread_file()
{
FILE*fp=NULL;
structstustudent;
fp=fopen("stu.dat","rb");//b表示以二進制方式打開文件
if(fp==NULL)//打開文件失敗,返回錯誤信息
{
printf("openfileforreaderror ");
return-1;
}
fread(&student,sizeof(structstu),1,fp);//讀文件中數據到結構體
printf("name="%s"age=%dscore=%.2lf ",student.name,student.age,student.score);//顯示結構體中的數據
fclose(fp);//關閉文件
return0;
}

fwrite(const void*buffer,size_t size,size_t count,FILE*stream);

(1)buffer:指向結構體的指針(數據首地址)
(2)size:一個數據項的大小(一般為結構體大小)
(3)count: 要寫入的數據項的個數,即size的個數
(4)stream:文件指針。

3. c語言結構性數組

1、C語言結構體數組的定義:數組是有序的並且具有相同類型的數據的集合。
2、結構數組就是具有相同結構類型的變數集合。假如要用C語言,定義一個班級40個同學的姓名、性別、年齡和住址, 可以做成一個結構數組。
結構數組成員的訪問是以數組元素為結構變數的,它的形式為:
1、結構數組元素—成員名。
2、例如:student[0].name,student[30].age
3、實際上結構數組相當於一個二維構造, 第一維是結構數組元素, 每個元素是一個結構變數, 第二維是結構成員。
注意:結構數組的成員也可以是數組變數。

4. c語言 結構體數組輸入後無法輸出正確數據,float數據總是0.0000.。。

你的struct定義里是這么寫的float score[3]; 這是數組的意思,應該是float score;
因為代碼太亂,也沒法給你驗證了,你把[3]刪掉試試看

5. 結構體中定義結構體輸入

Student
stu[3];//定義Student類型的數組stu也能夠直接定義1個結構體數組,如
1個結構體常量應包括結構體中全部成員的值。
今有10

6. 結構體數組的數據從鍵盤輸入

#include<stdio.h>
structstudent
{
intnum;
charname;
intscore[3];
};
voidmain()
{
voidprint(structstudent);
structstudentstu[5];
inti;

for(i=0;i<5;i++)//問題在%c前要一個空格,還有少了&
{

scanf("%d%c%d%d%d",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}
printf("輸入完成 ");
for(i=0;i<5;i++)

print(stu[i]);
}
voidprint(structstudentstu)
{
printf("%d%c%d%d%d ",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);
}

7. c語言結構體數組的輸入輸出

C

語言中,結構體(struct)是一種數據結構,是C語言中聚合數據類型(aggregate data type)的一類。結構體可以被聲明為變數、指針或數組等,用以實現較復雜的數據結構。

結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。

定義與聲明

結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變數。

在實際應用中,C語言結構體數組常被用來表示一個擁有相同數據結構的群體,比如一個班的學生、一個車間的職工等。

在C語言中,定義結構體數組和定義結構體變數的方式類似;

例:

struct stu{

char*name;//姓名

int num;//學號

int age;//年齡

char group;//所在小組

float score;//成績

}class[5];

表示一個班級有5個學生。

(7)c語言結構體數組輸入擴展閱讀:

結構體數組的引用與引用一個結構體變數在原理上是一樣的。只不過結構體數組中有多個結構體變數,我們只需利用for循環一個一個地使用結構體數組中的元素。

下面編寫一個程序,編程要求:從鍵盤輸入5個學生的基本信息,如姓名、年齡、性別、學號,然後將學號最大的學生的基本信息輸出到屏幕。

#include&lt;stdio.h&gt;

#include&lt;string.h&gt;

struct STU

{

char name[20];

int age;

char sex;

char num[20];

};

void OutputSTU(struct STU stu[5]);

//函數聲明,該函數的功能是輸出學號最大的學生信息

int main(void)

{

int i;

struct STU stu[5];

for(i=0;i&lt;5;++i)

{

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

scanf("%s%d%c%s",

stu&lt;i&gt;.name,

&stu&lt;i&gt;

.age,&stu&lt;i&gt;

.sex,stu&lt;

i&gt;.num);/*%c

前面要加空格,不然輸入時會將空格賦給%c*/

}

OutputSTU(stu);

return 0;

}

void OutputSTU(struct STU stu[5])

{

struct STU stumax=stu[0];

int j;

for(j=1;j&lt;5;++j)

{

if(strcmp(stumax.num,stu[j]

.num)&lt;0)//strcmp函數的使用

{

stumax=stu[j];

}

}

printf("學生姓名:%s學生年齡:%d學生性別:%c學生學號:

%s ",stumax.name,

stumax.age,stumax.

sex,stumax.num);

}

輸出結果是:

請輸入第1個學生的信息:小紅22 F Z1207031

請輸入第2個學生的信息:小明21 M Z1207035

請輸入第3個學生的信息:小七23 F Z1207022

請輸入第4個學生的信息:小欣20 F Z1207015

請輸入第5個學生的信息:小天19 M Z1207024

學生姓名:小明學生年齡:21學生性別:M學生學號:Z1207035

8. C語言結構體數組初始化```從鍵盤輸入

/*
先這樣改,看看,int型7/4=1的,結果當然不如你所料了。
按照奶茶的把%d的改過來了。那個float和double的也有道理,但用不著改了。還有,你的輸入寫的不是很好,最好一項一項的輸入,我就不改了。
*/
#include<stdio.h>
struct STUDENT{
char name[20];
int age;
char sex;
int weight;
};

float aver(struct STUDENT *q,int n);

main()
{
struct STUDENT a[4];
struct STUDENT *p;
int i;
float ave;
p=a;
printf("請輸入四個學生的數據:\n");
for(i=0; i<4; i++)
{
p=a;
printf("請輸入第%d個學生的姓名:\n",i+1);
gets((p+i)->name);
printf("請輸入第%d個學生的年齡,性別和體重:\n",i+1);
scanf("%d%c%d",&((p+i)->age),&((p+i)->sex),&((p+i)->weight));

}
ave=aver(p,4);
printf("四個學生的平均年齡是:%f",ave);
}

float aver(struct STUDENT *q,int n)
{
int i,sum;
float ping;

sum=0;
for(i=0; i<n; i++,q++)
{
sum+=q->age;
}
ping= (float)sum/n;
return(ping);
}