收藏 分享(赏)

实验一 数据类型和表达式.doc

上传人:yjrm16270 文档编号:7420068 上传时间:2019-05-17 格式:DOC 页数:30 大小:564.50KB
下载 相关 举报
实验一 数据类型和表达式.doc_第1页
第1页 / 共30页
实验一 数据类型和表达式.doc_第2页
第2页 / 共30页
实验一 数据类型和表达式.doc_第3页
第3页 / 共30页
实验一 数据类型和表达式.doc_第4页
第4页 / 共30页
实验一 数据类型和表达式.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、实验一 数据类型和表达式一实验目的1.掌握 C 语言基本数据类型的概念,理解数据类型与运算的关系。2.熟悉简单变量的定义和赋值方法,掌握不同类型数据之间转换的规律。3.学习 C 语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。4.掌握数学式子的表达式表示。5.进一步熟悉 C 程序的编辑、编译、连接和运行的过程。二实验内容与算法解析1.编程计算下面算术表达式的值,手工计算检测。(1) x+a%3*(int)(x+y)%2/4 设 x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设 a=2,b=3,x=3.5,

2、y=2.52下面表达式计算中,哪些地方会发生类型转换?各个转换从什么类型转换到什么类型?表达式计算的结果是什么?试编程进行验证。(1) 2.5+2*7%2/4 (2) 4*(2L+6.5)-12(3) 10/(int)(5.1+3) (4) 2*10.0/(5*3)3.运行下面程序分析结果:main()int a,b,c;a=9;b=5;c=24;printf(“%d“,a%c/b);4.输入并运行下面程序,对照程序分析运行结果:程序如下:#include main( ) int a,b;long d;unsigned e;char c;a=100;c=W;b=-100;d=50000;e=8

3、766;printf(“a=%d,b=%d,c=%c,d=%ld,e=%un“,a,b,c,d,e); 并修改程序测试:1)将 a=100;换成 a=42569;,会得到什么结果,为什么?2)将 b=-100;换成 b=c;,会得到什么结果,为什么?3)将 e=8766; 换成 e=-10;,会得到什么结果,为什么?5.写出程序运行结果,并上机进行验证,并分析原因。main( ) int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(“i=%d,j=%d,m=%d,n=%dn“,i,j,m,n);6.编写一个 C 程序,测试下列各表达式。1) i,j2) i+1,j+13

4、)j+=i4) i+,j+5) +i,+j6) i+j7) +i+j+各表达式中 i、j 的初始值分别为 2、3 时分别测试上表达式的值。在实验中,注意如下问题:1)哪些表达式是错误的?为什么?2)理解+,+=,+,+i,i+的意义和优先级。实验二 顺序结构程序设计一实验目的1.掌握 C 语言基本语句的概念,尤其是赋值语句的使用。2.了解算法的概念及算法的表示方法。3.掌握不同数据类型的数据的输入输出方法。4.掌握 C 程序的结构化设计方法,尤其是顺序结构程序的设计。5.能熟练的使用顺序结构方法设计简单 C 程序。6.进一步学习使用 Turbo c 调试程序的技术二实验内容与算法解析1.通过下

5、面程序,练习输入语句的使用方法,并观察程序的输出格式。main()int x,y,z;scanf(“%d%d“,z=x+y;printf(“%d+%d = %d“,x,y,z);输入以下几组数据,观察 z 的值,看输入是否合理,并分析原因。1) 3 5 2) 2,63) 2.3 3.6 4) 8 -65) 32756 214582.观察下面程序的输出结果,掌握输出的格式。main()int a=25;float b=3.1545;char c=A;printf(“%dn“,a);printf(“%4dn“,a);printf(“%fn“,b);printf(“%6.2fn“,b);printf

