『壹』 c語言 結構體,數組
//你想輸入幾種水果的名字的話,就得創建一個結構體數組變數呀
#include
#include
struct
friut
{
char
name[20];
float
price;
//價格的話用一個變數來表示就行了,不需要用到數組
};
int
main()
{
struct
friut
a[5];//比如創建一個結構體數組變數,存放5種水果的名字和價格
int
i,n;
scanf
("%d",&n);//這里的n就要取小於
5
以下的數了,當然你也可以取更大的數組
for
(i=0;i
{
scanf
("%s",a[i].name);
//改成這樣,因為name是個字元數組名,就不用加地址符
&
了
scanf("%f",&a[i].price);
//輸入水果價格。
不要的話可以刪掉。
}
printf("水果名稱和價格如下:\n");
for
(i=0;i
{
printf
("%s\n",a[i].name);
//輸出每種水果的名字
printf
("%f\n",a[i].price);//輸出水果價格。。我自己加上去的,不需要的話可以去掉。
}
return
0;
}
『貳』 c語言怎樣修改文件中的結構體數組
write(&cus[i],sizeof(struct client),1,fp) 是什麼意思
答:C語言把一個結構體數組寫入文件分三步: 1、以二進制寫方式(wb)打開文件 2、調用寫入函數fwrite()將結構體數據寫入文件 3、關閉文件指針 相應的,讀文件也要與之匹配: 1、以二進制讀方式(rb)打開文件 2、調用讀文件函數fread()讀取文件中的數據.
『叄』 C語言,結構體中的數組怎麼賦值,
intmain(void){
structstudentsbao={};
printf("%d,%s ",bao.id,bao.name);//輸出是4224528,空(應該是null)
//structstudentsbao={3,"123"};可以。第一種賦值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s ",bao.id,bao.name);
//bao.name="bao";錯誤「stray'351'inprogram」其他是亂碼,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s ",bao.id,bao.name);
/*這樣可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error""
//scanf("%s",bao.name);//可以,
//printf("%d,%s ",bao.id,bao.name);
//所以scanf那一類函數都可以。
//還有就是memcpy函數也是可以的
return0;
}
(3)c語言編輯結構體數組擴展閱讀
C語言結構體數組的直接賦值及數組的長度計算:
#include<stdio.h>
//自定義一個字元串的結構體,包含字元串和字元串長度兩個變數
typedefstructStr{
charch[100];
intlength;//char數組(字元串)的長度
}myStr;
//剛開始聲明變數時每個變數的字元串長度length都為0
//這里以長度為10的數組為例,數組長度是1000
//對第0個到第9個結構體數組的長度同時賦值為0
myStrmyStr1[10]={
[0...9]={
.length=0,
}
};
intmain(){
inti;
for(i=0;i<10;i++){
printf("%d ",myStr1[i].length);
}
return0;
}
『肆』 C語言 編程 結構體數組
調試通過
#include<stdio.h>
#include<string.h>
main()
{
int i,j;
struct pro{
char dm[4];
char mc[10];
int dj;
int sl;
long je;
}sell[10],t;
printf("請依次輸入十個產品銷售記錄,各項用回車隔開");
for(i=0;i<10;i++)
{scanf("%s\n%s\n%d\n%d",sell[i].dm,sell[i].mc,&sell[i].dj,&sell[i].sl);
sell[i].je=sell[i].dj*sell[i].sl;
}
printf("排列前:\n");
for(i=0;i<10;i++)
printf("%s %s %d %d %l\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
for(i=0;i<10;i++)
for(j=i;j<10;j++)
{
if(strcmp(sell[i].dm,sell[j].dm)<0)
{ t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
if(strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je<sell[j].je)
{ t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}
printf("排列後:\n");
for(i=0;i<10;i++)
printf("%s %s %d %d %l\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
『伍』 C語言結構體數組的定義
所謂結構體數組,是指數組中的每個元素都是一個結構體。在實際應用中,C語言結構體數組常被用來表示一個擁有相同數據結構的群體,比如一個班的學生、一個車間的職工等。
結構體可以存儲不同的數據類型,將他們互相聯系起來。結構體數組可以連續存儲多個結構體,和數組作用相似。比如想定義同一個最小外接矩形的四個坐標值,並給予這個矩形一個特徵編號。當需要存儲多個最小外接矩形的信息時,就需要動態申請一個結構體數組。
struct 結構體類型名{類型名 成員名;類型名 成員名;……},先聲明結構體類型,再定義結構體變數名。聲明結構體類型,不分配空間,定義結構體類型變數,就要分配內存空間。
(5)c語言編輯結構體數組擴展閱讀:
結構體數組指針類型:
一個結構體變數的指針就是該變數所佔據的內存段的起始地址。可以設一個指針變數,用來指向一個結構體變數,此時該指針變數的值是結構體變數的起始地址,指針變數也可以用來指向結構體數組中的元素。
1、類型一:
指向結構體變數的指針引用結構體變數中的成員。
2、類型二:
用結構體變數和指向結構體變數的指針構成鏈表,鏈表是一種常見的重要的數據結構。鏈表有一個「頭指針」變數,以head表示,它存放一個地址。該地址指向一個元素。
鏈表中的每一個元素稱為「結點」,每個結點都應包括兩個部分:
一是用戶需要用的實際數據,
二是下一個結點的地址。
鏈表中各元素在內存中的存儲單元可以是不連續的。要找某一元素,可以先找到上一個元素,根據它提供的下一元素地址找到下一個元素。這種鏈表的數據結構,必須利用結構體變數和指針才能實現。
可以聲明一個結構體類型,包含兩種成員,一種是用戶需要用的實際數據,另一種是用來存放下一結點地址的指針變數。
參考資料來源:網路—結構體類型—數組
『陸』 C語言編程。定義一結構體數組
DEV C++下運行成功
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char XH[100];
char XM[100];
char JG[100];
float CJ;
}student;
void paixu(student stu[],int n)
{
int t,j=0;
while(j<n)
{
for(int i=j+1;i<n;i++)
{
if(stu[i].CJ>stu[j].CJ)
{
t=stu[i].CJ;
stu[i].CJ=stu[j].CJ;
stu[j].CJ=t;
}
}
printf("\n%s\t%s\t%s\t%f",stu[j].XH,stu[j].XM,stu[j].JG,stu[j].CJ);
j++;
}
}
int main()
{
int n,i;
printf("請輸入學生總人數N:");
scanf("%d",&n);
student stu[n];
for(i=0;i<n;i++)
{
getchar();
printf("\n請輸入學生%d的學號:",i+1);
gets(stu[i].XH);
printf("請輸入學生%d的姓名:",i+1);
gets(stu[i].XM);
printf("請輸入學生%d的籍貫:",i+1);
gets(stu[i].JG);
printf("請輸入學生%d的成績:",i+1);
scanf("%f",&stu[i].CJ);
}
printf("\n按成績由高到低排列有:\n學號\t姓名\t籍貫\t成績\n");
paixu(stu,n);
printf("\n\n");
system("pause");
}