C语言程序设计课程实验题目.docx
《C语言程序设计课程实验题目.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程实验题目.docx(11页珍藏版)》请在冰豆网上搜索。
C语言程序设计课程实验题目
C语言程序设计课程实验题目
(每组实验内容2学时)
实验一C语言上机步骤
实验目的:
熟练掌握在TurboC系统上编辑、编译、连接和运行C程序的方法。
实验内容:
1.启动TurboC系统。
①进入MS-DOS方式。
②CD\TC↙
③TC↙
2.编辑修改源程序。
①按“F3”,然后输入:
exam↙(默认文件名为“NONAME.C”)
②输入下列源程序。
main()
{inta,b,sum;
a=1;b=2;sum=a+b;
printf("sum=%d\n",sum);
}
③源程序存盘。
方法一:
按“F2”键,将以源文件名存盘。
方法二:
选取菜单项“File/WriteTo”,将以新文件名存盘。
3.编译连接程序。
方法一:
编译、连接分步执行。
按“Alt+F9”键,编译生成目标文件“exam.obj”;再按“F9”,连接生成可执行文件“exam.exe”
方法二:
编译、连接连续执行。
按“F9”键,首先编译生成目标文件“exam.obj”;接着自动连接生成可执行文件“exam.exe”
4.运行程序。
方法一:
编辑状态下,按“Ctrl+F9”键,此时是编译、连接、运行连续进行。
方法二:
按“Alt+X”键,然后输入:
exam↙(必须编译、连接成功)。
5.显示运行结果。
若按方法一运行程序,按“Alt+F5”键,查看运行结果,按任意键返回到TurboC编辑状态。
若按方法二运行程序,直接显示结果。
6.退出。
按“Alt+x”键,退出TurboC。
实验二运算符和表达式
实验目的:
掌握C语言运算符的优先级和结合方向。
实验内容:
1.若有定义intx,a,b,c,*p=&x;,写出顺序执行下列表达式后x的值,然后通过程序验证。
要求:
先写出运算结果,然后利用程序验证。
①x=a=b=10
②x=25%(c=3)
③*p+=2+3
④x/=(x+(*p%=2),(a&&5+3))
⑤x*=x+=x-=x
⑥x=((a=4%3,a!
=1),++*p>10)
验证程序:
main()
{intx,a,b,c,*p=&x;
x=a=b=10;
printf("x=%d\n",x);
x=25%(c=3);
printf("x=%d\n",x);
*p+=2+3;
printf("x=%d\n",x);
x/=(x+(*p%=2),(a&&5+3));
printf("x=%d\n",x);
x*=x+=x-=x;
printf("x=%d\n",x);
x=((a=4%3,a!
=1),++*p>10);
printf("x=%d\n",x);
}
2.若有定义inta=2,b=-3,c=4,*p=&a,*q=&b;,计算下列各表达式的值,然后通过程序验证。
要求:
先写出运算结果,然后利用程序验证。
①a>b&&b>c
②!
(b>c)+(b!
=*p)||(a+b)
③a++-c+*q
④++a-c+++b
⑤b%=c+a-c/7
⑥(float)(a+b)/2+*q
⑦!
(a==b+c)&&(*p-a)
⑧!
c+1+c&&b+c/2
验证程序:
main()
{inta,b,c,*p=&a,*q=&b;
a=2;b=-3;c=4;
printf("a>b&&b>c=%d\n",a>b&&b>c);
a=2;b=-3;c=4;
printf("!
(b>c)+(b!
=*p)||(a+b)=%d\n",!
(b>c)+(b!
=*p)||(a+b));
a=2;b=-3;c=4;
printf("a++-c+*q=%d\n",a++-c+*q);
a=2;b=-3;c=4;
printf("++a-c+++b=%d\n",++a-c+++b);
a=2;b=-3;c=4;
printf("b%%=c+a-c/7=%d\n",b%=c+a-c/7);
a=2;b=-3;c=4;
printf("(float)(a+b)/2+*q=%f\n",(float)(a+b)/2+*q);
a=2;b=-3;c=4;
printf("!
(a==b+c)&&(*p-a)=%d\n",!
(a==b+c)&&(*p-a));
a=2;b=-3;c=4;
printf("!
c+1+c&&b+c/2=%d\n",!
c+1+c&&b+c/2);
}
实验三基本输入输出函数
实验目的:
熟练掌握数据的输入输出格式。
实验内容:
1.写出下列程序的输出结果。
要求:
先写出输出结果,然后利用程序验证。
#include"stdio.h"
main()
{inta=65,b=67,c=67;
floatx=67.8564,y=-789.124;
charC='A';
longn=1234567;
unsignedu=65535;
putchar(C);
putchar('\t');
putchar(C+32);
putchar(a);
putchar('\n');
printf("%d%d\n",a,b);
printf("%c%c\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%lx\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
2.根据输入,写出下列程序的输出结果。
要求:
先写出输出结果,然后利用程序验证。
#include"stdio.h"
main()
{chara,*p1=&a;
intb,*p2=&b;
floatc,*p3=&c;
a=getchar();
putchar(*p1);
putchar('\t');
putchar(a>='a'&&a<='z'?
a-32:
a);
putchar('\n');
getchar();
scanf("%c%d%f",&a,&b,&c);
printf("a=%cb=%dc=%.2f\n",a,b,c);
getchar();
scanf("a=%cb=%dc=%f",p1,p2,p3);
printf("a=%db=%cc=%.2f\n",a,b,c);
}
输入:
a↙
输出:
输入:
b□65□3.1234↙
输出:
输入:
a=b□b=65□c=3.1234↙
输出:
实验四分支语句
实验目的:
掌握使用if~else语句和switch~case语句实现分支结构的方法。
实验内容:
1.求出下面分段函数的值
y=
要求:
(1)使用if~else语句
(2)x的值从键盘输入
2.运输公司对用户计算运费。
距离越远,每公里运费越低,标准如下:
s<250km无折扣
250<=s<5002%折扣
500<=s<10005%折扣
1000<=s<20008%折扣
2000<=s<300010%折扣
3000<=s15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费计算公式为:
f=p*w*s*(1-d),编写程序计算运费。
要求:
(1)使用switch~case语句。
(2)p、w、s的值从键盘输入。
实验五循环语句
实验目的:
掌握使用三种循环语句实现循环结构的方法。
实验内容:
1.猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。
问第一天共摘了多少桃子。
要求:
分别用三种语句编写程序。
2.编写程序验证下列结论:
任何一个自然数n的立方都等于n个连续奇数之和。
例如:
13=1;23=3+5;33=7+9+11。
要求:
程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。
实验六编译预处理
实验目的:
掌握宏定义、宏调用,以及宏展的处理过程,掌握文件包含的概念和使用。
实验内容:
1.试分析以下宏替换后的形式,计算输出结果。
要求:
先计算运行结果,然后利用程序验证。
#include"stdio.h"
#defineCX(y)2.5+y
#definePR(a)printf("%d",(int)(a))
#definePR1(a)PR(a);putchar('\n')
main()
{intx=2;
PR1(CX(5)*x);
}
2.通过宏调用方式,求从n个数的最大值。
要求:
数据从键盘输入。
实验七一维数组
实验目的:
掌握一维数组的定义、初始化,以及一维数组元素的下标法引用和指针法引用。
实验内容:
1.数组a中存放10个非0整数,编写程序,将数组a中的所有正数存放在数组的前面,负数存放在数组的后面。
要求:
(1)数组元素值从键盘输入。
(2)用下标法和指针法两种方法。
2.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的前位。
要求:
(1)数组元素值在程序中初始化。
(2)m的值从键盘输入。
(3)用下标法和指针法两种方法。
实验八二维数组
实验目的:
掌握二维数组的定义、初始化,以及二维数组元素的下标法引用和指针法引用。
实验内容:
1.有5名学生,每名学生有语文、数学、物理和外语四门课的考试成绩,编程统计各学生的总分和平均分,以及所有学生各科的总计分和平均分。
要求:
(1)成绩在程序中初始化,结果以表格的形式输出。
(2)分别用下标法和指针法实现。
2.将4×4阶矩阵的4个最小值按升序存放在主对角线上。
要求:
(1)矩阵元素从键盘输入。
(2)分别用下标法和指针法实现。
实验九字符串
实验目的:
掌握使用下标法和指针法处理字符串。
实验内容:
1.编写程序,将字符串中相同字符的存放在一起,并按ASCII码升序存放。
2.编写程序,统计字符串str中含有子串substr的个数。
实验要求:
(1)字符串从键盘输入。
(2)分别用下标法和指针法实现。
实验十函数的定义、调用与参数传递
实验目的:
掌握函数的定义、调用和参数的传递方式。
实验内容:
1.有两个数组a、b,各有10个元素,分别统计出两个数组对应元素大于(a[i]>b[i])、等于(a[i]=b[i])和小于(a[i]
要求:
通过函数调用方式,并分别使用数组元素、数组名和指针变量作函数的参数。
2.编写程序,将一个5×5阶矩阵中最大元素放在中心,四个角分别放4个最小元素(顺序为从左到右,从上到下的顺序一次从小到大存放)。
要求:
通过函数调用方式,并分别使用数组名和指针变量作函数的参数。
实验十一函数的嵌套调用和递归调用
实验目的:
掌握函数的嵌套调用和递归调用。
实验内容:
1.编写程序,计算下列函数值:
f(x,y)=
其中,s(n)=
=p
(1)+p
(2)+…p(n),p(i)=i!
。
要求:
(1)为函数p(i)、s(n)、f(x,y)均编写一个用户函数。
(2)x、y由键盘输入。
2.n个人按年龄从小到大站成一排,编号依次为1到n,年龄都相差2岁,且第一个人的年龄是10岁,问第n个的年龄是多大?
要求:
(1)通过函数递归调用方式。
(2)n的值从键盘输入。
实验十二变量的作用域与存储类别
实验目的:
掌握全局变量和局部的定义及作用域。
掌握变量的四种存储类别。
实验内容:
1.输出4×4阶矩阵的最大值、最小值及其下标。
要求:
(1)通过函数调用方式。
(2)使用全局变量。
2.计算:
(精度要求为
)
要求:
(1)通过函数调用方式。
(2)使用静态局部变量。
实验十三内部函数和外部函数
实验目的:
掌握内部函数和外部函数的定义及使用方法。
实验内容:
1.已知a、b都为整型数,计算ab。
要求:
(1)a、b值从键盘输入。
(2)主函数和计算ab的函数在不同文件中存放,求ab的函数为内部函数,使用文件包含完成。
2.删除字符串中的指定字符。
要求:
(1)字符串和要删除字符都在主函数中输入,结果在主函数中输出。
(2)主函数和删除字符串指定字符的函数在不同文件中存放,删除字符串指定字符的函数为外部函数,使用工程文件完成。
实验十四结构体
实验目的:
掌握结构体类型、结构体类型变量、结构体类型数组和结构类型指针的定义,掌握结构体类型变量和结构体类型变量成员的使用。
掌握链表的定义及操作。
实验内容:
1.有10名学生,每名学生有语文、数学、外语三门课程的成绩,计算每名学生的总成绩,然后按总成绩由高到低排序,若总成绩相同,再按外语成绩由高到低排序。
要求:
(1)利用结构体数组存放数据。
(2)通过函数调用方式。
2.已知链表L1和L2中分别存放一个升序序列,编写程序,将两个链表中的升序合并成一个升序序列存放到链表L1中。
要求:
(1)分别按带头结点和不带头结点处理。
(2)通过函数调用方式。
实验十五共用体和枚举
实验目的:
掌握共用体类型、共用体类型变量的定义,以及共用体类型变量成员的使用。
掌握枚举类型、枚举类型变量的定义,以及枚举类型变量的使用。
实验内容:
1.设某公司对所有职工进行计算机能力考核,规定35岁以下的职工进行笔试,成绩记录为百分制,60分以下为不及格;35岁(含35岁)以上的职工进行上级考核,成绩记录为a、b、c(规定为小写字母三种),c为不及格。
编写程序,输入10个职工的考核结果,输入及格编号、姓名和成绩。
要求:
用结构体和共用体类型数据来处理职工数据。
2.输入两个整型数,一次求出它们的和、差、积并输出。
要求:
用枚举类型数据来处理和、差、积的判断。
实验十六文件
实验目的:
掌握文件的打开、关闭和文件的读写操作。
实验内容:
1.有两个磁盘文件“A”和“B”,各存放一行字母(不多于80个),今要求把两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C”中去。
2.有十名学生的数据(包括学号、姓名、和三门课程的成绩)存放在文件“score.txt”中,编写程序,把有不及格的学生数据存放到文件“bhg.txt”中,成绩都合格的学生数据存放到文件“hg.txt”中。
综合实验题目:
(8学时)
1.编写一个小型学生成绩管理系统。
要求:
系统操作通过菜单的形式完成。
包括:
数据的输入、数据输出、数据编辑、数据插入、数据删除、数据查找、数据排序等。
2.编写一个小型文件管理系统。
要求:
系统操作通过菜单的形式完成。
包括:
文件复制、文本文件显示、文件连接、文件目录显示、文件内容比较、文件删除、文本文件字节数统计内容、文件更名等。
3.编写程序,实现对.DBF文件的访问和建立。