C程序设计上机实验指导.docx
- 文档编号:5479885
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:28
- 大小:33.36KB
C程序设计上机实验指导.docx
《C程序设计上机实验指导.docx》由会员分享,可在线阅读,更多相关《C程序设计上机实验指导.docx(28页珍藏版)》请在冰点文库上搜索。
C程序设计上机实验指导
C程序设计上机实验指导讲义
Lituo16@
实验报告书写格式(供参考):
《C语言程序设计》上机第次实验报告
实验名称:
姓名:
学号班级
实验类型
1、实验目的
(1)……..
(2)…….
…………..
2、实验(设计)内容(包括实验(设计)步骤、上机(设计)内容,程序清单,运行结果等)
(1)……..
…………..
(2)…….
…………
…………..
3、实验体会
(1)……..
…………..
(2)…….
目录
C程序设计上机实验指导讲义1
实验报告书写格式(供参考):
I
《C语言程序设计》上机第次实验报告I
目录II
实验一、I/O操作及顺序结构、分支结构程序设计3
一、实验目的:
3
二、实验内容:
3
实验二、循环结构程序设计4
一、实验目的:
4
二、实验内容:
4
实验三、数组程序设计7
一、实验目的:
7
二、实验内容:
7
实验四、指针程序设计9
一、实验目的:
9
二、实验内容:
9
三、补充资料10
实验五、指针、函数程序设计13
一、实验目的:
13
二、实验内容:
13
实验六、结构体程序设计17
一、实验目的:
17
二、实验内容:
17
实验七、综合设计实验18
一、实验目的:
18
二、实验内容:
18
三、实验步骤:
19
四、大型程序设计注意事项:
19
实验一、I/O操作及顺序结构、分支结构程序设计
一、实验目的:
1.掌握C语言各种标准函数的使用,并学会通过在线帮助了解标准函数使用方法以及对应的头文件;
2.掌握C数据输入输出方法,包括格式化I/O、字符串I/O,可以选择掌握C++流输入输出cin/cout;
3.掌握预编译命令#define和#include的使用;
4.学会正确使用逻辑运算符及逻辑表达式,注意“==”“=”的区别;
5.掌握顺序结构;
6.掌握选择分支结构的使用,包括if语句和switch语句(两种形式);
7.注意培养良好的程序设计习惯和风格.通过编程及上机调试,提高编程能力。
二、实验内容:
1、自行编程理解scanf和printf的各种格式说明,体会格式说明的类型要与输入/输出参数类型的一致性.
2、参考在线帮助理解gets()、puts()、putchar()、getchar()、cin、cout等函数(类)的使用方法,试着编写程序实现输入输出操作,并体验行缓冲输入方式,以及重定向的含义;
3、输入华氏温度,要求输出摄氏温度,公式为:
C=5/9*(F-32),输出要求文字说明,取2位小数。
4、试编程将阳历年365.2422天换算成几天几小时几分几秒?
(注意:
秒的结果是带小数的,试试存放秒的变量分别用float,double,longdouble定义,看结果有什么区别?
)
5、口令编码:
从键盘输入8位字符,对其进行编码,编码规律:
将顺序输入的8位字符同生日(如19820928)进行按位异或(如输入“students”,’s’对’1’,’t’对’9’,...),输出编码结果。
6、写出下面表达式运算后a的值,设原来a=10。
设a和n已定义成整型变量。
(1)a+=a
(2)a-=2
(3)a*=2+3(4)a/=a+a
(5)a%=(n%=2),n的值等于5(6)a+=a-=a*=a
先自己分析,再试着编写程序求解,看得到的结果是否一致。
7、运行程序:
#include
#include
voidmain()
{
inti;
charc;
scanf("%d",&i);
scanf("%c",&c);
cout<<"i="<
cout<<"c="
<<(c>32?
c:
'?
')< } 运行时输入: 68回车A回车,运行结果有什么问题出现? 如何处理? 8、输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80): B 70至80分(包括70): C 60至70分(包括60): D 60分以下: E 以下是采用if-else的语法结构编写的程序: #include"stdio.h" voidmain() { intscore; chargrade; printf("\npleaseinputastudentscore: "); scanf("%f",&score); if(score>100||score<0) printf("\ninputerror! ");//程序中对用户可能的错误输入,进行的出错处理 else { if(score>=90) grade='A'; else { if(score>=80) grade='B'; else { if(score>=70) grade='C'; else { if(score>=60) grade='D'; elsegrade='E'; } } } printf("\nthestudentgrade: %c",grade); } } 请把上述程序改为采用switch语句编写,写出程序,调试运行并输入测试数据,输出成绩等级。 9、编写程序求s=z+x+y ex+yx<0,y<0 z=e2x-y0<=x<1,y>=0 lnxx>=1 【基本要求】: .打开math.h头文件(在bc或tc目录下的include子目录中),寻找要求的函数原型。 .分析问题,输入是什么,输出是什么,处理过程如何用if语句构造,编制可读性好的程序(利用缩进规则,空行规则,学会附加注释)。 【测试数据】 分析下面几组数据的测试结果: 1)、-1-6 2)、-3.1-2.5 3)、0.6-4.4 4)、0.78 5)、3-2 【思考】: 用switch语句实现有什么困难? 程序如何防止不在这些条件内的数据输入? 实验二、循环结构程序设计 一、实验目的: 1.掌握while、do—while和for三种循环语句的使用; 2.掌握流程控制语句continue、break、goto的使用。 3.利用C/C++开发环境的在线帮助自学C/C++语言(BC++环境下用F1、Alt+F1、Shift+F1,VC++环境下用F1看帮助),进一步掌握查找与修改编译错误以及学习调试的方法。 二、实验内容: 【一般示例】 【例1】求5! #include voidmain() { intn,t; n=1; t=1; while(t<=5) { n=n*t; t=t+1; } printf(“%d”,n); } 【例2】求和s=1! +2! +3! #include voidmain() { intn,s=0,t=1; for(n=1;n<=3;n++) { t=t*n; s=s+t; } printf(“%d\n”,s); } 【例3】求和s=3+33+333 #include voidmain() { ints=0,t=3,i; for(i=1;i<=3;i++) { s=s+t; t=10*t+3; } printf(“%d\n”,s); } 【例4】有一数列: 2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。 #include voidmain() { intn,t,; floata=2,b=1,s=0; for(n=1;n<=10;n++) { s=s+a/b; t=a; a=a+b; b=t; } printf(“%f\n”,s); } 【典型示例】用牛顿迭代求方程2x3-4x2+3x-6=0在1.0附近的根。 #include voidmain() { floatx,x0,f,f1; x=1.0; do { x0=x; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1; }while(fabs(x-x0)>=1e-5); printf(“%6.2f”,x); } 以下为上机编程实现: 1、编写一个程序,计算 【基本要求】: 用下述方式分别编程并比较结果: 1从左到右各项相加;②从右到左各项相加;③从左到右各个正项和负项分别相加;④从右到左各个正项和负项分别相加; 【思考】: 1三种循环结构for、while、do…while都能实现吗? 2如果n(项数)由程序运行时输入确定,程序应如何修改? 3如果精度要求|sn-sn-1|<1e-8,则程序如何修改,此时n的值是什么? 2、编写一个程序求整数n阶乘(n! ) 【基本要求】: 每三个一行,共输出从1-21个数的排列,如下所示: 1! 12! 23! 6 4! 245! 1206! 720 … 【思考】: 1)计算20的阶乘时遇到什么困难,怎么解决? (提示: 考虑数据类型,printf时还要考虑指定与该类型对应的格式说明) 2)设计一个循环,不断提示用户任意输入一个整数,计算该整数的阶乘并输出显示,直到用户输入负数终止循环。 3、输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 (用getchar、while、if-elseif-else实现) 4、用迭代法求x=√a。 求平方根的迭公式为Xn+1=1/2*(xn+a/xn)要求前后两次求出的x的差的绝对值小于10-5 5、输出500以内的所有亲密数,并输出所有亲密数之和。 要求: 1)程序中既要有for循环也要有while或do…while循环 2)在输出每对亲密数时,小数在前、大数在后,并去掉重复的亲密数对,例如: 220和284是一对亲密数,而284和220也是一对亲密数,只输出220和284这对“亲密数” 3)输出要有文字说明。 输出时每对亲密数用一对圆括号括起来,两数间逗号隔开,每对占一行 4)“亲密数”定义: 如果自然数M的所有因子(包括1不包括M本身)之和为N,而N所有因子和为M,则M和N为一对亲密数。 如: 6所有因子和=1+2+3=6,所以,6和它自身构成一对“亲密数”。 6、输入一个十六进制数,输出相应的十进制数。 实验三、数组程序设计 一、实验目的: 1.掌握一维、二维数组定义、引用、初始化的方法; 2.掌握字符数组和字符串库函数的使用; 3.掌握与数组有关的算法(排序与查找与矩阵运算); 4.进一步熟悉C开发环境中调试、跟踪的使用。 二、实验内容: 1、用交换法(又叫冒泡法)对10个整数升/降序排列输出(要求: 外层循环变量代表的轮次号从0开始编号) 2、编程实现字符串拷贝、比较功能,要求不能使用系统库函数strcpy、strcmp。 3、有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。 如果该数不在数组中,则输出“无此数”。 以15个数用赋初值的方法在程序中给出,要找的数用scanf函数输入。 4、输入一组实数,按录入顺序保存进数组arr中,采用选择法对其排序,任意输入一数,直接在arr数组中将其按序插入相应位置。 (不允许使用其它数组来完成) 5、上机写出下面程序的运行结果并与自己分析结果比较: #include charstr[]=“SSSWILTECH1\1\11W\1WALLMP1”; voidmain() { intk;charc; for(k=2;(c=str[k])! =‘\0’;k++) { switch(c) { case‘A’: putchar(‘a’);continue; case‘1’: break; case1: while((c=str[++k])! =‘\1’&&c! =‘\0’); case9: putchar(‘#’); case‘E’: case‘L’: continue; default: putchar(c);continue; } putchar(‘*’); } puts(“”); } 6、编程实现将一行字符串中最长的单词输出。 7、输入一串字符,以“? ”结束。 统计各字母出现的次数,并按字母出现的多少输出(先输出次数多的,次数相同的按字母表顺序输出,不出现的字母不输出)。 如: 输入: 5B3A+4-HDEH5DH? 要求: 排序方法任选交换法和选择法中一种 输出: H3 D2 A1 B1 E1 8、输入一段以回车换行终止的英文语句,要求将句中的多余空格删掉(允许在单词之间有一个空格),然后将句中单词首字母全改成大写输出。 要求: 该英文语句保存进数组中,删除多余空格及大写首字母均在同一个数组中进行。 9、编程求一个3×3矩阵对角线元素之和。 实验四、指针程序设计 一、实验目的: 1、进一步熟悉开发环境,掌握编译、连接和调试的技巧; 2、理解指针的概念,掌握指针变量的定义与引用; 3、掌握使用数组的指针和指向数组的指针变量; 4、掌握使用字符串的指针和指向字符串的指针变量。 二、实验内容: 1、上机调试并理解下述例题: 找错并作理解说明: #include voidmain(void) { inta[10],i,*p;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 上机 实验 指导
![提示](https://static.bingdoc.com/images/bang_tan.gif)