中国科学技术大学C语言上机操作

更新时间:2023-10-13 12:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上机操作11 实验目的: 1. 函数与递归 2. 程序设计实例 3. 程序调试

实验操作 1. 若an?编制程序求a5,a10,a20,a50,a100,该数列是否存在极2?2?2?...共n项2,

限,若存在请求出并进行验证。(提示:定义函数double a(int n))

2. fun(int x){

if(x/2>0) fun(x/2-2); printf(\main(){

fun(20); printf(\

运行结果是 。 A)20 8 2 -1 B)2 8 20

C)8 D)-1 2 8 20

3. #include

#include

double mysqrt(double a,double x0){ double x1,y;

x1=0.5*(x0+a/x0);

if(fabs(x1-x0)>0.00001) y=mysqrt(a,x1); else y=x1; return y;} int main(){ double x;

printf(\ scanf(\

printf(\

上述程序是应用递归算法求某数a的平方根,请填空。求平方根的迭代公式如下:

1ax1?(x0?)

2x04. (简易计算器)假定它从键盘上读入如下形式的输入行:

128+365 254+1438

程序每读入一个形式正确的行之后就计算并输出结果,直到用户要求结束。

#include #include

using namespace std; int main(){ int left,right;

printf(\

printf(\ while(scanf(\

if(getchar()!='+'||scanf(\

printf(\ while(getchar()!='\\n') /*丢掉本行剩余字符*/ ; }

printf(\ }

system(“pause”);

}

进一步思考:如何实现其他计算功能?

注:本章中的输入命令采用EOF文件结束标志方法暂时实现不了,要等到学完文件操作后才有可能使用到。

5. 程序调试:编程包括编制代码和调试程序两部分,其中调试占用2/3时间强,可见其重

要性,对于初学者而言,要做到如下几点可以最大程度减少程序出错的可能性: a) 如果看不到程序里面的错误,请先将程序的格式整理好。

b) 注意不同数据类型混合计算可能出现的意外结果,并避免除零现象 c) 如果不知道循环在干什么,何不在循环体中加上循环内容的输出呢。

上机操作12 实验目的: 4. 数据类型

5. 随机数函数应用 6. 函数形参和实参 7. 函数原型和声明 8. 常量定义

实验操作

6. 下列哪条在书写数65上不是合法的方式?

?A? 0b1000001 0101 0x41 7. 假设程序包含下列声明:

char c='\\1'; short int s=2; int i=-3; long int m=5; float f=6.5;

double d=7.5;

请给出下列每个表达式的值和类型。 a) c*i d) s+m

b) f/c e) d/s

c) f-d f) (int)f

8. 请定义函数判断一个点与坐标原点的距离是否小于1,是否在单位圆内。借助这一函数

写一个通过随机模拟(Monte Carlo)方法计算圆周率值的程序:每次计算机生成两个0到1之间的实数(利用标准库的随机数生成函数产生这种实数),看这两个值形成的点是否在单位圆内。生成一系列随机点,统计位于单位圆内的点数与总点数,看它们之比的4倍是否趋向圆周率值。请生成100,200,…,1000,10000个数据点做试验。

#include #include

int incircle(double x,double y){ return x*x+y*y<=1.0?1:0; } //判断点(x,y)是否在单位圆内 int main(){ }

(注:该法原理来自一正方形中点落在其最大内切圆内的概率是圆和正方形的面积之比,为什么?) int i,n,m=0; //m代表落在单位圆内的点数,初始值为0;n代表模拟的次数 double x,y;

printf(\); scanf(\,&n);

srand(99); //初始化种子,这里设定为99,可以自行调整 for(i=1;i<=n;i++){ }

printf(\,4.0*m/n,n);

x=rand()/32767.0; y=rand()/32767.0; m+=incircle(x,y);

9. 假设函数f有下列定义:int f(int a, int b){……},那么下列哪条语句是合法的?(假设i

的类型为int而x的类型为float。) a) i=f(83,12); b) x=f(83,12); c) i=f(3.15,9.28); d) x=f(3.15,9.28); e) f(83,12);

10. 对于返回为空且有一个float型形式参数的函数,下列哪个函数原型是有效的?

a) void f(float x); b) void f(float); c) void f(x); d) f(float x);

11. 下列计算三角形面积的函数有两处错误,找出这些错误,并且说明修改它们的方法。(提

示:公式没有错误)

float triangle_area(float base,height) float product;{

product=base*height;

return(product/2); }

12. 下列程序的输出结果是什么? #include

void swap(int a,int b); int main(){ }

void swap(int a,int b){ //a,b为形参

int temp; temp=a; a=b;

int x=1,y=2;

swap(x,y); //x,y为实参,调用时实参单项传值给形参进行计算,但形参值无法返回给对应实参 printf(\,x,y); //注意理解这一输出结果 return 0;

b=temp;}

13. 以下合法的字符型变量是 (2007.4)

A)?\\x13? B) ?\\081? C)?65? D) “\\n” 14. 有以下程序

void fun2(char a,char b){printf(\,a,b);} char a='A',b='B'; void fun1(){a='C',b='D';} main(){ fun1();

printf(\,a,b); fun2('E','F');}

程序运行结果是 (2006.9) A) C D E F B) A B E F C) A B C D D) C D A B 15. 设函数fun的定义形式为

void fun(char ch, float x){ }

则下列对函数fun调用语句中,正确的是 (2005.9) A) fun(“abc”,3.0) B)t=fun(?D?,16.5) C)fun(?65?,2.8) D) fun(32,32)

16. 若程序中定义了以下函数

double myadd(double a, double b) {return (a+b);}

并将其放在调用语句之后,则在调用之前应该对函数进行声明,以下选项中错误的说明是 (2004.4)

A) double myadd(double a, b); B) double myadd(double, double); C) double myadd(double b, double a); D) double myadd(double x, double y);

17. 总结第四章作业参考答案

18. 弦线法求方程的根(教材P157-159)

本文来源:https://www.bwwdw.com/article/r24f.html

Top