6、(“%-8.3fn“,b);printf(“%.2fn“,b);printf(“%cn“,c);printf(“%5cn“,c);printf(“%dn“,c);3.从键盘输入直角三角形的两条直角边 a,b,编程序计算斜边 c。【算法提示】1) 输入 a,b 的值,a,b 为实型数据。2) 根据公式斜边 c 为 2 直角边的平方和的平方根,求出 c;(要使用数学函数的开方函数,程序上方要使用#include )3) 输出 c。4.鸡兔同笼问题:已知笼子里有 16 只鸡和 40 只兔,求有多少只脚,有多少只头。【算法提示】1)设有 x(x=16)只鸡,有 y(y=40)只兔,则有:2)头数等于

7、a=x+y 只3)脚数等于 b=2x+4y 只4)输出 a,b。 5.某试卷由 26 个问题组成,答对一题得 8 分,答错一题扣 5 分。输入考生答对的题目数,并输出该考生的考试成绩。6.有一函数如下:编写一程序实现输入 x,则输出 f(x)值。7.一个有 3 位整 n,请输出它的各个位。8.已知一平行四边形的边长为 a 和 b,a,b 两边的夹角的锐角为 d 度,求平行四边形的面积。(提示:数学函数中求正弦值的为 sin(x),其中 x 为弧度)实验三 选择结构程序设计一实验目的1.掌握计算关系表达式和逻辑表达式的方法。2.掌握选择结构程序设计的方法和相关语句。3.掌握 if 语句、swit

8、ch 语句和条件运算符的格式与应用。4.能熟练的使用 if 语句或 switch 语句进行选择结构的程序设计。二实验内容与算法解析1.下面两个程序均是求 a,b,c 中最大值,请把程序补充完整,并上机调试验证是否正确。1) if(ab)max=_ ;elsemax=_ _;if(maxb) if(ac) max=_; else max=_; else if(bc)max=_ _;elsemax=_;printf(“%d“,max);2.分析下面程序的运行结果,掌握 switch 的使用方法。main() int a=0,i=1;switch(i) case 0:case 3:a+=2;brea

9、k;case 1: case 2:a+=3;case 4:a+=1;break; default:a+=5; printf(“%dn“,a); 3.猜数游戏。程序预制一个常数(称为幻数),让用户猜,猜对时给出正确信息,否则会给出是大了还是小了的提示。4.给定一个不多于 5 位的整数 N,求它是几位数。5.有一函数:写一程序,输入 x 的值,输出 y 的值。6.输入一个字符,如果是字母则原样输出,如不是字母请输出 Error!。7.任意输入一个 3 位数,判断其是不是水仙花数。水仙花数:各位数的立方和等于该数本身,如 1531 3+53+33 。8.任意输入一个整数 n(n 的位数小于 4),判

10、断是不是自同构数。自同构数:一个自然数的平方的末几位数与该数相同,如: 5 225, 6 236,即 5,6 都是自同构数。【算法提示】1)输入 n;2)先求出 ;3)当 n 为一位数时,判断( 10)是否和 n 相等;当 n 为 2 位数时,判断( 100)是否和 n相等;以下依此类推;4)输出结果(是或否)。9.请把下面的程序补充完整实现输入一个年份,判断是不是闰年。如是闰年则必符合下面二条件之一:能被 4 整除,但不能被 100 整除。能被 4 整除,又能被 400 整除。main() int x;printf(“Input a year:“);scanf(“%d“,if( )print

11、f(“%d is“,x);elseprintf(“%d is not“,x);10.某衣服商店出售某种衣服,每件 30 元,买 10 件以内打九折,买 10 件到 19 件打八折,20到 39 件打七折,40 到 59 件打六折,60 件以上打五折。(分别使用 switch 语句和 if 语句实现)实验四 循环结构程序设计(一)一实验目的1.掌握循环结构程序设计的基本思想。2.熟练掌握用 for、while、do-while 语句实现一重循环程序设计。2.在程序设计过程中实现一些常用算法。3.掌握 for、while、do-while 三种循环的区别和联系。二实验内容与算法解析1.程序填空题:

12、以下两个程序的功能均是:求出 200 以内的整数中能同时被 3 和 7 整除的最大数。请填空,并调试验证。1)解法一main( )int i;for( ; ; )if( ) break;printf(“%d“,i);2)解法二main( ) int i,n;for( ; ;i+)if( )n=i;printf(“%d“,n);2.下面程序的功能是:输出 100 以内能被 3 整除且个位数为 6 的所有整数,请填空。main() int i,j; for(i=0; ;i+) j=i*10+6; if( ) printf(“%4d“,j); 3.分析下面程序的功能:main()long n,i=0

