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

c語言關於結構體的題

發布時間: 2022-09-28 06:01:28

⑴ 一道c語言結構體的題目

B,struct TT,是沒有定義的類型,不能用來定義變數st

⑵ C語言結構體題

#include<stdio.h>

#defineN5

voidinput_stu(structStu*stu);
voidoutput_avg(structStu*stu);

structStu
{
intid;
charname[10];
intsex;
floatmath;
floateng;
floatc;
};

intmain()
{
structStustu[N];
input_stu(stu);
output_avg(stu);
return0;
}

voidinput_stu(structStu*stu)
{
inti=1;
do
{
printf("請輸入第%d個學生的姓名學號性別數學成績英語成績C語言成績:",i);
structStu*s=stu+i-1;
scanf("%s%d%d%f%f%f",s->name,&s->id,&s->sex,&s->math,&s->eng,&s->c);
i++;
}while(i<=N);
}

voidoutput_avg(structStu*stu)
{
inti=1;
printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s","學號","姓名","性別","高數","英語","C","平均分");
structStu*s=stu+i-1;
floatmath_avg=stu->math,eng_avg=stu->eng,c_avg=stu->c;
putchar(10);
do
{
structStu*s=stu+i-1;
math_avg=((i-1)*math_avg+s->math)/i;
eng_avg=((i-1)*eng_avg+s->eng)/i;
c_avg=((i-1)*c_avg+s->c)/i;
printf("%-8d%-8s%-8s%-8.1f%-8.1f%-8.1f%-8.1f",
s->id,s->name,s->sex==1?"男":"女",s->math,s->eng,s->c,(s->math+s->eng+s->c)/3);
putchar(10);
i++;
}while(i<=N);

printf("%-12s%-12s%-12s%","數學平均分","英語平均分","C平均分");
putchar(10);
printf("%-12.1f%-12.1f%-12.1f",math_avg,eng_avg,c_avg);
}

⑶ C語言結構體題目

#include <stdio.h>

#include <stdlib.h>

#include <string.h>


#define N 3//可以改為10表示10條圖書信息

typedef struct ss{

int bianhao;

char shu[80];

char ren[20];

double qian;

} SHU;



int main(){

SHU a[N];

SHU m,t;

int i,len,j;


for (i = 0; i <N; i++){

printf("輸入第%d本書的編號 ",i+1);

scanf("%d",&a[i].bianhao);

getchar();

printf("輸入第%d本書的書名 ",i+1);

gets(a[i].shu);


printf("輸入第%d本書的作者 ",i+1);

gets(a[i].ren);


printf("輸入第%d本書的價格 ",i+1);

scanf("%lf",&a[i].qian);

}

for (i = 0;i < N; i++){

m=a[i];

printf("%d %s %s %.2lf ", m.bianhao,m.shu,m.ren,m.qian);

}

//排序

for(i=1;i<N;i++)

{


for(j=0;j<N-i;j++)

if(a[j].qian>a[j+1].qian) /*大於號屬於升序*/

{


t.bianhao=a[j].bianhao;


strcpy(t.shu,a[j].shu);


strcpy(t.ren,a[j].ren);


t.qian=a[j].qian;


a[j].bianhao=a[j+1].bianhao;


strcpy(a[j].shu,a[j+1].shu);


strcpy(a[j].ren,a[j+1].ren);


a[j].qian=a[j+1].qian;

a[j+1].bianhao=t.bianhao;


strcpy(a[j+1].shu,t.shu);


strcpy(a[j+1].ren,t.ren);


a[j+1].qian=t.qian;


}

}


m=a[N-1];

printf("The top:%d %s %s %.2lf ", m.bianhao,m.shu,m.ren,m.qian);//排序後

for (i = 0;i < N; i++){

m=a[i];

printf("%d %s %s %.2lf ", m.bianhao,m.shu,m.ren,m.qian);

}

return EXIT_SUCCESS;

}

