当前位置:首页 » 编程语言 » c语言程序设计黄维通
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言程序设计黄维通

发布时间: 2022-02-25 01:35:21

c语言程序设计是什么

这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。
回答者: - 10-13 14:34
C语言是一种通用的程序设计语言,由于其功能非常强大,因此可以用来完成一些非常复杂的工作.很多操作系统都是用C语言编写的,例如:UNIX,MS-DOS,
Microsoft Windows,Linux 等.C语言具有高效,灵活,功能丰富,表达力强和移植性好等特点.
回答者: - 10-13 15:40
C语言的发展史和演变史就不多说了!
首先C语言是属于高级语言(在这之前有机器语言,汇编语言)
其次C语言的特点是面向结构
再次它执行的特点是指至顶向下逐行
执行!

⑵ c语言程序设计

#include<stdio.h>
void main()
{
FILE *fp;
if((fp=fopen("d:\sdlkfj.c","wt"))==NULL)
{
printf("Can't open the file!\nPress any key to exit!");
getchar();

}
fprintf(fp,"写入内容");
fclose(fp);
}

你的问题我一个一个来哈
第一个我们要创建一个文件那么第四行这一句FILE *fp是定义一个文件指针我们知道有了个文件指针那么肯定就要有这个文件,因此我们的C++它就创建了这样一个文件,文件的名字类型就是sdlkfj.c
而你说的第二个补充问题 它创建这个文件是保存在你的新建的上面这个程序的保存的地方,如果你想改 那么就可以把文件名改为D:\sdlkfj.c这样它就保存在D盘下了
你的第三个补充,我首先想说无语......我上面的程序中不是有个“写入内容”吗? 在那儿把你想要保存的自己写的程序输入进去就可以了撒
所以可以是这样的
#include<stdio.h>
void main()
{
FILE *fp;
if((fp=fopen("d:\sdlkfj.c","wt"))==NULL)/*这儿就是存在D盘*/
{
printf("Can't open the file!\nPress any key to exit!");
getchar();

}
fprintf(fp,"这儿就放你写的main程序就可以了");
fclose(fp);
}

你先运行一下试下,然后就可以去D盘找sdlkfj.c这个文件了 一定新建了这个文件的!!goodluck!

⑶ C语言程序设计 (学生选修课程设计)

