C语言实验指导书(64学时)

上传人:平*** 文档编号:12688687 上传时间:2017-10-20 格式:DOC 页数:14 大小:79KB
返回 下载 相关 举报
C语言实验指导书(64学时)_第1页
第1页 / 共14页
C语言实验指导书(64学时)_第2页
第2页 / 共14页
C语言实验指导书(64学时)_第3页
第3页 / 共14页
C语言实验指导书(64学时)_第4页
第4页 / 共14页
C语言实验指导书(64学时)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《C语言实验指导书(64学时)》由会员分享,可在线阅读,更多相关《C语言实验指导书(64学时)(14页珍藏版)》请在金锄头文库上搜索。

1、五、实验任务与时间安排实验序号 实验内容 拟实验时间 实验形式1 C 程序的运行环境及运行一个 C 程序 2 验证性2 数据类型、运算符和表达式 2 验证性3 最简单的 C 程序设计(顺序结构) 2 验证性4 选择结构程序设计 2 验证性5 循环结构程序设计 4 验证性6 数组 4 验证性7 函数、编译预处理 2 验证性8 指针 4 验证性9 结构体、共用体 4 设计性10 文件 2 验证性实验五循环控制一、实验目的熟悉使用 while 语句,do-while 语句和 for 语句实现循环的方法。掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等) 。二、实验内容上机完成以下程

2、序:输入两个正整数 m 和 n,求出它们的最大公约数和最小公倍数。输入时,使 m=1e-7)e=e+t;i+;p=p*i;t=1.0/p;输出 e 的值3编程求 1 到 n 中能被 3 或 7 整除的数之和。分别用 for 循环语句和 while 循环语句完成本题。程序提示:for 循环语句的主要算法如下:for(i=1;i=1;i-)x=2*x+1实验六数组一、实验目的1掌握一维数组与二维数组的定义、赋值及输入输出方法。2掌握字符数组和字符串函数的使用。3掌握与数组有关的算法(特别是排序算法)二、实验内容用选择法对个整数排序。个整数用 scanf 函数输入。程序提示:输入 10 个整数存放到

3、数组 a 的 a1到 a10中输出 10 个数for(i=1;iaj) min=j;交换 ai与 amin输出排序后的 10 个数2有个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用 scanf 函数输入。程序提示:用循环语句输入 15 个数调用排序算法对其进行排序while(flag)输入要查找的数loca=0;top=0;bott=N-1;if(numberaN-1) loca=-1;while(sign=1&top=0)mid=(bott+top)/2;if(number=amid)loca=mid;print

4、f(找到了,数%d 在数组的第%d 位、n,number,loca+1);sign=0;else if(numberakmaxj) flag1=0;/max 不是该列的最小元素if(flag1)printf(n 第%d 行第%d 列的%d 是鞍点n,i+,maxj+,max);flag2=1;/endforiif(!flag2) printf(n 矩阵中无鞍点n);实验七函数一、实验目的1掌握定义函数的方法。2掌握函数实参及形参的对应关系以及“值传递”方式。3掌握函数的嵌套调用和递归调用的方法。4掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。5学会对多文件程序的编译和运行。二、实

5、验内容写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。本程序应准备以下测试数据:17,34,2,0,分别输入数据,运行程序并检查结果是否正确。程序提示:求素数函数如下:int prime(int n)if n=length)length=len;place=point;len=0;return place;在 main 函数中输入一行字符,然后调用上面函数取得最长字符的开始位置,从该位置开始输入数组元素,直到输出的数组元素不是英文字母时止。3用递归法将一个整数 n 转换成字符串。例如输入 483应输出字符串“” 。n 的位数不确定,可以是任意的整数。程序提示:void con

6、vert(int n)int i;if(i=n/10)!=0)convert(i);putchar(n%10+0);在 main 函数中输入一个整数,然后先输出该数的符号,然后调用函数 convert(n)。4求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一个函数根据求出的最大公约数求最小公倍数。分别用下面的两种方法编程。()不用全局变量,在主函数中输入两个数和输出结果。()用全部变量的方法,数据的传递通过全部变量的方法。程序提示:使用下面函数求最大公因子,其中 v 为最大公因子,若将 v 设为外部变量,则可不使用 return 语句。int hcf(int u,int v)/

