{ int i,n=0; char y[40];
for(i=0;*(x+i)!='\\0';i++) if(*(x+i)=='A') break; i=i+1;
while(*(x+i)!='A') { y[n]=*(x+i); n++; i++;} y[n]='\\0'; return(y); } main( )
{ char a[40]; char *l,*sub( ); gets(a); l=sub(a);
printf(\ }
实训内容 1、用指针变量实现交换变量的值(交换指向和交换指向变量的值两种方法来实现,比较区别)。 (一)交换指向的变量的值 (二)交换指向
2、用指针实现:有n个整数,使前面各数顺序后移m个位置,最后m个数变成最前面m个数,写一函数完成以上功能,在主函数中输入n个整数和输出调整后的n个数。 3、编程实现利用行指针实现数组元素的输入和输出。 4、用指向字符串的指针变量实现字符串连接函数。
第四部分 数据类型构造与模块化程序设计
(结构体的构造与应用)
[实训目的及要求] 通过本次实训内容,使学生初步了解构造类型--C语言结构体类型,掌握结构体类型的定义、结构体数组的定义、结构体指针的定义及初始化、引用、应用,并在此基础上重点掌握链表的建立及输出。
程序1:一个学生的基本信息有:学号、姓名、性别和年龄,现要存放5个同学的信息,编程实现把各项信息输出出来。
struct student /*定义一种结构体类型*/ { int num;
char name[20]; char sex; int age; } ;
#include “stdio.h” main()
{ struct student stu[5]; int i;
for(i=0;i<5; i++)
scanf(\ for(i=0;i<5; i++)
printf(\}
程序2:建立一个静态链表,它由三个学生数据结点组成,输出各结点的数据 #include “stdio.h” #define NULL 0 struct student {long num; float score;
struct student *next;}; main()
{struct student a,b,c,*head,*p; a.num=99101;a.score=89.5; b.num=99103;b.score=90; c.num=99107;c.score=85; head=&a; a.next=&b; b.next=&c; c.next=NULL; p=head;
while(p!=NULL)
{printf(“%ld%5.1f\\n”,p->num,p->score); p=p->next; } } 实训内容
1、定义一个结构体类型,包括职工的如下信息:职工号、姓名、年龄、工资和职称,输入3个人的信息,然后输出。
2、编程实现静态链表的建立和输出。
第五部分 文件操作
[实训目的及要求] 通过本次实训内容,使学生初步了解C语言中文件操作的类型,掌握文件的打开及关闭的操作,并能熟练进行字符及数据块的读写操作,为后续的课程设计打好基础。 程序1:从键盘上接收字符写到文件中去,然后将其关闭。 #include
char c; FILE *fp;
fp=fopen(“d:\\\\guo\\\\test.txt”,“w+”); if(fp!=NULL) do{
c=getchar(); fputc(c,fp); }while(c!=‘q’);
fclose(fp); }
程序2:从文件中读取字符,并通过显示器显示出来,然后将其关闭。 #include
FILE *fp; char c;
fp=fopen(“d:\\\\guo\\\\test.txt”,“r+”); do{
c=fgetc(fp); putchar(c); }while(c!=EOF); fclose(fp); }
程序3:从键盘上输入若干个学生的学号及考试成绩, 学号等于0作终止标记) #include \main()
{ struct student { int num;
float score; }; struct student stu; FILE *fp;
fp=fopen(\
scanf(\while(stu.num!=0)
{ fwrite(&stu,sizeof(struct student),1,fp); scanf(\fclose(fp);}
程序4:将程序4建立的文件内容读出并显示出来。#include \main()
{ struct student { int num;
float score; }; struct student stu[10]; FILE *fp; int n=0 ,i;
if((fp=fopen(\
{ fread(&stu[n],sizeof(struct student),1,fp); while(!feof(fp)) { n++;
fread(&stu[n],sizeof(struct student),1,fp);} for(i=0;i printf(\ 将这些数据写入磁盘文件y.dat中。(由 fclose(fp);} else printf(\} 实训内容 1、把存储在f1.txt文件中的字符复制到f2.txt中。 2、从键盘上输入若干个学生的学号、姓名及年龄,存储在student1.dat文件中。 模块二:深化部分 总 要 求 1、分组讨论,全面透彻的认识问题; 2、找出问题的解决算法; 3、根据算法画出流程图; 4、根据流程图写出代码。 综合设计一 编程打印所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。如:153是水仙花数,因为153=1^3+5^3+3^3。 本实训要求 1、正确定义变量及正确使用算术运算符; 2、采用合适的程序控制结构完成所需的功能; 3、选择合适的算法,以最优的方式实现设计; 4、深刻理解循环结构和分支结构的用法。 综合设计二 编程实现任意输入年月日,计算出该天是当年的第几天。如: 请输入日期(年月日的格式):2007 1 31 该天是本年的第31天。 本实训要求 1、正确定义数组并能进行合理的初始化操作; 2、熟练掌握访问数组的方法及引用方式; 3、深刻理解数组在应用过程中的重要作用。 综合是合计三 密码输入程序,要求:以?*?号代替密码字符显示,密码长度不少于6位,不超过12位。 本实训要求 1、正确定义字符数组并能进行合理的初始化操作; 2、熟练掌握访问字符数组的方法及引用方式; 3、熟练掌握字符和字符串处理函数; 4、理解并掌握字符数组和数值型数组的区别; 5、深刻理解字数组在应用过程中的重要作用。 综合设计四 编写一个成绩综合处理程序,可实现以下功能: 1、成绩输入; 2、成绩输出; 3、成绩插入; 4、成绩删除; 5、成绩排序。 本实训要求 1、正确定义功能函数并进行设计; 2、熟练掌握函数中参数及返回值的功能; 3、能熟练对项目进行功能分解并以函数形式实现; 4、理解并掌握指针的概念和引用; 5、重点掌握指向数组的指针变量的应用。 模块三:课程设计 课程设计指导书 学习《C语言程序设计》课程必须重视实践环节,为了达到独立编辑、调试、运行程序的目的,本课程除了在以上两项实训的基础上,在学完该课程后为学生安排一周的课程设计。设计以小组形式进行,各小组设定项目经理、技术经理和成员,一般为5人一组,由项目经理组织人员、进行分工和协调工作,技术经理负责开发过程中遇到的疑难问题的解决,并进行开发的全程控制。 1、设计目的: (1)加深对基础内容的理解和把握; (2)通过设计,提高学生编写程序、调试程序的能力; (3)初步培养学生软件开发的能力及团队合作的精神。 2、设计要求: 课程设计由设计小组共同完成,设计的功能应相对完善,小组各成员全程参与程序构思、基本结构设计、变量设计、函数设计、文件操作等,并完成自己的设计任务。在设计中要综合运用所学内容,顺利调试通过并运行所编制的程序。 按时上机调试,认真完成课程设计。 3、设计报告 设计完成后,由设计小组完成设计报告,具体包括以下内容: (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明。 (2)给出程序清单和程序中包含的变量、函数文字说明。 (3)给出设计程序的运行结果(上述课程设计所选择的题目对应的程序运行结果)。 (4)课程设计总结:对所选题目对应程序的运行情况做详细分析,总结本次设计所取得的经验。如果程序未能全部调试通过,则应分析其原因。 (5)报告要求字数不得少于500字,介绍整个程序的功能、模块功能及实现的方法(不包括程序清单和程序结果的部分)。 4、参考题目及选题