简单的编程问题,c语言中,我定义了一个结构体数组,但结构体中的各个元素的类型是不同的,比如一个学生 c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:...
2.你确定是结构体数组而不是链表对吧,那么遍历这个数组与数组中相应元素(结构体)中的对应查询数据比对即可,打到后打印该元素内所有数据
3.删除可以在结构体中设置一个该元素是否被删除的标致,初始为未删除,删除时标记为删除即可,由于是数组,删除数组中元素需要将删除元素之后的所有元素向前移动一位会比较浪费时间
4.人数不确定则可以使用一个计数用来记录当前学生数量多少,如果下一个学生的添加超过了这个数量则动态添加数组长度,即使用动态数组
5.一般来说你输入的数据是存储在内存中的,程序一旦退出后程序所占资源被回收所以数据也就丢失了,为了数据不丢失可以将数据保存到一个能够永久保存数据库的外部存储设备比如保存到硬盘上,简单地说就是保存到文件里,程序启动时从文件里读取数据
一般这样的程序都是使用链表来做
当前使用数组也是可以的
之前我就有用结构体数组做过一个简单的学生管理系统
如果需要写代码的话
我可以有偿代劳
怎么在C语言中定义一个数组,数组元素的数据类型为自己定义的结构体类型~
struct zdy_st {
int data;
char name[10];
};
struct zdy_st myStruct[5] ; //定义一个结构体数组,有五个元素
#include
#include
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3]; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
};
/*排序用一个函数来实现*/
void SortScore(student *stu,int n)
{
student stud;
for(int i = 0; i < n-1; i++)
for(int j = i+1 ; j < n; j++)
{
if(stu[i].total < stu[j].total)
{
stud = stu[i];
stu[i] = stu[j];
stu[j] = stud;
}
}
}
int main( )
{
student stu[STU_NUM]; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/
/*输入这十个学生的相关信息*/
for(int i = 0; i<STU_NUM; i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",&stu[i].stu_id);
printf("输入第%d个学生的数学成绩:",i+1);
scanf("%f",&stu[i].score[0]);
printf("输入第%d个学生的英语成绩:",i+1);
scanf("%f",&stu[i].score[1]);
printf("输入第%d个学生的计算机成绩:",i+1);
scanf("%f",&stu[i].score[2]);
stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].aver = stu[i].total/3;
}
printf("
");
SortScore(stu,STU_NUM);/*调用排序函数*/
/*输出排序后的各学生的成绩*/
for(i = 0 ; i < STU_NUM; i++)
{
printf("序号: %d",i);
printf("学号:%s",stu[i].stu_id);
printf("数学:%f",stu[i].score[0]);
printf("英语:%f",stu[i].score[1]);
printf("计算机:%f",stu[i].score[2]);
printf("平均成绩:%f",stu[i].aver);
printf("总分:%f",stu[i].total);
printf("
");
}
return 0;
}
注:(源程序中主要标识符含义说明)
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3]; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
}
C语言编程问题!!高手救命,在线等答案
答:另外,对于应该输入float的时候用户输入char导致跳过某些变量输入的情况,这和scanf内部实现的机制有关,因为它是靠类型指针来获取对应值的,那么如果对于普通类型(比如float,VC6中为4字节)变量,如果用户的录入有问题(比如char*),scanf会直接跳过当前变量的赋值。针对这种情况,如果非要用C语言而不是...
c语言编程的问题
答:main() //主函数 { FILE *fp; int i=20,j=30,k,n;//定义一个文件指针,fp,整型i j k n fp=fopen("d1.dat""w"); //打开文件d1.dat也就是建立文件,后面的w就是write fprintf(fp,"%d\n",i); //写出文件函数,写出20,第二个写出30,就是d1.dat文件中的数据 fprintf...
C语言编程问题
答:int max(int x,int y);int main(){ int a,b,c;scanf("%d%d",&a,&b);c = max(a,b);printf("max=%d\n",c);return 0;} int max(int x,int y){ if(x>y)return x;else return y;} 你的错误有:声明函数要在函数外面;scanf("%d,%d,&a,&b");这条语句最好中的逗号最...
C语言编程中经常会出现未定义的是怎么回事??
答:1.因为你的确没有定义E|emType,你可以在花括号前加上他,如typedef struct ElemType{...2,加#define 0K 1补充,第一个问题只能保证编译能通过,因为我不知道他是什么东东,第二个问题可以把定义过的头文件包含在你的c文件中 pengguismile | 发布于2013-05-11 举报| 评论 0 1 一般是因为变量、函数未...
菜鸟问一道简单的C语言编程题
答:完整程序如下,我加的就是定义了一个函数AREA include <stdio.h> include <math.h> //函数的定义,定义area=sqrt((s*(s-a)*(s-b)*(s-c))根号下的内容,返回一个值,在主函数里调用该函数 float AREA(float s,float a,float b,float c){ float X=s*(s-a)*(s-b)*(s-c);return ...
初学者请教 两道简单的c语言编程题目
答:[回答]1. 用C语言自己的时间函数 difftime(time_t time1, time_t time0) / 86400 这样做得缺点是,这里的time_t类型,只支持到2037年 2. 自己定义函数 楼主用的方法,在实际编程里不常用,变化比较大。下面这个方法是直接计算两个日期到公元元年的天数 然后相减,这个是实际编程时的算法,经过...
c语言编程问题!
答:我的 c语言编程问题!1.编程在一个已知字符串中查找最长单词,假定字符串中只含有字母和空格,空格用来分割不同单词!2.编写实现任意十进制数,转换成r进制数(r在2到16之间)3.从键盘输入一个金额(如345... 1.编程在一个已知字符串中查找最长单词,假定字符串中只含有字母和空格,空格用来分割不同单词!2.编写实现...
C语言编程问题,初学者,不太会,谢谢啦
答:include<stdio.h> int f(int *a,int n){ int max,min;max=min=0;for(int i=0;i<n;i++)if(a[i]>a[max])max=i;else if(a[i]<a[min])min=i;int t;t=a[max];a[max]=a[n-1];a[n-1]=t;t=a[min];a[min]=a[0];a[0]=t;} int main(){ int a[111],n=0...
C语言编程问题
答:aaa x; x也就是int型的,aaa和int完全是一个东西 union是共用体的定义关键字 对应的你这里 typedef union {变量列表}MYTYPE; 就是MYTYPE来表示这个定义的共用体 这样的好处就是不用在前面直接定义一些全局变量(结构体,共用体一般都是在函数外部定义,定义的变量都是全局变量),而在函数中定义...
c语言程序设计题:请用自定义函数的形式编程实现,求s=m!+n!+k! m n...
答:代码:include <stdio.h> 请用自定义函数的形式编程实现 求 s = m! + n! + k!,m、n、k 从键盘输入(值均小 于 7)。int fun(int m);int main(){ int m,n,k;int s;printf("请输入三个小于7的数:");scanf("%d %d %d",&m,&n,&k);s=fun(m)+fun(n)+fun(k);printf("...