这是我做的,你看是否满意?可能有点大,但也没办法呀,你的题目也比较大,呵呵!所以,如果满意,多给我追加点分!
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
typedef
struct
course
{
char
number[15],name[25];
int
kind,time,lessontime,practicetime,credit,term;
}type;
FILE
*fp1;
void
overview();
//浏览函数,负责浏览整个课程信息
void
seek();
//查询函数,负责查询课程信息
void
choose_course();//选课函数,负责让用户选课
void
out(type
temp);
void
input();
int
main()
{
int
n,i;
if((fp1=fopen("course_information.txt","wb"))==NULL)
{printf("创建文件失败!\n");exit(0);}
printf("请输入要存储的课程数目:\n");
scanf("%d",&n);
printf("开始创建文件,请输入课程信息:\n\n");
for(i=0;i<n;i++)
{
printf("请输入第%d门课程的信息:\n",i+1);
input();
printf("\n");
}
printf("如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;
如想进行选课,请输入3;如想结束选修课系统,请输入0!\n");
while((scanf("%d",&n))!=EOF)
{
if(n==1)
overview();
if(n==2)
seek();
if(n==3)
choose_course();
if(n==0)
exit(0);
printf("\n\n如想继续操作,只要按规则输入你要进行的操作即可!\n规则:如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;如想进行选课,请输入3!\n");
}
printf("欢迎您使用此程序进行选课,谢谢!\n");
fclose(fp1);
return
0;
}
void
input()
{
course
c_a;
printf("请输入课程编码:
");
scanf("%s",c_a.number);
printf("请输入课程名:
");
scanf("%s",c_a.name);
printf("请输入课程性质:限选课,请输入1;选修课,请输入2;必修课,请输入3!
");
scanf("%d",&c_a.name);
printf("请输入课程总学时:
");
scanf("%d",&c_a.time);
printf("请输入课程授课时间:
");
scanf("%d",&c_a.lessontime);
printf("请输入课程实验或实践时间:
");
scanf("%d",&c_a.practicetime);
printf("请输入课程学分:
");
scanf("%d",&c_a.credit);
printf("请输入课程所在的学期,比如第二学期,就输入2即可。");
scanf("%d",&c_a.term);
fwrite(&c_a,sizeof(struct
course),1,fp1);//将一个结构体元素写入文件中
}
void
out(type
temp)
{
printf("课程代码:
%s\n课程名:
%s\n",temp.number,temp.name);
printf("课程名:
%s\n",temp.name);
if(temp.kind==1)
printf("课程性质:
Limited
optional
course\n");
else
if(temp.kind==2)
printf("课程性质:
Optional
course\n");
else
if(temp.kind==3)
printf("课程性质:
Required
Courses\n");
else
printf("该编码系统不认识,即无对应的课程性质存在!\n");
printf("课程总学时:
%d\n课程授课学时:
%d\n实验或上机学时:
%d\n学分:
%d\n课程开课学期:
%d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term);
}
void
overview()
{
rewind(fp1);
course
temp;
printf("整个课程信息如下:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
out(temp);
}
void
seek()
{
int
judge,credit=0,kind=0;
char
a='N';
course
temp;
printf("如想按学分查询,请输入1;如想按课程性质,请输入2:\n");
scanf("%d",&judge);
rewind(fp1);
//将文件指针位置置为开头
if(judge==1)
{
printf("请输入要查询的学分:\n");
scanf("%d",&credit);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(credit==temp.credit)
out(temp);
}
else
if(judge==2)
{
printf("请输入你要查找课程的性质(限选课,请输入1;选修课,请输入2;必修课,请输入3):");
scanf("%d",&kind);
while((fread(&temp,sizeof(type),1,fp1))!=0)
if(temp.kind==kind)
out(temp);
}
else
printf("不好意思,无此类查询!\n");
}
void
choose_course()
{
rewind(fp1);
course
temp;
int
judge=1,n=0,time=0,credit=0;
char
choose[20][20];
r1:
printf("请开始填写课程编号进行选课:\n");
while(judge==1)
{
printf("请输入你所选课程的标号:
");
scanf("%s",choose[n]);
n++;
printf("如想继续选课,请输入1;如想提交,请输入0!\n");
scanf("%d",&judge);
}
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{time=time+temp.time;credit=temp.credit;break;}
}
if(time<270||credit<40)
goto
r1;
printf("你所选的课为:\n");
while((fread(&temp,sizeof(type),1,fp1))!=0)
{
for(int
i=0;i<n;i++)
if(strcmp(temp.number,choose[i])==0)
{out(temp);break;}
}
}

⑷ c语言程序设计

具体的设计方法,可以参考如下代码:
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <stdlib.h>
#include <windows.h>
typedef struct studentinfo //结构体定义
{
int num;//学号
char name[64];//姓名
int sex;//性别,1为男性,0为女性
float math;//数学
float english;//英语
float politic;//政治
float chinese;//语文
float total;//总成绩
struct studentinfo *next;
}STUDENT;

#define FILENAME "D:\\1.txt"
//定义默认的数据库文件
#define DELAYTIME 1500
//显示信息,延时
void create_menu();

STUDENT * new_student();
STUDENT* create_linkbyfile(char *);
STUDENT *del_info(STUDENT *);
int save_info(char *,STUDENT *,int);

int find_infile_printf(char *);
int pri_whole_link(STUDENT *);
STUDENT* printf_sort(STUDENT *);
void free_link(STUDENT *);

void main() //主函数
{
create_menu();
}

void create_menu()
//功能:输出功能菜单,提供人-机接口
{
int menu_Num;
STUDENT *head=NULL;
char ch;
char file_name[256];
while(1)
{
system("cls");
cout<<"\t\t学生成绩管理系统\n";
cout<<"##########################################\n";
cout<<"#\t\t 1.新增学生信息\t\t #\n";
cout<<"#\t\t 2.加载数据库\t\t #\n";
cout<<"#\t\t 3.删除学生信息\t\t #\n";
cout<<"#\t\t 4.保存学生信息\t\t #\n";
cout<<"#\t\t 5.数据库查询\t\t #\n";
cout<<"#\t\t 6.原序输出\t\t #\n";
cout<<"#\t\t 7.排序输出\t\t #\n";
cout<<"#\t\t 8.退出\t\t\t #\n";
cout<<"##########################################\n";
cout<<"请输入操作编号:";
cin>>menu_Num;
switch (menu_Num)
{
case 1:
free_link(head);//释放链表空间
head=new_student();//新增学生信息
break;
case 2:
free_link(head);//释放链表空间
cout<<"请输入要加载的数据库文件的路径"<<endl;
cin>>file_name;
head=create_linkbyfile(file_name);//读取数据文件
if(head!=NULL)
{
cout<<"数据库"<<file_name<<"已加载"<<endl;
Sleep(DELAYTIME);
}
break;
case 3:
del_info(head);//删除学生信息

break;
case 4://保存学生信息
if (head==NULL)
{
cout<<"请先生成学生信息"<<endl;
Sleep(DELAYTIME);
}
else
{

cout<<"想将学生信息保存到哪个数据库文件?";
cin>>file_name;

cout<<"请选择保存方式:0追加到文件末尾 1覆盖文件\n";
cin>>menu_Num;
if(save_info(file_name,head,menu_Num)==0)//0表示追加,1表示覆盖
{
cout<<"信息保存失败\n";
}
else
{
cout<<"数据已保存到"<<file_name<<endl;
Sleep(DELAYTIME);
}
}
break;
case 5:
find_infile_printf(FILENAME);//数据库查询

break;
case 6://原序输出信息
pri_whole_link(head);
cout<<"返回主菜单? Y/N\t";
do
{
cin>>ch;
}while(ch!='Y'&&ch!='y');

break;
case 7://排序输出信息
do
{

if((head=printf_sort(head))==NULL)
{
cout<<"数据库未加载"<<endl;
Sleep(DELAYTIME);
break;
}
else
{
cout<<"选择其他方式排序? Y/N\t";
cin>>ch;
}
}while(ch=='Y'||ch=='y');

break;

case 8:
free_link(head);//释放链表空间
exit(0);
break;
default:
cout<<"输入有误!请重新输入!"<<endl;
break;
}
}
}

STUDENT * new_student()
//功能:创建学生信息(通过链表)
//返回值:头结点指针
{
STUDENT *pnew,*p,*head;
float *pfloat;
char ch;
head=NULL;

do
{
system("cls");
pnew=(STUDENT *)malloc(sizeof(STUDENT)*1);
cout<<"请输入学生的学号(0表示取消): ";
cin>>pnew->num;
if(0>=pnew->num)
{
break;
}
cout<<"请输入学生的姓名:";
cin>>pnew->name;

while(1)
{

cout<<"请输入学生的性别:0/1\t";
cin>>pnew->sex;
if(pnew->sex&&pnew->sex-1)
{
cout<<"性别输入错误,0表示女性,1表示男性,请重新输入"<<endl;
}
else
{
break;
}
}

cout<<"请依次输入学生的数学、英语、政治、语文成绩:"<<endl;

for(pnew->total=0,pfloat=&pnew->math;pfloat<&pnew->math+4;)
{
cin>>*pfloat;
if(*pfloat<0||*pfloat>150)
{
cout<<"成绩输入错误,只能为0~150"<<endl;
}
else
{
pnew->total+=*pfloat;
pfloat++;
}
}

if(head==NULL)
{
head=pnew;
}
else
{
p->next=pnew;
}
p=pnew;
pnew->next=NULL;
cout<<"##########################该学生信息已生成#########################\n";

cout<<"建立另一个学生的信息? Y/N\t";
cin>>ch;
}while(ch=='Y'||ch=='y');

return head;
}

STUDENT* create_linkbyfile(char *filename)
//功能:读取文件,创建链表
//参数:如果filename不为空,则打开该文件,如果filename为空,要求输入文件位置
//创建的链表的所有结点的next全部修改,指向物理地址上的下一个结点
{
system("cls");
FILE *fp;
STUDENT *head,*ptemp,*pnew;

head=NULL;//初始化head为空
if(filename==NULL)//若filename为空,要求输入文件绝对地址
{
char file_name[256];
cout<<"请输入数据库文件的路径:"<<endl;
cin>>file_name;

if(NULL==(fp=fopen(file_name,"rb")))
{
cout<<"数据库连接失败\n";
return 0;
}
}
else
{
if(NULL==(fp=fopen(filename,"rb")))
{
cout<<"数据库连接失败\n";
return 0;
}
}

for(ptemp=NULL;;)
{
pnew=(STUDENT *)malloc(sizeof(STUDENT)*1);
if(fread(pnew,sizeof(STUDENT),1,fp)!=NULL)
{
if(ptemp!=NULL)
{
ptemp->next=pnew;
}
else
{
head=pnew;
}
ptemp=pnew;
}
else
{
if(ptemp!=NULL)
{
ptemp->next=NULL;
}
else
{
head=NULL;
}
free(pnew);
break;
}
}

fclose(fp);

return head;
}

STUDENT *del_info(STUDENT *head)
//根据学号,删除链表的结点
{
system("cls");
STUDENT *p1,*p2;
int num;
if (head==NULL)
{
cout<<"数据库未加载"<<endl;
Sleep(DELAYTIME);
return 0;
}
cout<<"请输入要删除学生的学号:";
cin>>num;
for(p1=head;p1!=NULL;)
{
if(p1->num==num)/到
{
if(p1==head)//要删除的结点是头结点
{
head=p1->next;
}
else
{
p2->next=p1->next;
}
cout<<"成功删除!!";
}
p2=p1;
p1=p1->next;
}
return head;
}

int save_info(char *filename,STUDENT *head,int flag)
//功能:将链表按Binary写入文件末尾
//参数:
//1.filename文件名,绝对地址
//2.head指向链表的头结点
//3.flag 0追加或1覆盖数据
//返回值:失败则返回0
{
system("cls");
FILE *fp;
STUDENT *p;
char openmethod[8];
if(flag==0)
{
strcpy(openmethod,"ab+");//追加
}
else
{
strcpy(openmethod,"w");//覆盖
}
if(NULL==(fp=fopen(filename,openmethod)))//
{
cout<<"数据库连接失败"<<endl;
Sleep(DELAYTIME);
return 0;
}
else
{
for(p=head;p;p=p->next)
{
if((fwrite(p,sizeof(STUDENT),1,fp))==NULL)
{
cout<<"数据库创建失败"<<endl;
return 0;
}

}
}
fclose(fp);
return 1;
}

int find_infile_printf(char *filename)
//功能:根据学号和姓名来查询某个学生
//参数:filename数据库文件
//返回值:失败返回0
//直接搜索文件,缺点是速度慢
//也可先根据文件创建链表,再搜索链表,缺点是如果文件较大,占用内存多
{
system("cls");
FILE *fp;
STUDENT stu;
int num;
char stu_name[64];
char ch;
if(filename==NULL)
{
return 0;
}

do
{
memset(stu_name,0,sizeof(stu_name));
cout<<"查询学号或查询姓名? 1查询学号 0查询姓名";
//flag=1根据学号来查询,flag=0根据姓名来查询
cin>>num;
if(num==1)
{
cout<<"输入要查询的学号:";
cin>>num;
cout<<"正在为您查询学号为"<<num<<"的学生……"<<endl;
}
else if(num==0)
{
cout<<"输入要查询的姓名:";
cin>>stu_name;
cout<<"正在为您查询姓名为"<<stu_name<<"的学生……"<<endl;
}
else
{
cout<<"输入有误"<<endl;
return 0;
}

if(NULL==(fp=fopen(filename,"rw")))
{
cout<<"数据库连接失败\n";
return 0;
}
else
{
while(fread(&stu,sizeof(STUDENT),1,fp)!=NULL)
{

if(strcmp(stu.name,stu_name)==0||stu.num==num)
{
cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";
//输出该学生的所有信息
cout<<stu.num<<"\t"<<stu.name<<"\t"<<stu.sex<<"\t"<<stu.math<<"\t"<<stu.english<<"\t"<<stu.politic<<"\t"<<stu.chinese<<"\t"<<stu.total<<endl;

//不加break;可支持多个相同数据的索引
}
}
}
cout<<"##########################查询完毕#########################\n";

cout<<"查询另一个学生的信息? Y/N\t";
cin>>ch;
}while(ch=='Y'||ch=='y');

fclose(fp);
return 1;
}

int pri_whole_link(STUDENT *head)
//功能:显示整条链表的学生信息
//参数:head 头结点指针,如果head为空,返回空
{
system("cls");
STUDENT* p;
if (head==NULL)
{
cout<<"数据库未加载"<<endl;
Sleep(DELAYTIME);
return 0;
}
cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";
for(p=head;p;p=p->next)
{
cout<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->math<<"\t"<<p->english<<"\t"<<p->politic<<"\t"<<p->chinese<<"\t"<<p->total<<endl;
}

return 1;
}

STUDENT* printf_sort(STUDENT *head)
//功能:根据学号|某科目成绩|总成绩对链表进行排序,然后输出
//参数:head链表头指针,如果head为空,返回空
//返回值:返回新的链表的头结点指针
{
system("cls");
STUDENT *p1,*p2,*ptemp,*pfinished=NULL;
int num;
int flag;

if (head==NULL)
{
return 0;
}
cout<<"选择排序依据 0.数学成绩1.英语成绩2.政治成绩3.语文成绩4.总成绩\n";
cin>>num;

// cout<<"升序/降序输出? 0.升序1.降序";
// cin>>flag;

for(p1=head;p1->next!=pfinished;)//对链表进行从大到小排序(这里用冒泡法)
//p1使之总是指向头结点,pfinished使之总是指向已排序好的最前面的结点
//ptemp作为中介,保存p2的上一个结点
{
for(p2=p1;p2->next!=pfinished;)
{
if(*(&(p2->math)+num)<*(&(p2->next->math)+num))//p2的值小于p2->next的值,交换 ptemp p2 p2->next
{
if(p2==p1)//头结点要交换
{
p1=p2->next;
p2->next=p1->next;
p1->next=p2;
ptemp=p1;
}
else
{
ptemp->next=p2->next;
ptemp=p2->next;
p2->next=ptemp->next;
ptemp->next=p2;
}
}
else//不需要交换,则p2、ptemp前进1位
{
ptemp=p2;
p2=p2->next;
}
}
pfinished=p2;
}

// if(flag==1)
// {
pri_whole_link(p1);
// }
// else
// {
// }

cout<<"##########################信息显示完毕#########################\n";

return p1;
}

void free_link(STUDENT *head)
//释放链表空间,如果head,什么都不做
{
STUDENT *p1,*p2;
for(p1=head;p1;p1=p2)
{
p2=p1->next;//先保存,否则
free(p1);//free后 p1->next数据丢失
}
}

⑸ c语言程序设计

选 A. '\101' , 这是转义字符八进制101。 字符常量 'A' 的数值是 八进制 101。
printf("%c %c\n",'A','\101'); //输出 A A
(16进制是 0x41, 不是 0x65, 不是 0x77)
另外, 我们可以输出字符常量 'A' 的 八进制,16进制 数值来看:
printf("%o %x\n",'A','A'); //输出 101 41

⑹ C语言程序设计

1.scanf 一个数字 num 如果num<0 重新scanf
排序很简单 自己随便写一个
2.结构体数组完全可以搞定了

⑺ C语言程序设计

这个也不是很全,但是大体功能有了,你改进一下嘛,我运行过的可以!
希望对你有所帮助!

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10 /*定义常量SIZE便于以后的修改*/
struct student /*定义一个结构体数组存放学生的信息*/
{
int number; /*学号*/
char name[20];/*名字*/
float score[3];/*分数*/
float average;/*平均分*/
}stu[SIZE];

void menu();/*调用菜单函数*/
void write();/*读入信息*/
void save();/*保存stud.dat文件函数*/
void open();/*检查是否正确保存*/
void inturn (struct student c[]);/*用于对学生的信息按平均分排序的函数*/
void save2();/*将排序后的信息存入studsort.dat文件中*/
void read();/*读取studsort.dat文件文件中第2 4 6 8 10个学生的信息*/

void main()
{

int choice;/*用户选择变量*/

printf("*******************************************************************************\n");
printf("* *\n");
printf("* Hwadee &学生成绩文件管理& Hwadee *\n");
printf("* *\n");
printf("*******************************************************************************\n\n\n");
printf("******************************●●欢迎使用●●*********************************");

system("pause");

while (1)
{
menu();/*调用菜单函数形成操作界面*/

printf("请选择:\t");
scanf("%d", &choice);

if ( choice == 0 )
{
system("cls");
printf("\n\n\t\t\t\t谢谢使用!!!\n\n\t\t\t\t\t\t\t\t指导老师: 梁凯\n\n\t\t\t\t\t\t\t\t 学生:万超\n");
break;
}

switch(choice) /*多重选择实现功能不同的功能*/
{

case 1:

write();
break;

case 2:

system("cls");
save();
break;

case 3:

system("pause");
system("cls");
open();
break;

case 4:

system("cls");
printf("排序前的学生信息:\n");
open();
inturn(stu);
save2();
break;

case 5:

system("cls");
read();
break;

default:

printf("\n无此项功能!\n请重新输入\n");

}

}

}

void menu()
{
printf("\n1*****输入学生信息\t\t2*****将信息存入文件stud.dat中\n");
printf("3*****检查文件数据\t\t4*****将学生信息排序并存入文件studsort.dat中\n");
printf("5*****读取文件studsort.dat中的第 2 4 6 8 10个学生的信息\n");
printf("0*****退出系统\n\n\n");
}
/**********************************************************************\
函数名称:
write
功能描述:
完成将学生信息写入
函数参数:
i stu
返回值:

模块历史:
\*********************************************************************/
void write()
{
int i;/*计数变量*/
stu[i].average = 0;/*初始化结构体成员 average*/

printf("请你输入学生的信息\n");
printf("学号\t姓名\t语文\t数学\t英语\t\n");
for (i=0; i<SIZE;i++)
{
scanf("%d\t",&stu[i].number);

if (stu[i].number == 0)/*不需输入信息时输入0即可*/
break;

scanf("%s\t%f\t%f\t%f",&stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);

stu[i].average = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*计算平均成绩*/

}
}

/**********************************************************************\
函数名称:
save
功能描述:
将写入的信息读入文件中
函数参数:
FILE *fp i
返回值:

模块历史:

\*********************************************************************/
void save()
{
FILE *fp;/*定义文件指针用于向文件读入数据*/
int i;
if ((fp=fopen("stud.dat","wb")) == NULL)
{
printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp) != 1)
printf("file write error\n");
fclose(fp);
printf("\n信息保存成功!恭喜!!\n\n");
}
/**********************************************************************\
函数名称:
open
功能描述:
用于检查读入文件的数据是否正确
函数参数:
FILE *cp i
返回值:

模块历史:
\*********************************************************************/

void open()
{
int i;
FILE *cp;
cp = fopen ("stud.dat","rb");
printf("保存在stud.dat文件中的信息:\n\n");
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,cp);
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}
fclose (cp);
}
/**********************************************************************\
函数名称:
inturn
功能描述:
用于对结构体数组中的元素排序
函数参数:
into i,j,k
struct student temp
返回值:

模块历史:
\*********************************************************************/

void inturn(struct student m[])
{
int i,j,k;/*计数变量*/
struct student temp;/*中间变量 类型为结构体*/
for(i=0; i<SIZE-1; i++) /*运用冒泡排序对结构体数组进行排序*/

for (j=i+1; j<SIZE; j++)
{

if( m[i].average < m[j].average )
{
temp = m[i];
m[i] = m[j];
m[j] = temp;
}
}
printf("\n排序后的学生信息:\n\n");
printf(" 学号\t姓名\t数学\t语文\t英语\t平均分\n");
for (i=0; i<SIZE; i++)
{
printf("第%d名 %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}/*输出排序后的学生信息*/

}
/**********************************************************************\
函数名称:
save2
功能描述:
将排序后的学生信息读入到另外的文件中
函数参数:
FILE *mp
i
返回值:

模块历史:
\*********************************************************************/

void save2()
{
FILE *mp;
int i;
if ((mp=fopen("studsort.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i], sizeof(struct student), 1, mp) != 1)
printf("file write error\n");
fclose(mp);/*读取完毕关闭文件*/
}
/**********************************************************************\
函数名称:
read
功能描述:
读出另外文件中的信息
函数参数:
FILE *tp
i
返回值:

模块历史:
\*********************************************************************/

void read()
{
int i=1;
FILE *tp;
tp = fopen ("studsort.dat", "rb" );
printf("studsort.dat文件中偶数号码学生的信息如下:\n\n");
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n");
for (i = 1;i<SIZE;i += 2)
{
fseek(tp,i*sizeof(struct student),0);/*fseek函数可以根据用户所需对文件开头的偏移量来读取文件的数据。

k*sizeof(struct student)是指将位置指针移到当前位置k个字节处*/
fread(&stu[i],sizeof(struct student),1,tp);
/*注意:必须使用fseek函数定位后才能根据自己所需读出数据,但是只用fseek函数不用fread,

只是把数据打印到屏幕上而并没有从文件中读取。这是一个常见性问题*/
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}
fclose (tp);/*读取完毕关闭文件*/
}

⑻ 求:标准C语言程序设计(中文版)电子书

【原 书 名】 A First Book of ANSI C, Fourth Edition
【原出版社】 Thomson
【作 者】(美)Gary J.Bronson [同作者作品]
【译 者】 单先余[同译者作品] 陈芳 张蓉 等
【丛 书 名】 国外计算机科学教材系列
【出 版 社】 电子工业出版社 【书 号】 7121026597
【出版日期】 2006 年9月 【开 本】 16开 【页 码】 586 【版 次】4-1
【定价】49.0

我在网上搜了一下,没有电子版的。
建议你学校图书馆借,这样的书图书馆一般有,英文中文都有。

⑼ C语言程序设计 清华大学出版社 黄维通 马力妮 编着

可以,但是还要学习许多别的知识,如数据结构,算法,网络,硬件等等。

⑽ C语言程序设计

#include<stdio.h>
#include<stdlib.h>
intn;
typedefstructstudent{
intnum;
intmingci;
charname[20];
doublea[4];
doublesum;
doubleavreage;

structstudent*next;
}STU;
STU*creat();
voidadd_student(STU*);
voidshow(STU*);
STU*delete_student(STU*);
voidpaiming(STU*);
voidshow_one(STU*s);
intpanan(doublel);

intmain(){
intchoose;
STU*head=creat();

while(1){
printf("1录入信息 ");
printf("2查询学生信息 ");
printf("3删除学生信息 ");


scanf("%d",&choose);
switch(choose){
case1:add_student(head);break;
case2:show(head);break;
case3:head=delete_student(head);break;
default:break;

}

}return0;
}
//创建链表表头
STU*creat(){
n=0;
STU*head;

head=(STU*)malloc(sizeof(STU));
head->next=NULL;
returnhead;
}
//录入学生信息
voidadd_student(STU*s){
STU*p=s;
STU*p1;
while(p->next!=NULL){
p=p->next;
}while(1){

printf("请输入学号:学号为0表示输入结束输入!");
scanf("%d",&p->num);
if(p->num!=0){
n++;
printf("请输入姓名:");
scanf("%s",p->name);
printf("请输入成绩格式C程序设计高等数学英语线性代数:");
scanf("%lf%lf%lf%lf",&p->a[0],&p->a[1],&p->a[2],&p->a[3]);
p->sum=p->a[0]+p->a[1]+p->a[2]+p->a[3];
p->avreage=p->sum/4;
p->mingci=0;

p1=(STU*)malloc(sizeof(STU));
p->next=p1;
p1->next=NULL;
p=p1;
}else
{
printf("录入结束! ");
paiming(s);
break;
}

}
}
//根据学号删除学生信息
STU*delete_student(STU*s){
intnum;
STU*p=s,*p1;
printf("请输入要删除学生的学号:");
scanf("%d",&num);
while(p->next!=NULL){

if(p->num==num&&s==p){
n--;
returnp->next;
}elseif(p->num==num){
n--;
p1->next=p->next;
paiming(s);
returns;

}p1=p;
p=p->next;


}
if(n==0){printf("数据库目前为空,请录入信息! ");}
else{
printf("没有发现你输入的学号! ");}
returns;

}
//显示学生数据库信息
voidshow(STU*s){
STU*head=s;
if(n==0){
printf("数据库为空,请先录入信息! ");
}
else{
while(s->next!=NULL){
printf("学号:%d姓名:%s成绩:%.2lf%.2lf%.2lf%.2lf平均分:%.2lf名次:%d ",s->num,s->name,s->a[0],s->a[1],s->a[2],s->a[3],s->avreage,s->mingci);
s=s->next;
}
show_one(head);
}
}
//对学生按平均分排名
voidpaiming(STU*s){
doublescore[n];
intj,i=0;
STU*head=s;
while(s->next!=NULL){

score[i]=s->avreage;
s=s->next;
i++;
}
doubletemp;
for(i=0;i<n;i++){
for(j=i;j<n;j++){
if(score[i]<score[j]){
temp=score[i];
score[i]=score[j];
score[j]=temp;
}

}
}


for(i=0;i<n;i++){
if(score[i]!=0){
s=head;
while(s->next!=NULL){
if(s->mingci==0){

if(score[i]==s->avreage){
score[i]=0;
s->mingci=i+1;
break;
}

}
s=s->next;
}
}
}}
//单科平均分统计
voidshow_one(STU*s){

doublear[4]={0};
intb[4][4]={{0},{0},{0},{0}};
inti;
while(s->next!=NULL){

for(i=0;i<4;i++){
b[i][panan(s->a[i])]++;
ar[i]+=s->a[i];
}
s=s->next;
}
printf("各科平均分%.2lf%.2lf%.2lf%.2lf ",ar[0]/n,ar[1]/n,ar[2]/n,ar[3]/n);
printf("90-100分%d%d%d%d ",b[0][0],b[1][0],b[2][0],b[3][0]);
printf("80-89分%d%d%d%d ",b[0][1],b[1][1],b[2][1],b[3][1]);
printf("60-79分%d%d%d%d ",b[0][2],b[1][2],b[2][2],b[3][2]);
printf("60分以下%d%d%d%d ",b[0][3],b[1][3],b[2][3],b[3][3]);

}

intpanan(doublel){

if(l>=90&&l<=100)return0;
elseif(l>=80&&l<=89)return1;
elseif(l>=60&&l<=79)return2;
elsereturn3;

}