13、;printf(“Input n(n0):“);scanf(“%ld“,while(n!=0)n=n/10;i+;printf(“%d“,i);4.键盘上输入 10 个整数,求其平均值。分别用 for、while、do-while 语句实现【算法提示】1)使用循环输入 10 个数;2)求总和;3)总和/10 得到平均数(注意:整数除以整数为整除,如 10/4=2,而不是 2.5);4)输出平均数。5.while、do-while 语句实现下面程序:输出 1100 之间数的平方在 300400 之间的数。【算法提示】1)从小到大的顺序循环控制 i 的范围(1100);2)求出 i 的平方;3)判

14、断 i 的平方是否在 300400 之间( 300 if(b%3=1) b+=3;continue;b+; printf(“a=%d,b=%dn“,a,b); 2.分析下面程序的运行结果掌握循环嵌套程序的执行过程:main() int i=0,a=0;while(imain() int i,flag,count=0;long s=2,p,k,j;for(i=2;imain() int g,s,b,count=0;for(b=1;bab (2)a+b+c#include main( ) char string20;char str320;int i;for(i=0;i9据此算法设计的递归算法如下

15、,请补充完整,并上机调试:void reverse (int n) if(nextern void count(int); /*扩展外部函数 count*/main() int k;for (k=5;kProject Name,在输入框中输入 work.prj 回车。4)CTRLF9 运行,如有错误编译程序会将出错文件打开,修改错误后重新进行运行,用ALTF5 查看运行结果。8.主函数中有一个数组存放 8 个数据为:7,3,2,5,1,4,8,6,编写一函数实现对该数组中的数据从大到小进行排序。并编写主函数调用函数对数组进行排序。实验十三 简单指针一实验目的1.掌握指针和指针变量,内存单元和地

16、址、变量与地址、数组与地址的关系;2.掌握指针变量的定义和初始化,指针变量的引用方式;3.掌握取地址运算符与指针运算符;4.掌握指向变量的指针变量的使用;5.能正确使用数组的指针和指向数组的指针变量;6.能正确使用字符串的指针和指向字符串的指针变量。二实验内容与算法解析1.使用指针把从键盘输入的 2 个数按从大到小的顺序输出(不改变变量的值),请补充完整并上机调试。main() int a,b,*pa,*pb,*p;scanf(“%d,%d“,pa,pb); if( ) p=pa;pa=pb;pb=p; printf(“%d,%dn“,*pa,*pb); 2.输入 10 个整数存入一维数组,然

17、后逆置数组,最后输出。下面给出部分程序的内容,请将程序补充完整,然后上机调试。 解法一:使用 2 个指针实现main() int a10,*p1,*p2,x,i;for(p1=a;p1int min(int x,int y) return xstruct mydateint year;int month;int day;struct goodsint num;char name30;struct mydate pdate;int overdue;float price;main()struct goods g;g.num=1;strcpy(g.name,“meat“);g.pdate.year

18、=2006;g.pdate.month=6;g.pdate.day=22;g.overdue=3;g.price=7;printf(“NumtNametPdatettOverdutetPricetn“);printf(“%dt%st%d-%d-%dt%dtt%.2ftn“,g.num,g.name,g.pdate.year,g.pdate.month,g.pdate.day,g.overdue,g.price);2.程序填空:设有 6 个职工,每个职工包括职工号和工资。从键盘输入职工的数据,求平均工资,并输出最高工资和对应的职工号。#include struct worker char num

19、5;float wage;w6;main( ) float average,sum=0,max;int i,j;for(i=0;iunsigned Cyc_movR(unsigned a,int n)unsigned t;t= ;return t;unsigned Cyc_movL(unsigned a,int n)unsigned t;t= ;return t;main()int n;unsigned a;printf(“Input an octal number:n“);scanf(“%o“,printf(“Input the bit numver of rotation:n“);scan

20、f(“%d“,if(n0)printf(“Rotate right:%on“,Cyc_movR(a,n);elseprintf(“Rotate left:%on“,Cyc_movL(a,-n);3.运行下面的程序,掌握 include 命令的使用。f.c 源文件:#include “math.h“#include “myprint.c“main()float a=100,b;b=sqrt(a);print(b);myprint.cvoid print(float a)printf(“%10.4fn“,a);4.键入以下程序:#define DEBUGmain()char password30=

21、“goodday“;#ifdef DEBUGprintf(“You password:“);puts(password);#elseprintf(“Not DEBUG,You cant read.“);#endif1)运行程序,分析结果,为什么?2)去掉本程序中最上面#define DEBUG 一句,运行程序,分析结果,为什么?5.从键盘读入一个 8 进制数存入有 16 位的内存单元中,现要取出该数的低 8 位的值,请编程实现。6.编一个函数 get_bits,从一个 16 位的单元中取出某几位,并将这几位以八进制输出。函数调用形式为:getbits(value,n1,n2)其中 value

22、为该 16 位数的值,nl 为欲取出的起始位,n2为欲取出的结束位。如:getbits(021074,3,7)表示对八进制数 021074,取出其从右面起(从1 开始编号)的第 3 位到第 7 位的八进制的值。7.编写一程序,检查所用的计算机系统的 C 编译在执行右移时是按照逻辑右移的原则,还是按照算术右移的原则进行操作。如果是逻辑右移,请编一个函数实现算术右移 1 位;如果是算术右移,请编一个函数实现逻辑右移 1 位。实验十七 链表一实验目的1.掌握 C 语言中动态分配内存空间的方法;2.掌握建立链表与遍历链表的方法;3.掌握在链表中插入和删除结点的方法。二实验内容与算法解析实验十八 文件一

23、实验目的1.掌握文件以及缓冲文件系统、文件指针的概念; 2.学会使用文件打开、关闭、读、写等文件操作函数;3.学会用缓冲文件系统对文件进行简单的操作。二实验内容与算法解析1.下面的程序用来统计文件中的字符的个数,请完成填空并上机调试结果。#include main()FILE *fp;char ch;long count=0;if(fp=fopen(“letter.dat“,“r“)=NULL) /*letter.dat 换成自己文件的路径*/printf(“can not open filen“);exit(0);while(ch!=-1);ch=fgetc(fp);printf(“coun

24、t=%ldn“,count);fclose(fp);2.从键盘输入职工的信息,每个职工的数据包括职工姓名、职工号、性别、工资等信息。今要把从键盘输入的数据存入到一磁盘文件 employee 中。从键盘上输入的数据如下:Kate 01001 F 1200John 01002 M 1150Rose 01003 F 1500Mary 01004 F 1000Mike 01005 M 900向文件写入数据后,验证文件的内容是否正确。3.从上题的职工工资文件 employee 中删去一个职工的数据,再把新的数据写入到 em2 文件中。4.将上题 em2 文件中的数据,接工资高低进行排序处理,将已排序的数据存入一个新文件em_sort 中。在向文件 em_sort 写入数据后,检查 em_sort 文件中的内容是否正确。5.对上题已排序的工资文件 em_sort 进行插入一个新的职工信息,插入后工资高低仍然有序。然后将数据写入新的文件 em_new 中。插入的数据为:Jack 01009 M 1180写入数据后,验证 stu_new 文件中的内容是否正确。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报