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

c語言輸出結構體數組的函數調用

發布時間: 2022-05-17 09:29:04

A. c語言中如何用子函數調用結構體中的變數實現數據的輸入與輸出。

用子函數實現結構體數據的輸入與輸出:對於多數子函數的輸入與輸出,有一定規律性可言。
方法1:void型不傳值傳址調用與聲明。main中聲明void date_in(),void date_pout()。函數定義前一定在main()前先定義結構體變數(全局變數),然後定義輸入或輸出程序段。此時再main()調用即可。
如下:
struct student
{
char name[20];
int old;
char sex;
}stu;
void date_in();
void main()
{ date_in();
}
void date_in()
{ scanf("%s%d/c,"stu.name,stu.old,stu.sex);
}時間問題程序有點簡潔,有問題請追問,很樂意與你分享。

B. C語言結構體數組函數調用問題

en = sizeof(s)/sizeof(s[0]); 這里S是地址,相當於指針,所以不能正確得到數組元素個數!

C. c語言結構體調用

#include <stdio.h>
struct person
{
char name[10];
int num;
};

void main()
{
struct person per[5];
void sort(struct person *, int );
int i;
printf("print letter:\n");
for(i=0;i<5;i++)
{
printf("name: ");
scanf("%s", &per[i].name);
printf("num: ");
scanf("%d", &per[i].num);
}
sort(per, 5);
for(i=0;i<5;i++)
printf("print: %s%d\n", per[i].name, per[i].num);
getch();
}

void sort(struct person *a, int n)
{
int i,j,t;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i].num>a[j].num)
{
t=a[i].num; /*你代碼中i寫成j,這是細節問題*/
a[i].num=a[j].num;
a[j].num=t;
}
}

你代碼有點問題,我給你改了改。TC測試通過。
除了注視的地方,還有幾點要注意:
你源代碼傳送的是per[0].num的地址,記:a[0],但是a[1]的地址不等於
per[1].num的地址。
指針加1的意思你沒理解好。
舉個列子。
int a[10];
那麼*(a+1)的意思是把a地址向後移動sizeof(int)個位。
所以你那個&a[1]指向的還是結構體中的數據。(恩,這里體現了低級語言的特性。每一個內存的每一位都要考慮到。要是你寫個程序:200位的浮點數加法計算機,你更能體會到什麼叫做考慮到每一位內存,調試的時候要一個內存一個內存的演算。代碼我的空間里有,可以自己去看)

不懂的問

D. c語言結構體數組的函數調用問題……這串代碼有問題……求大佬解決

#include<stdio.h>
#include<stdlib.h>

#defineM5
#defineN3
structSTR
{
doublegrade[N];//儲存3科成績的數組
}student[M];//儲存5名學生的結構體數組

voidadd_average(structSTRstudent_[M])//求各科平均分的函數
{
inti,j;
floataverage,add;
for(i=0;i<N;i++)
{
add=0;
for(j=0;j<M;j++)
{
add=add+student_[j].grade[i];
}
average=add/M;
printf("第%d科的平均成績為:%lf",i,average);
}
}

intmain()//主函數
{
inti,j;
for(i=0;i<M;i++)
{
printf("請分別輸入第%d個學生的三科成績 ",i+1);
for(j=0;j<N;j++)
{
scanf("%lf",&student[i].grade[j]);
}
}
add_average(student);
}

E. 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個學生。

(5)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

F. 在C語言中怎麼將子函數中的數組和函數調用出來

來傳送子函數中的數組有多種方法——可以通過函數返回值返回地址傳遞數組;也可以通過函數輸入參數來傳遞數組;還可以通過全局變數來傳遞數組。

子函數本身可以直接在作用域中進行調用。

1、通過函數返回值返回地址傳遞數組。

聲明函數時需要聲明函數返回值類型為對應數組的地址,此時可以返回數組的地址,結合數組元素的地址關系可以傳遞整個數組,同時可以根據數組的特性傳遞多個參數。

注意:子函數是C語言模塊化編程思想的核心,其方法是通過輸入介面和輸出介面實現對黑盒的調用,故對其內部數據的輸入和調用也需要通過輸入介面、輸出介面和程序的公共區域實現。

G. c語言中如何在子函數中調用主體函數的結構數組

有兩種方式:
1.將結構體聲明為全局變數
2.將改結構體作為參數傳給子函數,這樣子函數就可以使用該結構體了

H. C語言結構體數組成員做參數的函數調用問題,如何做到遞歸調用

我現寫的一個,簡潔明了,應該是符合你的口味的,測試完全通過 #include #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;iid,(p+i)->name,(p+i)->gender,(p+i)->score); } return 0; }

I. 關於c語言中數組作為函數參數的函數之間調用問題

1、新建一個數組作為參數項目,如圖所示:

J. C語言數組的輸出函數

#include
"stdio.h"
void
input(int
a[10])
//給一維數組輸入數據
{
int
i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void
output(int
a[10])
//輸出一維數組輸入數據
{
int
i;
for(i=0;i<10;i++)
printf("%d
",a[i]);
}
int
main()
{
int
b[10];
input(b);
//調用input函數給數組b賦值
output(b);//調用output函數輸出數組b中的值
}