C语言实验报告16k.docx
《C语言实验报告16k.docx》由会员分享,可在线阅读,更多相关《C语言实验报告16k.docx(33页珍藏版)》请在冰点文库上搜索。
C语言实验报告16k
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验一C语言程序开发环境、数据类型及表达式
验证型
一、实验目的及要求
1.掌握编辑C源程序的方法,熟悉开发、运行C程序的全过程。
2.在VC编译环境下练习对C源文件进行编译和简单查错。
3.掌握C语言中各种常量的表示形式及变量的定义。
4.掌握C语言中各种运算符的作用、优先级和结合性,能熟练运用各种表达式。
5.掌握不同类型数据运算时数据类型的转换规则,了解表达式语句,尤其是赋值语句。
二、上机内容:
1.编写程序实现在屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
2.改错题(将正确程序写在指定位置)
改正下列程序中的错误,在屏幕上显示商品价格表(源程序附后面)。
输入输出示例
商品名称 价格
TCL电视机 ¥7600
美的空调 ¥2000
SunRose键盘 ¥50.5
源程序(有错误的程序)
#include
mian()
{
printf("商品名称 价格\n);
printf("TCL电视机 ¥7600")
printf("美的空调 ¥2000)
printf("SunRose键盘 ¥50.5)
}
正确的程序为:
3.编写程序:
已知a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
输入输出示例
a/b的商=7
a/c的商=3
a%b的余数=10
a%c的余数=15
4.编写程序:
设变量a的值为0,b的值为-10,编写程序:
当a>b时,将b赋给c;当a<=b时,将a赋给c。
(提示:
用条件运算符)
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、程序清单
(写出上机内容1、3、4的源程序)
五、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
六、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验二顺序结构程序设计
验证型
一、实验目的及要求
1.熟悉C语言的表达式语句、空语句和复合语句。
2.熟悉函数调用语句,尤其是输入输出函数调用语句。
3.熟悉顺序结构程序中语句的执行过程。
4.能设计简单的顺序结构程序。
二、上机内容
1.键盘输入与屏幕输出练习
问题1要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选答案中的。
#include
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
源程序(有错误的程序)
#include
main()
{
inta,b,c,s;
scanf("%d%d%d",&a,&b,c);
s=a+b+c;
printf("%d=%d+%d+%d\n",a,b,c);/*输出s=a+b+c*/
printf("%d+%d+%d=%d\n",s);/*输出a+b+c=s*/
}
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、程序清单(写出上机内容2的源程序)
五、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
六、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验三选择结构程序设计
验证型
一、实验目的及要求
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
第二次运行
Enteraandx:
55
a=5,f(5)=0.00
(2)输入a、b、c三个整数,输出最大数。
输入输出示例
第一次运行
Entera,b,c:
1,5,9
themaxnumberis:
9
第二次运行
Entera,b,c:
9,5,1
themaxnumberis:
9
第三次运行
Entera,b,c:
1,9,5
themaxnumberis:
9
3.改错题
改正下列程序中的错误,输入一个数n(不一定是整数),判定n是小于0,等于0,还是大于0。
(源程序附后面)
输入输出示例
第一次运行
Entern:
10
10isgreaterthan0
第二次运行
Entern:
-5
-5islessthan0
第三次运行
Entern:
0
0isequalto0
源程序(有错误的程序)
#include
main()
{
doublen;
printf("Entern:
");
scanf("%f",&n);
if(n<0)
printf("nislessthan0\n");
elseif(n=0)
printf("nisequalto0\n");
else
printf("nisgreater0\n");
}
单步调试程序,观察变量值的变化。
正确的程序为:
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、设计流程(算法描述)
(请写出上机内容2
(2)题的算法描述)
五、程序清单
(请写出上机内容2
(1)的源程序)
六、调试和测试结果(写出上机内容1的结果)
七、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验四循环结构程序设计
验证型
一、实验目的及要求
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
源程序(有错误的程序)
#include
main()
{
intfind=0;
while(!
find)
{
if(n%5==1&&n%6==5&&n%7==4&&n%11==10)
{
printf("n=%d\n",n);
find=1;
}
}
}
正确的程序为:
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、设计流程(算法描述)
(请写出上机内容2的算法描述)
五、程序清单
(请写出上机内容1的源程序)
六、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
七、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验五函数和预处理命令
验证型
一、实验目的及要求
1.掌握函数的定义和调用。
2.掌握使用函数编写程序。
3.掌握函数的实参、形参和返回值的概念及使用。
4.掌握单步调试进入函数和跳出函数的方法。
5.掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。
二、上机内容
1.编写自定义函数longpower(intm,intn),计算
的值。
利用此函数编程序实现:
从键盘输入两个整数m和n,计算出
的值。
2.写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
输入输出示例
输入:
n1=24n2=16
输出:
zdgys=8zxgbs=48
3.改错题
改正下列程序中的错误。
根据下式求π的值,直到某一项小于10-6(源程序附后面)
输入输出示例PI=3.14159(改正后程序运行结果)
源程序(有错误的程序)
#include
intfact(intn);
intmulti(intn);
main()
{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)
{inti;
intres=1;
for(i=0;i<=n;i++)
res=res*i;
returnres;
}
intmulti(intn)
{inti;
intres=1;
for(i=3;i<=n;i=i+2)
res=res*i;
returnres;
}
正确的程序为:
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、设计流程(算法描述)
(请写出上机内容1的算法描述)
五、程序清单
(请写出上机内容2的源程序)
六、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
七、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验六数组
验证型
一、实验目的及要求
1.掌握一维数组的定义、赋值和输入输出的方法。
2.掌握字符数组的使用。
3.掌握与数组有关的算法(例如排序算法)。
4.学会使用断点调试方法。
二、上机内容
1.编写程序:
从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。
自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。
2.已知某数列的前两项为2和3,其后每一项为其前两项之积。
编程实现:
从键盘输入一个整数x,判断并输出x最接近数列的第几项?
3.输入一串字符,计算其中字符、数字和空格的个数。
输入/输出示例:
输入:
sd234kj64jkmjk
输出:
字符:
9数字:
5空格:
1
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、设计流程(算法描述)
(请写出上机内容1的算法描述)
五、程序清单
(请写出上机内容1、2、3的源程序)
六、调试和测试结果(调试中出现的典型问题及解决方法,测试结果是否正确或具体值等)
七、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验七指针
验证型
一、实验目的及要求
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);
printf("%d\n",s);
}
二、上机内容
1.运行程序,查看程序的运行结果。
(1)#include
voidmain()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
(4)以下程序用指针实现一维数组的数据输入与输出,请填空并运行。
#include
voidmain()
{inta[6],i;
【1】;
for(i=0;i<6;i++)
scanf(“%d”,【2】);
p=a;
for(i=0;i<6;i++)
printf(“%3d”,【3】);
printf(“\n”);
}
思考:
将语句“p=a;”删去,程序运行结果会怎样?
2.完成函数的内容,函数的功能是:
将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。
调用函数后,c=4251。
完成编程后运行程序,输入上面所举的数据例子,看看程序是否能得出正确的结果。
#include
voidfun(inta,intb,long*c)
{
}
voidmain()
{inta,b;longc;
printf("Inputa,b:
");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ld\n",c);
}
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、程序清单
(请写出上机内容2中的函数)
五、调试和测试结果(请写出上机内容1的输出结果)
六、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验八结构体
验证型
一、实验目的及要求
1.理解结构体类型的概念,掌握结构体类型的定义形式。
2.掌握结构体类型变量的定义和变量成员的引用形式。
3.了解内存的动态分配、链表的概念及操作。
二、上机内容
1.建立一个学生信息结构体数组,包括学号num,姓名name[10],年龄age,性别sex。
要求通过函数input输入4个数据记录,并且在main函数中输出这5个学生的信息。
用另一函数stat统计输入记录中男生、女生的人数,以及年龄小于18岁的学生人数。
输出:
numnameagesex
01aa18M
02bb19F
03cc19M
04dd17F
boygirlage<18
221
输入输出示例:
输入:
01aa18M
02bb19F
03cc19M
04dd17F
2.编程:
完成下列程序中的函数。
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
请编写函数fun,它的功能是:
求出该学生的平均分放在记录的ave成员中。
例如,学生的成绩是:
85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:
78.875。
注意:
请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。
#include
#defineN8
structSTREC
{charnum[10];
doubles[N];
doubleave; };
voidfun(structSTREC*a)
{
}
main()
{
structSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&s);
printf("The%s'sstudentdata:
\n",s.num);
for(i=0;iprintf("%4.1f\n",s.s[i]);
printf("\nave=%7.3f\n",s.ave);
}
3.改错题
定义一个结构体数组stu并且初始化,main函数中输出数组元素各成员的值。
(源程序附后面)
输入输出示例
No. Name sexage
10101 LiLin M 18
10102 ZhangFunM 19
10104 wangMin F 20
源程序(有错误的程序)
#include
structstudent
{intnum;
charname[20];
charsex;
intage;
};
structstudentstu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFun",'M',19},{10104,"WangMin",'F',20}};
main()
{structstudent*p;
printf("No.Namesexage\n");
for (p=stu;p<3;p++)
printf("%5d%-20s%2c%4d\n",*p.num,*p.name,p.sex,p.age);
}
三、实验平台
Windows98或2000或XP以上版本VC6.0以上版本
四、程序清单(请写出上机内容1的源程序和上机内容2中的函数)
五、教师批语与成绩评定:
评语:
成绩:
优 良 中 及格 不及格
评阅教师:
评阅日期:
年 月 日
《C语言程序设计》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验九共用体、位运算、文件
验证型
一、实验目的及要求
1.理解共用体概念,掌握共用体变量定义格式和引用形式与运算。
2.掌握位运算的基本规则。
3.掌握文件和文件指针的概念以及文件的