⑷ C語言結構體的一道題...

#include<stdio.h>

/*UserCodeBegin(考生可在本行後添加代碼,例如全局變數的定義、函數原型聲明等,行數不限)*/
typedefstructStudent{
intnum;
charname[20];
floatscore1;
floatscore2;
floatscore3;
floatscore4;
floataver;
}Student;
/*UserCodeEnd(考生添加代碼結束)*/

intmain(void)
{
inthigh;/*high記錄平均分最高的學生的序號,具體使用參考後面的代碼*/

/*UserCodeBegin(考生可在本行後添加代碼,行數不限)*/
inti=0;
high=0;
StudentmyClass[5];
printf("Pleaseinputstudentsinfo: ");
for(i=0;i<5;i++)
{
scanf("%d%s%f%f%f%f",&myClass[i].num,myClass[i].name,
&myClass[i].score1,&myClass[i].score2,&myClass[i].score3,&myClass[i].score4);
myClass[i].aver=(myClass[i].score1+myClass[i].score2+myClass[i].score3+myClass[i].score4)/4;
if(myClass[i].aver>myClass[high].aver)
{
high=i;
}
}
/*UserCodeEnd(考生添加代碼結束)*/

printf(" TheHighestis%s(%d) score1=%.2fscore2=%.2fscore3=%.2fscore4=%.2faver=%.2f ",
myClass[high].name,myClass[high].num,
myClass[high].score1,myClass[high].score2,myClass[high].score3,myClass[high].score4,myClass[high].aver);

return0;
}

⑸ c語言使用結構體的一道題

#include<stdio.h>
struct DATE {
int year;
int month;
int day;
};
void push(int d[12],int*year,int*month,int*day) {
if(*day<d[*month-1])
(*day)++;
else if(*day>d[(*month)-1])printf("error input!");
else if(*month<12)(*month)++,*day=1;
else (*year)++,*month=1,*day=1;
}
int main(void)
{
int d1[12]= {31,28,31,30,31,30,31,31,30,31,30,31},d2[12]= {31,29,31,30,31,30,31,31,30,31,30,31};
struct DATE before;
scanf("%d%d%d",&before.year,&before.month,&before.day);
if((before.year%4==0&&before.year%100!=0)||before.year%400==0)push(d2,&before.year,&before.month,&before.day);
else push(d1,&before.year,&before.month,&before.day);
printf("%d年%d月%d日",before.year,before.month,before.day);
return 0;
}

⑹ 二級C語言關於結構體的題目

#include <stdio.h>

#include<string.h>

struct st{

char a[15];

long b;

};

int main ()

{

struct st s[111];

long end[111];

char t[50][14],other[14]={'333'},son[50][14],gson[50][14];

char x[11];

int n;

scanf("%d",&n);

getchar();

for(int i=0;i<n;i++)

{

scanf("%s%ld",s[i].a,&s[i].b);

}

for(int i=0;i<n;i++)//排序

{

for(int j=0;j<n-1-i;j++)

{

if(strcmp(s[j].a,s[j+1].a)>0)

{

strcpy(x,s[j].a);

strcpy(s[j].a,s[j+1].a);

strcpy(s[j+1].a,x);

}

}

}

for(int i=0;i<n-1;i++)

{

for(int j=i+1;j<n;j++)

{

if(strcmp(s[i].a,s[j].a)==0&&s[i].b==s[j].b)

{

strcpy(s[i].a,other);//去名字和號碼同時重復的

s[i].b=0;

}

}

}

int k=0;

for(int i=0;i<n;i++)

{

if(strcmp(s[i].a,other)!=0)

{

strcpy(t[k],s[i].a);

end[k]=s[i].b;

k++;

}

}

for(int i=0;i<k;i++)

{

strcpy(son[i],t[i]);

}

for(int i=0;i<k-1;i++)//在上面的基礎上再去名字重復的;

{

for(int j=i+1;j<k;j++)

{

if(strcmp(son[i],son[j])==0)

{

strcpy(son[i],other);

}

}

}

int word=0;

for(int i=0;i<k;i++)

{

if(strcmp(son[i],other)!=0)

{

strcpy(gson[word],son[i]);

word++;

}

}

printf(" ");

int sum=0;

for(int i=0;i<word;i++)

{

sum=0;

for(int j=0;j<k;j++)

{

if(strcmp(gson[i],t[j])==0)

{

if(sum==0)

printf("%s %ld ",gson[i],end[j]);

if(sum!=0)

printf("%s_%d %ld ",gson[i],sum,end[j]);

sum++;

}

}

}

return 0;

}

