C语言实验报告16kWord文档下载推荐.docx
《C语言实验报告16kWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言实验报告16kWord文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。
![C语言实验报告16kWord文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/11/2e437813-c35d-46ef-a9a6-25261bb08f94/2e437813-c35d-46ef-a9a6-25261bb08f941.gif)
4.编写程序:
设变量a的值为0,b的值为-10,编写程序:
当a>
b时,将b赋给c;
当a<
=b时,将a赋给c。
(提示:
用条件运算符)
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、程序清单
(写出上机内容1、3、4的源程序)
五、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
六、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
实验二顺序结构程序设计
1.熟悉C语言的表达式语句、空语句和复合语句。
2.熟悉函数调用语句,尤其是输入输出函数调用语句。
3.熟悉顺序结构程序中语句的执行过程。
4.能设计简单的顺序结构程序。
二、上机内容
1.键盘输入与屏幕输出练习
问题1要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选答案中的。
main()
chara,b;
intc;
scanf("
%c%c%d"
&
a,&
b,&
c);
printf("
%c,%c,%d\n"
a,b,c);
A)1234B)1,2,34
C)’1’,’2’,34D)1234
问题2在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1234,则应修改程序中的哪条语句?
怎样修改?
问题3要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?
问题4要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'
1'
'
2'
34,则应修改程序中的哪条语句?
[提示:
利用转义字符输出字符单引号字符。
]
2.编写程序:
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。
Enteraandb:
2030
d:
40
x:
28
(2)编写程序:
从键盘输入两个实数a和x,按公式计算并输出y的值:
Entera,x:
1.0,0.0
y=2.000000
3.改错题
改正下列程序中的错误。
从键盘输入3个整数a、b、c,计算这3个整数的和s,并以“s=a+b+c”和“a+b+c=s”的形式输出a、b、c和s的值。
请不要删除源程序中的注释。
(源程序附后面)
345
12=3+4+5
3+4+5=12
inta,b,c,s;
%d%d%d"
b,c);
s=a+b+c;
%d=%d+%d+%d\n"
/*输出s=a+b+c*/
%d+%d+%d=%d\n"
s);
/*输出a+b+c=s*/
Windows98或2000或XP以上版本VC6.0以上版本
四、程序清单(写出上机内容2的源程序)
评阅教师:
年 月 日
学号姓名实验日期任课教师
实验三选择结构程序设计
1.理解C语言表示逻辑量的方法(0代表“假”,非0代表“真”)。
2.学会正确使用逻辑运算符和逻辑表达式、关系运算符和关系表达式。
3.学会运用逻辑表达式和关系表达式等表达条件。
4.熟练掌握IF语句和SWITCH语句。
5.掌握简单的单步调试方法。
1.先手工计算,然后编写程序验证计算结果:
(1)求逻辑表达式5>
3&
&
2||8<
4-!
5的值。
(2)a为12,b为18,c为12,计算并输出a&
b、a||b、!
a&
c的值。
(3)a为0,b为1,c为3,计算并输出执行语句“y=(++a)&
(--b)&
(c=b+3);
”后a、b、c、y的值。
如果将语句改为“y=(++a)||(--b)||(c=b+3);
”,结果又是多少?
2.编程:
(1)输入整数x和a,计算并输出下列分段函数f(x)的值(保留2位小数),请调用log函数求自然对数,调用fabs函数求绝对值。
第一次运行
Enteraandx:
56
a=5,f(6)=0.24
第二次运行
55
a=5,f(5)=0.00
(2)输入a、b、c三个整数,输出最大数。
Entera,b,c:
1,5,9
themaxnumberis:
9
9,5,1
第三次运行
1,9,5
改正下列程序中的错误,输入一个数n(不一定是整数),判定n是小于0,等于0,还是大于0。
Entern:
10
10isgreaterthan0
-5
-5islessthan0
0isequalto0
doublen;
Entern:
"
);
%f"
n);
if(n<
0)
printf("
nislessthan0\n"
elseif(n=0)
printf("
nisequalto0\n"
else
nisgreater0\n"
单步调试程序,观察变量值的变化。
Windows98或2000或XP以上版本VC6.0以上版本
四、设计流程(算法描述)
(请写出上机内容2
(2)题的算法描述)
五、程序清单
(请写出上机内容2
(1)的源程序)
六、调试和测试结果(写出上机内容1的结果)
七、教师批语与成绩评定:
年 月 日
实验四循环结构程序设计
1.熟悉掌握C语言的while语句、do-while语句和for语句。
2.掌握在程序设计中使用循环的方法实现各种算法。
3.理解循环结构程序中语句的执行过程。
4.掌握运行到光标位置的调试方法。
1.编写程序:
求1+2+3+…+100和12+22+33+…+1002。
sum1=5050sum2=338350
2.一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2~5000中的所有完数。
628496
3.改错题
韩信点兵。
韩信有一队兵,他想知道有多少人,便让土兵排队报数。
按从1至5报数,最末一个土兵报的数为1;
按从1至6报数,最末一个土兵报的数为5;
按从1至7报数,最末一个土兵报的数为4;
最后按从1至11报数,最末一个土兵报的数为10;
你知道韩信有多少土兵吗?
n=2111
intfind=0;
while(!
find)
if(n%5==1&
n%6==5&
n%7==4&
n%11==10)
{
n=%d\n"
n);
find=1;
}
(请写出上机内容2的算法描述)
(请写出上机内容1的源程序)
六、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
实验五函数和预处理命令
1.掌握函数的定义和调用。
2.掌握使用函数编写程序。
3.掌握函数的实参、形参和返回值的概念及使用。
4.掌握单步调试进入函数和跳出函数的方法。
5.掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。
1.编写自定义函数longpower(intm,intn),计算
的值。
利用此函数编程序实现:
从键盘输入两个整数m和n,计算出
2.写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
输入:
n1=24n2=16
输出:
zdgys=8zxgbs=48
3.改错题
根据下式求π的值,直到某一项小于10-6(源程序附后面)
输入输出示例PI=3.14159(改正后程序运行结果)
intfact(intn);
intmulti(intn);
{inti;
doublesum,item,eps;
eps=1E-6;
sum=1;
item=1;
for(i=1;
item>
=eps;
i++)
{item=fact(i)/multi(2*i+1);
sum=sum+item;
printf(“PI=%0.5lf\n”,sum*2);
return0;
intfact(intn)
intres=1;
for(i=0;
i<
=n;
res=res*i;
returnres;
intmulti(intn)
for(i=3;
i=i+2)
(请写出上机内容1的算法描述)
(请写出上机内容2的源程序)
实验六数组
1.掌握一维数组的定义、赋值和输入输出的方法。
2.掌握字符数组的使用。
3.掌握与数组有关的算法(例如排序算法)。
4.学会使用断点调试方法。
从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。
自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。
2.已知某数列的前两项为2和3,其后每一项为其前两项之积。
编程实现:
从键盘输入一个整数x,判断并输出x最接近数列的第几项?
3.输入一串字符,计算其中字符、数字和空格的个数。
输入/输出示例:
sd234kj64jkmjk
字符:
9数字:
5空格:
1
Windows98或2000或XP以上版本VC6.0以上版本
(请写出上机内容1的算法描述)
(请写出上机内容1、2、3的源程序)
学号姓名实验日期任课教师
实验七指针
1.理解指针、地址和数组间的关系。
2.掌握通过指针操作数组元素的方法。
3.掌握指针作为函数参数时,实参和形参的结合方式。
(2)#include<
intf(int*a,int*b)
{ints;
s=*a+*b;
returns;
voidmain()
{intx=2,y=4,s;
s=f(&
x,&
y);
%d\n"
1.运行程序,查看程序的运行结果。
(1)#include<
{inta=7,b=8,*p,*q,*r;
p=&
a;
q=&
b;
r=p;
p=q;
q=r;
%d,%d,%d,%d\n"
*p,*q,a,b);
(4)以下程序用指针实现一维数组的数据输入与输出,请填空并运行。
{inta[6],i;
【1】;
for(i=0;
i<
6;
i++)
scanf(“%d”,【2】);
p=a;
printf(“%3d”,【3】);
printf(“\n”);
思考:
将语句“p=a;
”删去,程序运行结果会怎样?
2.完成函数的内容,函数的功能是:
将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。
调用函数后,c=4251。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。
voidfun(inta,intb,long*c)
{
{inta,b;
longc;
Inputa,b:
);
%d%d"
b);
fun(a,b,&
Theresultis:
%ld\n"
c);
(请写出上机内容2中的函数)
五、调试和测试结果(请写出上机内容1的输出结果)
学号姓名实验日期任课教师
实验八结构体
1.理解结构体类型的概念,掌握结构体类型的定义形式。
2.掌握结构体类型变量的定义和变量成员的引用形式。
3.了解内存的动态分配、链表的概念及操作。
1.建立一个学生信息结构体数组,包括学号num,姓名name[10],年龄age,性别sex。
要求通过函数input输入4个数据记录,并且在main函数中输出这5个学生的信息。
用另一函数stat统计输入记录中男生、女生的人数,以及年龄小于18岁的学生人数。
numnameagesex
01aa18M
02bb19F
03cc19M
04dd17F
boygirlage<
18
221
输入输出示例:
01aa18M
完成下列程序中的函数。
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
请编写函数fun,它的功能是:
求出该学生的平均分放在记录的ave成员中。
例如,学生的成绩是:
85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:
78.875。
注意:
请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。
#defineN8
structSTREC
{charnum[10];
doubles[N];
doubleave;
};
voidfun(structSTREC*a)
structSTRECs={"
GA005"
85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&
s);
The%s'
sstudentdata:
\n"
s.num);
N;
%4.1f\n"
s.s[i]);
\nave=%7.3f\n"
s.ave);
3.改错题
定义一个结构体数组stu并且初始化,main函数中输出数组元素各成员的值。
No. Name sexage
10101 LiLin M 18
10102 ZhangFunM 19
10104 wangMin F 20
string.h>
structstudent
{intnum;
charname[20];
charsex;
intage;
};
structstudentstu[3]={{10101,"
LiLin"
,'
M'
,18},{10102,"
ZhangFun"
,19},{10104,"
WangMin"
F'
,20}};
{structstudent*p;
No.Namesexage\n"
);
for (p=stu;
p<3;
p++)
%5d%-20s%2c%4d\n"
,*p.num,*p.name,p.sex,p.age);
四、程序清单(请写出上机内容1的源程序和上机内容2中的函数)
五、教师批语与成绩评定:
实验九共用体、位运算、文件
1.理解共用体概念,掌握共用体变量定义格式和引用形式与运算。
2.掌握位运算的基本规则。
3.掌握文件和文件指针的概念以及文件的