1、 printf(please input:); scanf(%d,&n); while(n=2) for(i=2;i=n;i+) if(n%i=0) printf(%dt,i); n=n/i; break; (2) 试编写求n!的函数,并求n=7的结果。 int i,j,n,s;please input n: s=1; for(i=2; s=s*i;,s); 具体要求如下:(1) 编写程序通过调试获得正确结果;(2) 分析函数的声明、定义和使用方法;(3) 分别分析函数调用时的参数传值调用方法。2.有关变量的属性实验(静态、动态、全局、局部等方面)。(1) 仔细分析以下程序的执行结果,然后上机
2、运行如下程序段,并对各个变量的属性及其使用结果进行比较分析: /*(a)*/ int x=1; /*(b)*/ void prt(void); int x=3; prt(); printf(The second x id %dn,x); /*(c)*/The first x is %dnvoid prt(void) /*(d)*/ int x=5;The third x is %dn/*(e)*/(2) 仔细分析下列程序,是否有错误之处?然后分析其执行结果,上机验证并对各个变量的存储属性及其结果进行比较分析:#define LOW 11#define HIGH 23#define CHANGE
3、 12int i=LOW; int workover(int i); int reset(int i); int i=HIGH; reset(i=i/2.5);i=%dn reset(i=i/3); reset(i/2); workover(i);workover(int i) i=(i%i+)*(i*i)/(2*i)+4; return(i);reset(int i) i=i=CHANGE?LOW:HIGH;(3) 以下程序希望打印5行*,能否做到?为什么? void prt(); int i; for(i=0;5;void prt() int j; for(j=0;jj+)%c,*n(4)
4、 分析、编辑并执行以下程序,如果有错,请指出其错误原因,同时需要指出各个变量的存储属性。/*file1.c*/int last(void);int new(int);int reset(void);int i;main(void) int i,j; i=reset(); for(j=1;=3;i=%dt,j=%dn,i,j);next(i)=%dt,next(i);last(i)=%dn,last();new(i+j)=%dn,new(i+j);int next(void) return(i+);/*file2.c*/static int i=10;last(void) return(i=i-
5、1);new(int i) static int j=-5; return(i=j+=+i);/*file3.c*/reset()3.预编译命令实验。(1) 一般宏替换实验(教材例4.20和4.23);int s(int n); int i=1; while(i=5)%dn,s(i+);int s(int n) return(n*n);(2) 带参数的宏替换(教材例4.25和习题4.15);#define PI 3.1415926#define R 2.0#define AREA PI*R*RThe area is:%fn,AREA);(3) 文件包含(#include 和#include )
6、。#define S(n) (n)*(n),S(i+);三、实验准备(1) 编写所选实验题目的程序代码和流程图;(2) 检查源程序并给出其可能的运行结果说明。4、实验步骤(1) 上机验证所选题目,并做相应测试和分析;(2) 进行实验分析;(3) 总结基于函数、宏等技术的模块化程序设计和实现方法及其经验;(4) 编写实验报告。5、实验结果有错误,自定义函数后面不用加; HIGH后面应该加上自增符号.不能,因为i是一个全局变量,当函数调用i后,i执行自定义函数后就直接变成了5,故只能打印一行.定义i时,i前面不加exter,自定义函数中的fast改为last,自定义函数中的rturn(i-=1_)改为return(i=i-1).
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1