函数和结构体的c语言题目 c语言函数与结构体

C语言结构体及函数问题没分啊 , 我就不具体看了 , 给函数和结构体的c语言题目你个慢慢看吧
#includestdio.h
#includestring.h
#includestdlib.h
struct stu
{
int num;
int wuli;
int huaxue;
int math;
};
FILE *fp;
//添加学生信息,可以排除与已存的冲突函数和结构体的c语言题目;
void add()
{
【函数和结构体的c语言题目 c语言函数与结构体】int a,b,c,d,n=0;
struct stu student;
fp=fopen("score.txt","r ");
printf("请输入要添加学生的学号、物理成绩、化学成绩及数学成绩\n");
scanf("%d%d%d%d",student.num,student.wuli,student.huaxue,student.math);
while(!feof(fp))
{
fscanf(fp,"%d%d%d%d",a,b,c,d);
if(student.num==a)
{
printf("该学生信息已存在,不需要添加\n");
fclose(fp);
n=1;
break;
}
}
if(n==0)
{
printf("信息库中没有该学生信息,可以添加\n");
fseek(fp,0,2);//文件末尾添加;
fprintf(fp,"%d\t%d\t%d\t%d\n",student.num,student.wuli,student.huaxue,student.math);
fclose(fp);
}
}
//修改学生信息;
void modify()
{
int n=0,number,a,b,c,d,offset;
struct stu student;
fp=fopen("score.txt","r ");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("请输入要修改学生的学号\n");
scanf("%d",number);
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%d%d%d%d",a,b,c,d);
if(number==a)
{
printf("该学生信息为函数和结构体的c语言题目:\n");
printf("%d\t%d\t%d\t%d\n",a,b,c,d);
printf("请输入要修改的信息\n");
scanf("%d%d%d%d",student.num,student.wuli,student.huaxue,student.math);
fseek(fp,offset,0);
fprintf(fp,"%d\t%d\t%d\t%d\n",student.num,student.wuli,student.huaxue,student.math);
n=1;
break;
}
}
if(n==0)
{
printf("该学生信息不存在\n");
}
fclose(fp);
}
//删除学生信息;
void del()
{
int n=0,number,a,b,c,d,m,offset;
fp=fopen("score.txt","r ");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("请输入删除学生的学号\n");
scanf("%d",number);
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%d%d%d%d",a,b,c,d);
if(number==a)
{
printf("该学生信息为:\n");
printf("%d\t%d\t%d\t%d\n",a,b,c,d);
printf("是否要删除该学生信息,是:1 ;否:0\n");
scanf("%d",m);
if(m)
{
fseek(fp,offset,0);
fprintf(fp,"%s\t%s\t%s\t%s"," "," "," "," ");
printf("\n");
printf("该学生信息已删除\n");
}
else printf("您已放弃删除该学生信息\n");
n=1;
break;
}
}
if(n==0)
{
printf("该学生信息不存在\n");
}
fclose(fp);
}
//查找学生信息;
void search()
{
int n=0,number,a,b,c,d,m;
char s[10];
fp=fopen("score.txt","r ");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("请选择查找方式:1--按学号查找;0--按学科查找\n");
scanf("%d",m);
if(m)
{
printf("请输入要查找学生的学号\n");
scanf("%d",number);
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
{
if(number==a)
{
printf("已找到,该学生信息为:\n");
printf("%s%s%s%s\n","学号","物理成绩","化学成绩","数学成绩");
printf("%d\t%d\t%d\t%d\n",a,b,c,d);
n=1;
break;
}
}
if(n==0)
{
printf("该学生信息不存在\n");
}
fclose(fp);
}
else
{
printf("请输入要查找的学科\n");
scanf("%s",s);
if(strcmp(s,"wuli")==0)
{
printf("学号\t物理成绩\n");
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
printf("%d\t%d\n",a,b);
fclose(fp);
}
if(strcmp(s,"huaxue")==0)
{
printf("学号\t化学成绩\n");
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
printf("%d\t%d\n",a,c);
fclose(fp);
}
if(strcmp(s,"math")==0)
{
printf("学号\t数学成绩\n");
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
printf("%d\t%d\n",a,d);
fclose(fp);
}
if(strcmp(s,"wuli")strcmp(s,"huaxue")strcmp(s,"math") )
{
printf("错误,要查找的学科不存在\n");
fclose(fp);
}
}
}
//统计学生信息;
void tongji()
{
int n=0,a,b,c,d,m,k,x[100],i,j,l=1;
float sum=0,h[100],k1;
fp=fopen("score.txt","r ");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("0--统计单科平均成绩\n");
printf("1--统计单个学生的平均成绩和总成绩,对学生排名\n");
printf("请选择统计类型\n");
scanf("%d",m);
if(!m)
{
printf("1--统计物理的平均成绩\n");
printf("2--统计化学的平均成绩\n");
printf("3--统计数学的平均成绩\n");
printf("请选择要统计的学科\n");
scanf("%d",m);
if(m==1)
{
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
{
sum=sum b;
n;
}
printf("物理的平均成绩为 %2.2f\n",sum/n);
fclose(fp);
}
if(m==2)
{
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
{
sum=sum c;
n;
}
printf("化学的平均成绩为 %.2f\n",sum/n);
fclose(fp);
}
if(m==3)
{
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
{
sum=sum d;
n;
}
printf("数学的平均成绩为 %.2f\n",sum/n);
fclose(fp);
}
}
else
{
while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)
{
h[n]=(float)(b c d);
x[n]=a;
n;
}
for(i=0;l==1in-1;i)
{
l=0;
for(j=0;jn-1-i;j)
{
if(h[j]h[j 1])
{
k1=h[j];
h[j]=h[j 1];
h[j 1]=k1;
k=x[j];
x[j]=x[j 1];
x[j 1]=k;
l=1;
}
}
}
printf("排序后\n");
printf("学号\t总成绩\t平均成绩\n");
for(i=0;in;i)
printf("%d\t%3.0f\t%.2f\n",x[i],h[i],h[i]/3.0);
}
fclose(fp);
}
void main()
{
int m;
/*fp=fopen("score.txt","w");
fprintf(fp,"%s\t%s\t%s\t%s\n","学号","物理成绩","化学成绩","数学成绩");
fclose(fp);*/
while(1)
{
printf("\n\t\t*********欢迎使用学生信息管理系统*********\n\n");
printf("\n\t\t添加,请按1");
printf("\n\t\t修改 , 请按2");
printf("\n\t\t删除,请按3");
printf("\n\t\t查询,请按4");
printf("\n\t\t统计 , 请按5");
printf("\n\t\t退出,请按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",m);
if(m=0m=5)
{
switch(m)
{
case 1: add();
break;
case 2: modify();
break;
case 3: del();
break;
case 4: search();
break;
case 5: tongji();
break;
case 0: exit(0);
}
printf("\n\n操作完毕,请再次选择函数和结构体的c语言题目!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}
关于C语言结构体函数的比较和调用 , 试题tmp.s = a[i].s ; a[i].s = a[j].s ; a[j].s = tmp.s ;只是交换了后面函数和结构体的c语言题目的成绩,而学号没有改变
tmp = a[i] ; a[i] = a[j] ; a[j] = tmp ;是直接交换地址函数和结构体的c语言题目的,学号也跟着一起交换了
C语言,结构体和函数的问题 。#includestdio.h
struct math
{
float real;
float image;
};
void main()
{
struct math s1,s2,z;
printf("x的实部值和虚部值:");
scanf("%f %f",s1.real,s1.image);
printf("y的实部值和虚部值:");
scanf("%f %f",s2.real,s2.image);
z=add(s1,s2);
printf("相加的结果:z=%f %fi\n",z.real,z.image);
}
struct math add(struct math s1,struct math s2)
{
struct math z;
z.real=s1.real s2.real;
z.image=s1.image s2.image;
return z;
}
回答的人还挺多,居然没楼上的手快,看来我只有增加内容了!
说明:
局部函数需要一个返回值,给z 。
这道题可以有三种解决方法
一、用指针,让局部函数返回值用指针传递,这样局部函数可以写void add...
二、把z定义成全局变量(就是在main函数外面定义z),然后局部函数里边不要重新定义z,这样可以把局部函数运算中的值保存下来 。局部函数也可以写void add...
三、用返回值 , 就是局部函数不要写成void add...,让他带个返回值,返回给一个数,就是上面的程序就ok了
回答
追问struct math add(struct math s1,struct math s2)这里为什么要定义成结构体?
{
struct math z;
z.real=s1.real s2.real;
z.image=s1.image s2.image;
return z;
}
因为返回值是结构体
C语言,结构体及函数问题 。uint16_tRESERVED0;定义一个16位的无符号整形变量 。
函数里变量USARTx在结构体USART_TypeDef中并没有出现;定义USART_TypeDef类型的一个指针,指针名字为USARTx
函数和结构体的c语言题目的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数与结构体、函数和结构体的c语言题目的信息别忘了在本站进行查找喔 。

    推荐阅读