⑺ c語言結構體題目

主要是題目有點煩,因為%d%s%d這個地方字元串的接收遇到一個空格可能就接收完了,但是第二組數據pencial box本身就是帶空格的,跑了一下發現這組數據生成了兩個結構體變數,一個是pencial,另一個是pen,pencial里的另外兩個數據是亂碼的。考慮到所有的商品名稱都有可能是多個單片語合成的,而本身又無法提前知道會有多少個空格進來,所以這里的輸入可能得考慮直接用%s接收,然後從數組最後往前割出需要的數字,再用 atof()將字元串轉換為小數,atoi()將字元串轉換為整數,能弄出來的但是太麻煩了= =或者有什麼更好的scanf接收格式,暫時也沒找到。。。

⑻ c語言結構體的問題

#include<stdio.h>
struct stutype /*定義結構體*/
{
int num;
char name[10];
int score[3];
};
struct stutype stu[10];
void main()
{
int i;
int ave[10];
printf("10名學生的信息:\n");
printf("學號 姓名 成績1 成績2 成績3\n");
for(i=0;i<10;i++)
{
scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); /*輸入學生信息*/
ave[i]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3; /*求平均成績*/

}
printf("學號 姓名 成績1 成績2 成績3 平均成績\n"); /*輸出學生信息*/
for(i=0;i<10;i++)
{
printf("%-5d%s%d%d%d%d",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],ave[i]);
}

}
/*除了一樓說的兩個錯誤之外還有一個致命錯誤,用scanf讀入字元串時,%s對應的應該是個字元型指針變數,而不是一個字元變數,否則程序運行到這里就出錯了,printf也一樣,但是程序不出錯,而是輸出空字元串<null>
二樓 分隔符為空格時可以省略,其餘不可省略 printf函數的stu[i].name[10]參數也要改為stu[i].name的*/

⑼ C語言結構體題目

int i;

for (i = 0; i < n; i++) {
if (strstr(a[i].num, studno)) {
a[i].s += 10;
break;
}
}

return i;

⑽ 關於C語言的題目:用結構體定義一個復數,並實現復數的加法、減法和乘法。

#include <stdio.h>

struct complex

{

int re;

int im;

};

void add(struct complex a, struct complex b, struct complex *c)

{

c->re=a.re+b.re;

c->im=a.im+b.im;

}

void minus(struct complex a, struct complex b, struct complex *c)

{

c->re=a.re-b.re;

c->im=a.im-b.im;

}

int main()

{

struct complex x,y,s,p;

scanf("%d%d",&x.re,&x.im);

scanf("%d%d",&y.re,&y.im);

add(x,y,&s);

printf(" sum=%5d+%5di ",s.re,s.im);

minus(x,y,&p);

printf(" proct=%5d+%5di ",p.re,p.im);

}

(10)c語言關於結構體的題擴展閱讀:

復數運演算法則

1、加法交換律:z1+z2=z2+z1

2、乘法交換律:z1×z2=z2×z1

3、加法結合律:(z1+z2)+z3=z1+(z2+z3)

4、乘法結合律:(z1×z2)×z3=z1×(z2×z3)

5、分配律:z1×(z2+z3)=z1×z2+z1×z3