7、求最大公因子int t,r;if(vu)t=u;u=v;v=t;while(r=u%v)!=0)/余数 r 不为 0 时继续作辗转相除法u=v;v=r;return(v);5写一个函数,输入一个十六进制数,输出相应的十进制数。程序提示:输入时将十六进制数作为一个字符串输入,然后将其每一个字符转换成十进制数并累加,转换方法如下:if(si0&si=a&si=A&si#includep_f.hvoid main()float f,f2,f3;PR(Input three floating numbers f,f2,f3:n);scanf(Fs,&f1);scanf(Fs,&f2);scanf(Fs

8、,&f3);PR(NL);PR(Output one floating number each line:n);PR(F,f1);PR(F,f2);PR(F,f3);PR(NL);PR(Output two number each line:n);PR(F2,f , f2);PR(NL);PR(Output three number each line:n);PR(F3,f , f2,f3);实验九指针一、实验目的1通过实验进一步掌握指针的概念,会定义和使用指针变量。2能正确使用数组的指针和指向数组的指针变量。3能正确使用字符串的指针和指向字符串的指针变量。4能正确使用指向函数的指针变量。5了

9、解指向指针的指针的概念及其使用方法。二、实验内容以下程序要求使用指针处理。1 输入三个整数,按由小到大的顺序输出。运行无错后改为:输入三个字符串,按由小到大的顺序输出。程序提示:先排序,排序时交换两个数使用以下函数:void swap(int *pint *p2)int p;p=*p1;*p1=*p2;*p2=p;调用格式为:swap(&a,&b)可实现 a 与 b 的交换字符串的交换使用以下函数:void swap(char *p,char *p2)char p80;strcpy(p,p1);strcpy(p,p2);strcpy(p2,p);main 函数结构如下:int n,n2,n3,

10、*p,*p2,*p3;void swap(int *p,int *p2);输入三个数或三个字符串p,p2,p3 分别指向这三个数if(n1n2) swap(p,p2);if(n1n3) swap(p,p3);if(n2n3) swap(p2,p3);输出这三个数2将一个的矩阵转置,用一函数实现。在一主函数中用 scanf 函数输入以下矩阵元素:将数组名作为函数参数,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出转置后的矩阵。程序提示:使用下面函数实现矩阵转置void move(int *p)int i,j,t;for(i=0;i调用格式为 sin(x),cos(x),exp(x)

11、 程序提示:求积分函数如下:float integral(float (*p)(float),float a,float b,int n)int i;float x,h,s;h=(b-a)/n;x=a;s=0;for(i=0;i*(p+j)temp=*(p+i);*(p+i)=*(p+j); *(p+j)=temp;main 函数如下:void main()void sort(int *p,int n);int i,n,data10,*p,*pstr10;printf(Input n:);scanf(%d,&n);for(i=0;in;z=z;z=z|(valuen);return(z);un

12、signed getbits2(unsigned value,int n)unsigned z;z=(1n)&(valuen);return z;main 函数内容如下:int a,n,m;unsigned getbits1(unsigned value,int n);unsigned getbits2(unsigned value,int n);a=0;if(a5)!=a)printf(nlogical move!n);m=0;elseprintf(n arithmetic move!n);m=1;printf(Input an octal number:);scanf(%o,&a);pri

13、ntf(nHow many digit move owards the right:);scanf(%d,&n);if(m=0)printf(nArithmetic right move,result:%on,getbits1(a,n);elseprintf(Logical right move,result:%o,getbits2(a,n);2编写一个函数 getbits,从一个位的单元中取出某几位(即这几位保留原值,其余位为) ,函数调用形式为:getbits(value,nn2)value 为该位数的值,n1 为欲取出的起始位,n2 为欲取出的结束位。要求用八进制数输出这几位。注意,应先

14、将这几位右移到最右端,然后用八进制形式输出。程序提示:unsigned getbits(unsigned value,int nint n2)unsigned z;z=0;z=(zn1)&(z(16-n2);return z;3设计一个函数,使给出一个函数的原码,输出该数的补码。程序提示:unsigned getbits(unsigned value)unsigned int z;z=value&0100000;if(z=0100000)z=value+1;elsez=value;return z;实验十二文件一、实验目的1掌握文件、缓冲文件系统、文件指针的概念。2学会使用文件的打开、关闭、读

15、、写等文件操作函数。3学会用缓冲文件系统对文件进行简单的操作。二、实验内容1建立一个程序,用于产生 200 组算式,每组算式包括一个两位数的加法、减法(要求被减数要大于减数) 、乘法和两位数除以一位数的除法算式,每一组为一行,将所有的算式保存到文本文件 d:a.txt 中 程序提示:#include#includevoid main()FILE *fp;int i,a,b,t;fp=fopen(d:a.txt,w);for(i=1;i=200;i+)a=rand()%100;b=rand()%100;if(b2) b=b+2;fprintf(fp,t%2d+%2d= ,a,b);a=rand()%100;b=rand()%100;if(ab) t=a;a=b;b=t; fprintf(fp,t%2d-%2d= ,a,b);a=rand()%100;b=rand()%100;fprintf(fp,t%2d%2d= ,a,b);a=rand()%100;b=rand()%10;i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号