⑴ 一道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