㈠ c语言程序设计实例教程的图书目录
第1章 C语言概述
1.1 C语言的发展及特点
1.1.1 C语言的发展
1.1.2 C语言的特点
1.2 C语言程序的结构及其基本要求
1.2.1 C语言程序的结构
1.2.2 C语言程序的基本要求
1.3 C语言程序上机调试步骤和方法
1.3.1 Turbo C2.0开发环境
1.3.2 Visual C++6.0开发环境
习题
第2章 数据类型、运算符与表达式
2.1 常量和变量
2.1.1 常量和符号常量
2.1.2 变量
2.2 运算符和表源茄核达式
2.2.1 算术运算符和算术表达式
2.2.2 赋值运算符和赋值表达式
2.3 数据类型转换
2.3.1 不同数据类型的数据音的混合运算
2.3.2 强制类型转换
2.4 位运算
习题
第3章 数据的输入和输出
3.1 数据的输出
3.1.1 格式输出函数printf()
3.1.2 字符输出函数putchar()
3.2 数据的输入
3.2.1 格式输入函数scanf()
3.2.2 字符输入函数getchar()
3.3 输入输出综合应用举例
习题
第4章 C程序控制结构
4.1 顺序结构程序设计
4.1.1 C语言语句
4.1.2 顺序结构
4.2 程序控制结构中的条件表示
4.2.1 关系运算符和关系表达式
4.2.2 逻辑运算符和逻辑表达式
4.2.3 条件运算符和条件表达式
4.3 选择结构程序设计
4.3.1 if语句
4.3.2 switch语句
4.4 循环结构程序设计
4.4.1 while语句
4.4.2 do-while语句
4.4.3 for语句
4.4.4 循环的嵌套
4.4.5 break、continue和goto语句
4.5 综合应用举例
习题
第5章 数组
5.1 一维数组
5.1.1 一维数组的定义和初始化
5.1.2 一维数组的引用与赋值
5.1.3 一维数组的应用举例
5.2 二维数组
5.2.1 二维数组的定义和初始化
5.2.2 二维数组的引用与赋值
5.2.3 二维数组的应用举例
5.3 字符数组
5.3.1 字符数组的定义和初始化
5.3.2 字符数组的引用与赋值
5.3.3 字符串函数
5.3.4 字符数组的应用举例
5.4 综合应用举例
习题
第6章 函数
6.1 函数的定义、声明与调用
6.1.1 函数的定义
6.1.2 函数的声明
6.1.3 函数的调用
6.2 变量和函数的作用域
6.2.1 变量的作用域
6.2.2 变量生命周期
6.3 函数的递归调用
6.4 预预处理命令
6.4.1 宏定义
6.4.2 文件包含
6.4.3 条件编译
6.5 综合应用举例
习题
第7章 指针
7.1 指针变量的定义和引用
7.1.1 指针变量的定义
7.1.2 指针变量的引用
7.1.3 指针运算
7.2 指针与数组
7.2.1 指针与一维数组
7.2.2 指针与二维数组
7.2.3 指针与字符串
7.2.4 指针数组
7.3 指针与函数
7.3.1 指针变量作为函数的参数
7.3.2 函数的返回值为指针
7.3.3 指向函数的指针
7.3.4 带参数的main函数和命令行参数
7.4 多级指针
7.5 综合应用举例
习题
第8章 结构体、共用体和枚举类型
8.1 结构体
8.1.1 结构体类型的定义
8.1.2 结构体变量的定义
8.1.3 结构体变量的引用和初始化
8.1.4 结构体数组
8.1.5 结构体与指针
8.1.6 结构体与函数
8.2 共用体
8.2.1 共用体类型和变量的定义
8.2.2 共用体变量的引用
8.3 枚举类型
8.3.1 枚举类型的定义
8.3.2 枚举变量的定义和引用
8.4 动态存储分配
8.4.1 动态分配函数
8.4.2 链表简介
8.5 用typedef定义类型
8.6 综合应用举例
习雹掘题
第9章 文件
9.1 文件概述
9.1.1 文件的基本概念
9.1.2 文件类型指针纳者
9.1.3 文件的打开与关闭
9.2 文件的读写和定位
9.2.1 文件的读写
9.2.2 文件的定位
9.3 文件操作错误的检测
9.4 综合应用举例
习题
附录 1 ASCII码表
附录 2 运算符和结合性
附录 3 常见库函数(按函数类别排序)
㈡ C语言程序设计实例教程的2010年版图书
C语言程序设计实例教程
作者: 朱家义,黄勇 主编
出 版 社: 清华大学出版社
出茄基版时间: 2010-1-1
开本: 16开
I S B N : 9787302193821
定价:¥29.00 本书以程序设计知识板块为基础,针对高级语言的知识体系结构,围绕学习目标为相关内容设计出相应实例任务,通过与任务相关知识的学习,达到完成该章任务的目的。各章均安排具有针对性的拓展实例,以便于读者迸一步理解和牢固掌握各章节的基本内容,体现了学以致用的原则。
全书共分11章,主要内容包括算法基础、c语言基础、顺序结构程序设计、选择结构程序设旦纳枣计、循环结构程序设计、数组与指针、函数、文件、编译预处理、简单图形编程和综合应用程序的开发等内容。
本书可作为高等学校计算机及相关专业程序设计的教材,也可作为计算机等级考试以及计算机爱好者自学用书和各类工程技术人员的参考书。 第1章程序设计基础
1.1算法
1.1.1算法的定义
1.1.2算法的描述方法
1.1.3算法设计的要求
1.1.4算法时间效率
1.1.5结构化程序设计
1.2问题求解的实现过程
1.3C语言程序结构
1.3.1C程序的结构
1.3.2标识符和关键字
本章小结
习题1
第2章C语言基础知识
2.1数据类型简介
2.2常量和变量
2.2.1常量
2.2.2符号常量
2.2.3变量
2.3基本数据类型
2.3.1整型
2.3.2实型
2.3.3模拆字符型
2.3.4枚举类型
2.4构造类型
2.4.1数组
2.4.2结构体
2.4.3共用体
2.4.4用typedef定义类型
2.5指针
2.5.1指针与指针变量
2.5.2指针变量的定义
2.5.3指针变量的引用
2.6运算符与表达式
2.6.1算术运算
2.6.2关系和逻辑运算
2.6.3赋值运算
2.6.4位运算
2.6.5条件运算
2.6.6逗号运算
2.6.7表达式的其他说明
2.7数据类型转换
2.7.1自动类型转换
2.7.2赋值类型转换
2.7.3强制类型转换
2.8常用库函数介绍
2.8.1数学函数
2.8.2字符函数
本章小结
习题2
第3章顺序结构程序设计
3.1任务描述
3.2赋值语句
3.3数据输入与输出
3.3.1printf函数
3.3.2scanf函数
3.3.3字符数据的输入与输出
3.4程序实现
3.5实例拓展
本章小结
习题3
第4章选择结构程序设计
4.1任务描述
4.2if语句
4.2.1单分支if语句
4.2.2双分支if语句
4.2.3if语句的嵌套
……
第5章循环结构程序设计
第6章数组与指针
第7章函数与指针
第8章文件
第9章预处理命令
第10章简单图形编程
第11章C语言综合程序设计
附录A ASCII码表
附录B Turbo C集成开发环境
附录C Turbo C2.0常用库函数
附录D Turbo C语言运算符表
参考文献
㈢ C语言程序设计实例教程的内容简介
本书作为C语言程序设计的入门与应用教材,共分9章,主要内容包括:C语言概述;数据类型、运算符与表达式;数据的输入和输出;C程序控制结构;数组;函数及预处理命令;指针;结构体、共用体和枚举类型;文件操作等。本书注重基础,突出应用。每章都有一节为“综合应用举羡埋例”,以便于读者能汪桥够综合运用本章知识点提高实际编程能力。
本书易教易学、学以致用、注重能力,对困派猛初学者容易混淆的内容进行了重点提示和讲解。本书适合作为普通高等院校应用型本科(含部分专科、高职类)各相关专业的程序设计教材,也适合编程开发人员培训、自学使用。
㈣ c语言课程设计
字数受限,只能打这多了或看看这个http://wenku..com/view/92d3d138376baf1ffc4fad1a.html#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "mem.h" #include "ctype.h" /#include "alloc.h" #define N 3 typedef struct z1
{
char no[11];
char name[15];
int score[N];
float sum;
float average;
int order;
struct z1 *next;
}STUDENT;
STUDENT *init();
STUDENT *create();
STUDENT *delete(STUDENT *h);
void print(STUDENT *h); /* 显示所有记录*/
void search(STUDENT *h); /*查找*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*读入记录*/
void computer(STUDENT *h); /*计算总分和均分*/
STUDENT *insert(STUDENT *h); /*插入记录*/
void append(); /*追加记录*/
void (); /*复制文件*/
STUDENT *sort(STUDENT *h); /*排序*/
STUDENT *index(STUDENT *h); /*索引*/
void total(STUDENT *h); /*分类合计*/
int menu_select(); /*菜单函数*/
/******主函数开始*******/
main()
{
int i;
STUDENT *head; /*链表定义头指针*/
head=init(); /*初始化链表*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{ /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break;
case 1:head=create();break;
case 2:head=delete(head);break;
case 3:print(head);break; /*显示全部记录*/
case 4:search(head);break; /*查找记录*/
case 5:save(head);break; /*保存文件*/
case 6:head=load(); break; /*读文件*/
case 7:computer(head);break; /*计算总分和均分*/
case 8:head=insert(head); break; /*插入记录*/
case 9:();break; /*复制文件*/
case 10:head=sort(head);break; /*排序*/
case 11:append();break; /*追加记录*/
case 12:head=index(head);break; /*索引*/
case 13:total(head);break; /*分类合计*/
case 14:exit(0); /*如菜单返回值为14程序结束*/
}
}
}
/*菜单函数,返回值为整数*/
menu_select()
{
char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/
" 0. init list", /*初始化*/
" 1. Enter list", /*输入记录*/
" 2. Delete a record from list", /*从表中删除记录*/
" 3. print list ", /*显示单链表中所有记录*/
" 4. Search record on name", /*按照姓名查找记录*/
" 5. Save the file", /*将单链表中记录保存到文件中*/
" 6. Load the file", /*从文件中读入记录*/
" 7. compute the score", /*计算所有学生的总分和均分*/
" 8. insert record to list ", /*插入记录到表中*/
" 9. the file to new file", /*复制文件*/
" 10. sort to make new file", /*排序*/
" 11. append record to file", /*追加记录到文件中*/
" 12. index on nomber", /*索引*/
" 13. total on nomber", /*分类合计*/
" 14. Quit"}; /*退出*/
char s[3]; /*以字符形式保存选择号*/
int c,i; /*定义整形变量*/
gotoxy(1,25); /*移动光标*/
printf("press any key enter menu......\n"); /*压任一键进入主菜单*/
getch(); /*输入任一键*/
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
gotoxy(10,2); /*移动光标*/
putch(0xc9); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xcd); /*输出上边框水平线*/
putch(0xbb); /*输出右上角边框 ┓*/
for(i=3;i<20;i++)
{
gotoxy(10,i);putch(0xba); /*输出左垂直线*/
gotoxy(54,i);putch(0xba);
} /*输出右垂直线*/
gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xcd); /*输出下边框水平线*/
putch(0xbc); /*输出右下角边框┛*/
window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr(); /*清屏*/
for(i=0;i<16;i++) /*输出主菜单数组*/
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
gotoxy(10,21); /*移动光标*/
do{
printf("\n Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/
scanf("%s",s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整形数*/
}while(c<0||c>14); /*选择项不在0~14之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
STUDENT *init()
{
return NULL;
}
/*创建链表*/
STUDENT *create()
{
int i; int s;
STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf("\nout of memory"); /*输出内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号并校验*/
if(info->no[0]=='@') break; /*如果学号首字符为@则结束输入*/
inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/
printf("please input %d score \n",N); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i<N;i++) /*N门课程循环N次*/
{
do{
printf("score%d:",i+1); /*提示输入第几门课程*/
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0);
s=s+info->score[i];
}
info->sum=s;
info->average=(float)s/N;
info->order=0;
info->next=h;
h=info; }
return(h); /*返回头指针*/
}
/*输入字符串,并进行长度验证*/
inputs(char *prompt, char *s, int count)
{
char p[255];
do{
printf(prompt); /*显示提示信息*/
scanf("%s",p); if(strlen(p)>count)printf("\n too long! \n"); }while(strlen(p)>count);
strcpy(s,p); }
void print(STUDENT *h)
{
int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
clrscr(); /*清屏*/
p=h; /*初值为头指针*/
printf("\n\n\n****************************STUDENT********************************\n");
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");
while(p!=NULL)
{
i++;
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("**********************************end*********************************\n");
}
/*删除记录*/
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/
char s[11]; /*存放学号*/
clrscr(); /*清屏*/
printf("please deleted no\n"); /*显示提示信息*/
scanf("%s",s); /*输入要删除记录的学号*/
q=p=h; /*给q和p赋初值头指针*/
while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/
{
q=p; /*将p指针值赋给q作为p的前驱指针*/
p=p->next; /*将p指针指向下一条记录*/
}
if(p==NULL) /*如果p为空,说明链表中没有该结点*/
printf("\nlist no %s student\n",s);
else /*p不为空,显示找到的记录信息*/
{
printf("*****************************have found***************************\n");
printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order);
printf("********************************end*******************************\n");
getch(); /*压任一键后,开始删除*/
if(p==h) /*如果p==h,说明被删结点是头结点*/
h=p->next; /*修改头指针指向下一条记录*/
else
q->next=p->next; /*不是头指针,将p的后继结点作为q的后继结点*/
free(p); /*释放p所指结点空间*/
printf("\n have deleted No %s student\n",s);
printf("Don't forget save\n");/*提示删除后不要忘记保存文件*/
}
return(h); /*返回头指针*/
}
/*查找记录*/
void search(STUDENT *h)
{
STUDENT *p; char s[15]; clrscr();
printf("please enter name for search\n");
scanf("%s",s); /*输入姓名*/
p=h; /*将头指针赋给p*/
while(strcmp(p->name,s)&&p!=NULL) /*当记录的姓名不是要找的,或指针不为空时*/
p=p->next; /*移动指针,指向下一结点*/
if(p==NULL) /*如果指针为空*/
printf("\nlist no %s student\n",s); /*显示没有该学生*/
else /*显示找到的记录信息*/
{
printf("\n\n*****************************havefound***************************\n");
printf("|nO | name | sc1| sc2| sc3| sum | ave |order|\n");
printf("|----------|---------------|----|----|----|--------|-------|-----|\n");
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("********************************end*******************************\n");
}
}
/*插入记录*/
STUDENT *insert(STUDENT *h)
{
STUDENT *p,*q,*info; /*p指向插入位置,q是其前驱,info指新插入记录*/
char s[11]; /*保存插入点位置的学号*/
int s1,i;
printf("please enter location before the no\n");
scanf("%s",s); /*输入插入点学号*/
printf("\nplease new record\n"); /*提示输入记录信息*/
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info)
{
printf("\nout of memory"); /*如没有申请到,内存溢出*/
return NULL; /*返回空指针*/
}
inputs("enter no:",info->no,11); /*输入学号*/
inputs("enter name:",info->name,15); /*输入姓名*/
printf("please input %d score \n",N); /*提示输入分数*/
s1=0; /*保存新记录的总分,初值为0*/
for(i=0;i<N;i++) /*N门课程循环N次输入成绩*/
{
do{ /*对数据进行验证,保证在0~100之间*/
printf("score%d:",i+1);
scanf("%d",&info->score[i]);
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0);
s1=s1+info->score[i]; /*计算总分*/
}
info->sum=s1; /*将总分存入新记录中*/
info->average=(float)s1/N; /*计算均分*/
info->order=0; /*名次赋值0*/
info->next=NULL; /*设后继指针为空*/
p=h; /*将指针赋值给p*/
q=h; /*将指针赋值给q*/
while(strcmp(p->no,s)&&p!=NULL) /*查找插入位置*/
{
q=p; /*保存指针p,作为下一个p的前驱*/
p=p->next; /*将指针p后移*/
}
if(p==NULL) /*如果p指针为空,说明没有指定结点*/
if(p==h) /*同时p等于h,说明链表为空*/
h=info; /*新记录则为头结点*/
else
q->next=info; else
if(p==h) {
info->next=p; h=info; }
else
{
info->next=p; q->next=info;
}
printf("\n ----have inserted %s student----\n",info->name); printf("---Don't forget save---\n"); /*提示存盘*/
return(h); /*返回头指针*/
}
/*保存数据到文件*/
void save(STUDENT *h)
{
FILE *fp; /*定义指向文件的指针*/
STUDENT *p; /* 定义移动指针*/
char outfile[10]; /*保存输出文件名*/
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示文件名格式信息*/
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,如没有则建立*/
{
printf("can not open file\n");
exit(1);
}
printf("\nSaving file......\n"); /*打开文件,提示正在保存*/
p=h; /*移动指针从头指针开始*/
while(p!=NULL) /*如p不为空*/
{
fwrite(p,sizeof(STUDENT),1,fp);/*写入一条记录*/
p=p->next; /*指针后移*/
}
fclose(fp); /*关闭文件*/
printf("-----save success!!-----\n"); /*显示保存成功*/
}
/* 从文件读数据*/
STUDENT *load()
{
STUDENT *p,*q,*h=NULL; /*定义记录指针变量*/
FILE *fp; /* 定义指向文件的指针*/
char infile[10]; /*保存文件名*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/
if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为读方式*/
{
printf("can not open file\n"); /*如不能打开,则结束程序*/
exit(1);
}
printf("\n -----Loading file!-----\n");
p=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!p)
{
printf("out of memory!\n"); /*如没有申请到,则内存溢出*/
return h; /*返回空头指针*/
}
h=p; /*申请到空间,将其作为头指针*/
while(!feof(fp)) /*循环读数据直到文件尾结束*/
{
if(1!=fread(p,sizeof(STUDENT),1,fp))
break; /*如果没读到数据,跳出循环*/
p->next=(STUDENT *)malloc(sizeof(STUDENT)); /*为下一个结点申请空间*/
if(!p->next)
{
printf("out of memory!\n"); return h;
}
q=p; p=p->next; }
q->next=NULL; /*最后一个结点的后继指针为空*/
fclose(fp); /*关闭文件*/
printf("---You have success read data from file!!!---\n");
return h; /*返回头指针*/
}
/*追加记录到文件*/
void append()
{
FILE *fp; /*定义指向文件的指针*/
STUDENT *info; /*新记录指针*/
int s1,i;
char infile[10]; /*保存文件名*/
printf("\nplease new record\n");
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info)
{
printf("\nout of memory"); /*没有申请到,内存溢出本函数结束*/
return ;
}
inputs("enter no:",info->no,11); /*调用inputs输入学号*/
inputs("enter name:",info->name,15); /*调用inputs输入姓名*/
printf("please input %d score \n",N); /*提示输入成绩*/
s1=0;
for(i=0;i<N;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&info->score[i]); /*输入成绩*/
if(info->score[i]>100||info->score[i]<0)printf("bad data,repeat input\n");
}while(info->score[i]>100||info->score[i]<0); /*成绩数据验证*/
s1=s1+info->score[i]; /*求总分*/
}
info->sum=s1; /*保存总分*/
info->average=(float)s1/N; /*求均分*/
info->order=0; /*名次初始值为0*/
info->next=NULL; /*将新记录后继指针赋值为空*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/
if((fp=fopen(infile,"ab"))==NULL) /*向二进制文件尾增加数据方式打开文件*/
{
printf("can not open file\n"); /*显示不能打开*/
exit(1); /*退出程序*/
}
printf("\n -----Appending record!-----\n");
if(1!=fwrite(info,sizeof(STUDENT),1,fp)) /*写文件操作*/
{
printf("-----file write error!-----\n");
return; /*返回*/
}
printf("-----append sucess!!----\n");
fclose(fp); /*关闭文件*/
}
/*文件拷贝*/
void ()
{
char outfile[10],infile[10];
FILE *sfp,*tfp; /*源和目标文件指针*/
STUDENT *p=NULL; /*移动指针*/
clrscr(); /*清屏*/
printf("Enter infile name,for example c:\\f1\\te.txt:\n");
scanf("%s",infile); /*输入源文件名*/
if((sfp=fopen(infile,"rb"))==NULL) /*二进制读方式打开源文件*/
{
printf("can not open input file\n");
exit(0);
}
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示输入目标文件名*/
scanf("%s",outfile); /*输入目标文件名*/
if((tfp=fopen(outfile,"wb"))==NULL) /*二进制写方式打开目标文件*/
{
printf("can not open output file \n");
exit(0);
}
while(!feof(sfp)) /*读文件直到文件尾*/
{
if(1!=fread(p,sizeof(STUDENT),1,sfp))
break; /*块读*/
fwrite(p,sizeof(STUDENT),1,tfp); /*块写*/
}
fclose(sfp); /*关闭源文件*/
fclose(tfp); /*关闭目标文件*/
printf("you have success file!!!\n"); /*显示成功拷贝*/
}
/*排序*/
STUDENT *sort(STUDENT *h)
{
int i=0; /*保存名次*/
STUDENT *p,*q,*t,*h1; /*定义临时指针*/
h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/
h->next=NULL; /*第一个结点为新表的头结点*/
while(h1!=NULL) /*当原表不为空时,进行排序*/
{
t=h1; /*取原表的头结点*/
h1=h1->next; /*原表头结点指针后移*/
p=h; /*设定移动指针p,从头指针开始*/
q=h; /*设定移动指针q做为p的前驱,初值为头指针*/
while(t->sum<p->sum&&p!=NULL) /*作总分比较*/
{
q=p; /*待排序点值小,则新表指针后移*/
p=p->next;
}
if(p==q) /*p==q,说明待排序点值大,应排在首位*/
{
t->next=p; /*待排序点的后继为p*/
h=t; /*新头结点为待排序点*/
}
else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/
{
t->next=p; /*t的后继是p*/
q->next=t; /*q的后继是t*/
}
}
p=h; /*已排好序的头指针赋给p,准备填写名次*/
while(p!=NULL) /*当p不为空时,进行下列操作*/
{
i++; /*结点序号*/
p->order=i; /*将名次赋值*/
p=p->next; /*指针后移*/
}
printf("sort sucess!!!\n"); /*排序成功*/
return h; /*返回头指针*/
}
/*计算总分和均值*/
void computer(STUDENT *h)
{
STUDENT *p; /*定义移动指针*/
int i=0; /*保存记录条数初值为0*/
long s=0; /*总分初值为0*/
float average=0; /*均分初值为0*/
p=h; /*从头指针开始*/
while(p!=NULL) /*当p不为空时处理*/
{
s+=p->sum; /*累加总分*/
i++; /*统计记录条数*/
p=p->next; /*指针后移*/
}
average=(float)s/i;/* 求均分,均分为浮点数,总分为整数,所以做类型转换*/
printf("\n--All students sum score is:%ld average is %5.2f\n",s,average);
}
/*索引*/
STUDENT *index(STUDENT *h)
{
STUDENT *p,*q,*t,*h1; /*定义临时指针*/
h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/
h->next=NULL; /*第一个结点为新表的头结点*/
while(h1!=NULL) /*当原表不为空时,进行排序*/
{
t=h1; /*取原表的头结点*/
h1=h1->next; /*原表头结点指针后移*/
p=h; /*设定移动指针p,从头指针开始*/
q=h; /*设定移动指针q做为p的前驱,初值为头指针*/
while(strcmp(t->no,p->no)>0&&p!=NULL) /*作学号比较*/
{
q=p; p=p->next;
}
if(p==q) /*p==q, {
t->next=p; h=t; }
else {
t->next=p; /*t的后继是p*/
q->next=t; /*q的后继是t*/
}
}
printf("index sucess!!!\n"); /*索引排序成功*/
return h; /*返回头指针*/
}
/*分类合计*/
void total(STUDENT *h)
{
STUDENT *p,*q; /*定义临时指针变量*/
char sno[9],qno[9],*ptr; /*保存班级号的*/
float s1,ave; /*保存总分和均分*/
int i; clrscr(); /*清屏*/
printf("\n\n *******************Total*****************\n");
printf("---class---------sum--------------average----\n");
p=h; while(p!=NULL)
{
memcpy(sno,p->no,8); /*从学号中取出班级号*/
sno[8]='\0'; /*做字符串结束标记*/
q=p->next; /*将指针指向待比较的记录*/
s1=p->sum; /*当前班级的总分初值为该班级的第一条记录总分*/
ave=p->average; /*当前班级的均分初值为该班级的第一条记录均分*/
i=1; /*统计当前班级人数*/
while(q!=NULL) /*内循环开始*/
{
memcpy(qno,q->no,8); /*读取班级号*/
qno[8]='\0'; /*做字符串结束标记*/
if(strcmp(qno,sno)==0) /*比较班级号*/
{
s1+=q->sum; /*累加总分*/
ave+=q->average; /*累加均分*/
i++; /*累加班级人数*/
q=q->next; /*指针指向下一条记录*/
}
else
break; }
printf("%s %10.2f %5.2f\n",sno,s1,ave/i);
if(q==NULL)
break; else
p=q; }
printf("---------------------------------------------\n");
}
㈤ c语言课程设计的课程介绍
通过学习C语言程序设计,掌握高级语言程序设计的基本知识,掌握面向过程程序设计和软件开发的基本方法,学会用C语言解决本专业的实际问题,提高分析问题和解决问题的能力。
1、课程性质 ,
《C语言程序设计》是电子信息相关专业的专业能力模块课程。
2、课程与系列产品或项目设计与开发流程的关联
该课程是嵌入式系列产品程序设计的基础。
3、课程目标
通过“篮球赛计时计分系统程序设计”等5个案例的学习与实践,培养学生运用C语言程序设计的知识,解决常用嵌入式系统程序开发问题的能力。
4、与前后续课程的关系
后续课程:《模块电路功能编程》、《机器人编程与控制》。
㈥ C语言程序设计教程的介绍
本书定闹正位于将C语言作为计算机编程入门语言,以帮助读者树立计算机程序设计的思想,培养学生程序设计基本能力为目标的教材。全书以程序设计为主线,采用案例驱动模式展开讲解,通过案例和问题引入主要教学内容,重点讲解程序设计的思想和方法,并结合相关的语唯锋法知识。全书主要包括3方面的内容:基本内容(数据表液山悔达、数据处理和流程控制)、常用算法和程序设计风格以及C语言应用中的一些处理机制(编译预处理和命令行参数等)。涉及数据类型、表达式、分支、循环、函数、数组、指针、结构、文件的概念、应用以及指针和各种构造类型的混合运用、基本算法等内容。
㈦ 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语言程序设计教程
对于初学C语言的人来说,使用VC++6.0编写简单的程序再合适不过了,那么我们一起来看一下怎么使用VC++6.0来创建,编写和运行一个简单的C语言慎咐程序吧。
- 01
点击电脑左下角开始,运行VC++6.0程序。
- 02
单击”文件“菜单项,选择子菜单”新建“,进入新建界面。
- 03
由于早期学习只需要控制台应用程序,我们选择Win32 Console Application。
- 04
选择空工程猜历利于自己学习
- 05
再新建C++ Source File(C++ 源文件) 。
- 06
然后键入代码:#include <stdio.h>int main ()<
printf ("Hello , world!n");return 0; - 07
最后按红色的感叹号或者按快捷键可直接编译连接并运行
- 08
运行成功。
特别提示
常见小问题:can not open file debug/*.exe
问题:执行Link.exe时出错,主要问题是计算机权限不足。
解决方案:右键桌面的vc快捷方式,点“兼容性”,勾选“以管理员身份运行”并应用
如果穗孝搜怎么都不能运行,那么就是你的工作空间创建在了vc默认的MyProjects工作区,这样会有很多问题。所以在创建工作空间的时候一定要选一个自己的文件夹,最好不要有中文。
㈨ C语言程序设计教程的目 录
第1章C语言概述1
1.1简单的C语言程序1
1.2C语言的发展历史与特点3
1.2.1C语言的发展历史3
1.2.2C语言的特点4
1.3C程序的开发步骤和上机调试流程5
1.3.1C程序的开发步骤5
1.3.2C程序的上机开发过程6
习题112
第2章基本数据类型的输入/输出13
2.1C语言的输入/输出13
2.2整型数据的输入/输出13
2.3浮点型数据的输入/输出14
2.4字符数据的输入/输出15
2.5字符串数据的输入/输出15
2.6格式化输入/输出举例17
2.7阅读材料18
2.7.1格式化输出函数printf的格式说明和使用18
2.7.2格式化输入函数scanf的格式说明和使用19
习题221
第3章流程控制22
3.1算法22
3.1.1算法的概念22
3.1.2算法的表达方式23
3.1.3基本流程控制结构25
3.1.4案例3.1 求1+1/2+…+1/100的和26
3.2选择语句26
3.2.1案例3.2 求三个整数的最大值(if语句)26
3.2.2案例3.3 百分制成绩转换成五分制成绩(多分支if语句)29
3.2.3案例3.4 判断所输入的一个字符是数字、空白符还是其他字符(switch语句)31
3.2.4案例3.5 百分制成绩转换成五分制成绩(switch语句)33
3.3循环语句34
3.3.1案例3.6 求1+1/2+…+1/100的和(while语句)34
3.3.2案例3.7 求1+1/2+…+1/100的和(do...while语句)35
3.3.3案例3.8 求1+1/2+…+1/100的和(for语句)37
3.4转向语句39
3.4.1案例3.9 判断所输入的一个大于1的正整数是否是素数(break语句)39
3.4.2案例3.10 输出100~200之间能被3整除的数(continue语句)41
3.5应用举例42
3.5.1案例3.11 计算1! + 2! + … + 10!(并讨论溢出问题)42
3.5.2案例3.12 计算级数1-1/3+1/5-1/7+…的和44
3.5.3案例3.13 统计输入的数字字符、字母字符和其他字符的个数45
3.5.4案例3.14 求两个正整数的最大公约数和最小公倍数45
3.5.5案例3.15 将一个正整数逆序输出46
3.5.6案例3.16 输入日期并检查其合理性,直到输入合理为止47
3.6阅读材料48
3.6.1C语言的语句48
3.6.2goto语句简介49
3.6.3exit()函数49
3.6.4程序调试简介50
习题351
第4章函数54
4.1模块化程序设计54
4.1.1模块化程序设计的基本思想54
4.1.2C语言程序设计的基本结构55
4.2函数定义和调用55
4.2.1案例4.1 求3个整数的最大值(函数定义和调用)57
4.2.2案例4.2 验证哥德巴赫猜想(在1000以内验证)57
4.2.3案例4.3 计算1k+2k+…+nk(函数原型、函数的嵌套调用)59
4.3标识符的作用域60
4.3.1案例4.4 块作用域60
4.3.2案例4.5 文件作用域61
4.3.3函数原型作用域61
4.3.4函数作用域62
4.4变量的存储种类62
4.4.1自动变量62
4.4.2寄存器变量62
4.4.3案例4.6 外部变量63
4.4.4案例4.7 静态变量64
4.5指针基础64
4.5.1地址和指针的概念64
4.5.2指针变量65
4.5.3案例4.8 两数交换(指针做参数)65
4.5.4案例4.9 输入10个整数求它们的最大值、最小值和总和(指针做参数)66
4.5.5案例4.10 统计百分制成绩各分数段的人数(指针做返回值)67
4.6递归函数68
4.6.1案例4.11 计算4!(递归函数的定义和递归调用过程分析)68
4.6.2案例4.12 计算整数各位数字之和69
4.6.3案例4.13 计算70
4.6.4案例4.14 汉诺塔问题70
习题471
第5章编译预处理74
5.1宏74
5.1.1案例5.1 无参宏75
5.1.2案例5.2 有参宏75
5.2文件包含76
5.3条件编译77
5.3.1条件编译命令77
5.3.2案例5.3 头文件设计78
5.4阅读材料80
5.4.1程序的多文件组织方法80
5.4.2多文件程序的编译和链接80
习题581
第6章数组83
6.1一维数组83
6.1.1一维数组的定义、初始化和使用83
6.1.2最大值、最小值和平均值86
6.1.3一维数组作为函数的参数88
6.1.4数组排序90
6.1.5数组查找95
6.2二维数组98
6.2.1二维数组的定义、初始化和使用98
6.2.2矩阵转置100
6.2.3二维数组的本质101
6.3字符串104
6.3.1字符数组和字符串104
6.3.2字符串的输入和输出105
6.3.3字符串处理107
习题6111
第7章指针120
7.1简介120
7.2什么是指针120
7.2.1变量、变量的值与变量的地址120
7.2.2指针122
7.2.3定义指针变量123
7.2.4间接运算符123
7.2.5指针赋值125
7.2.6指针作为函数的参数126
7.2.7返回指针的函数130
7.3指针与一维数组131
7.3.1使指针指向数组131
7.3.2指针算术运算131
7.3.3指针关系运算138
7.3.4一维数组名与指针140
7.3.5向函数传递数组实际上是传递指针142
7.4指针与二维数组145
7.4.1二维数组的本质145
7.4.2指向数组的指针与二维数组名146
7.4.3用指向元素的指针访问二维数组151
7.5指针数组153
7.6带参数的main函数154
7.7指向指针的指针155
7.8指向函数的指针156
7.8.1指向函数的指针的定义和使用方法156
7.8.2指向函数的指针作函数参数157
7.9字符串处理函数159
7.9.1字符串的输入输出(gets和puts)159
7.9.2求字符串长度(strlen)160
7.9.3字符串复制(strcpy、strncpy)和字符串连接(strcat)160
7.9.4字符串比较(strcmp)163
7.9.5字符串中字符的大小写转换(strlwr和strupr)164
7.10动态内存分配164
7.10.1C语言的程序内存空间165
7.10.2用malloc函数分配一块内存165
7.10.3用calloc函数分配连续的内存空间167
7.10.4用realloc函数改变内存块的大小168
习题7170
第8章自定义数据类型178
8.1结构体178
8.1.1案例8.1 复数的四则运算183
8.1.2案例8.2 学生成绩统计184
8.2单向链表186
8.2.1案例8.3 单向链表的建立和基本操作186
8.2.2案例8.4 猴子选大王189
8.3共用体192
8.3.1案例8.5 共用体类型及其变量的定义和使用192
8.3.2案例8.6 学生、教职工基本信息管理193
8.4枚举200
8.4.1案例8.7 枚举类型及其变量的定义和使用201
8.4.2案例8.8 枚举类型数据的输入和输出201
8.5自定义数据类型举例202
8.6阅读材料204
8.6.1位域204
8.6.2无名共用体类型的使用205
8.6.3类型别名206
习题8206
第9章文件209
9.2文件概述209
9.1.1文件的概念210
9.1.2文本文件与二进制文件210
9.1.3缓冲文件系统211
9.1.4文件类型指针211
9.2文件的打开与关闭212
9.2.1打开文件(fopen()函数)212
9.2.2关闭文件函数(fclose函数)214
9.3文本文件的读写214
9.3.1案例9.1 复制文件(fputc函数和fgetc函数)214
9.3.2案例9.2 复制文件(fgets函数和fputs函数)216
9.3.3案例9.3 学生基本信息的顺序读/写(fprintf函数和fscanf函数)218
9.4二进制文件的读写220
9.4.1案例9.4 学生基本信息的顺序读/写(fread函数和fwrite函数)220
9.4.2案例9.5 学生基本信息的随机读/写(fseek函数)222
9.5阅读材料224
9.5.1ferror()函数224
9.5.2clearerr()函数224
9.5.3feof()函数224
习题9224
第10章课程设计226
10.1课程设计的目的和要求226
10.2课程设计举例——学生成绩管理系统226
10.3课程设计选题233
实验一C语言编译环境与程序开发235
实验二输入/输出程序设计236
实验三选择结构238
实验四循环结构241
实验五函数244
实验六递归245
实验七数组的使用246
实验八字符串处理248
实验九指针与数组250
实验十指针与函数251
实验十一结构体与单向链表253
实验十二文件255
附录A常用字符与ASCII码对照表257
附录BC语言的32个关键字259
附录CC语言常用标准库函数260
附录DTurbo C 2.0程序调试技术266
附录EVisual C++ 6.0程序调试技术*270
附录F推箱子游戏源代码272
附录G贪吃蛇游戏源代码275
附录H扫地雷游戏源代码279
附录I速算24源代码288