第一范文网 - 专业文章范例文档资料分享平台

2010C语言实验报告书[da][1]

来源:用户分享 时间:2025/5/30 14:03:32 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

《C及C++程序设计》实验报告

2. 改错题

[题目] 以下程序中函数encode完成一个字符串的加密功能,将s1字符串中的字符经过变换后保存到s2指向的字符数组中。二维数组cs保存了一个明码密码对照表,第一行是明码字符,第二行是对应的密码字符。加密方法:从s1字符串中每取一个字符,均在cs表第一行中查找有无该明码字符,若找到则将对应的密码字符放入s2中,否则将s1中原来的字符放入s2中。 #include

char cs[2][10]={\void encode(char *s1,char *s2) { int n,i,j;

for(n=0;s1[n]!='\\0';n++)

{ for(i=0;i<10 && s1[n]!=cs[0][i]; i++ ); if(i<10) s2[n]=s1[n] ; /* i>=10 */ else s2[n]=cs[1][i]; }

s2[n]='\\0'; }

main()

{ char ts[80]=\ encode(ts,td); puts(td); }

3. 程序设计题

(1)[题目] 用牛顿迭代法求方程3x3-3x2+x-1=0在x0=2附近的实根。要求: ① 用函数float newtoon(float x)求方程在x附近的根;

② 用函数float F(float x)求x处的函数值,用函数float F1(float x)求f(x)在x处的导数; ③ 在主函数中输入x0,并输出结果。 [算法提示]

牛顿迭代法又被称3x3-3x2+x-1,若要求方时x的值。我们需要知附近求实根。在曲线上切线,切线的斜率为的交点为x,切线的斜

f(x0)x0?xf(x0) 为切线法。设f(x)= 程的根,即求f(x)=0道x0的值,表示在x0f(x0)点处作该点的f?(x0);切线与x轴率又为

f(x0)x0?xx x0 ,所以

f'(x0)?,可得交点x的值为x0?f(x0)f'(x0)。如果|x-x0|>1e-5,则把x当作新的

x0,重复上述过程,直到|x-x0|<=1e-5为止。

23

《C及C++程序设计》实验报告

[源程序] float F(float x)

{

return x*(3*x*(x-1)+1)-1; }

float F1(float x) {

return __9*x*x-6*x+1________________; }

float newtoon(float x) {

float f,f1,x0;

do { _xo=x_____________; f=F(x0); f1=F1(x0);

x=___x0-f/f1___________;

}while(___fabs(x-x0)>=1e-5____________); return x; } main() { float x0;

scanf(“%f”,&x0);

printf(“The result =%.2f\\n”,____newtoon(x0)_____________); }

[运行结果]

(2)[题目] 两个等长的二进制数之间的海明距离是指对应位数字不同的位数。如100101和001110之间的海明距离为4。设计算机系统使用16个二进制位表示一个十进制整数,试按下列要求编写程序:

① 编写函数void DecToBin(char str[], int n),其功能是将非负整数n转换成16位二进制数字字符串,按由低位向高位存入数组str中;

② 编写函数int Hymin(char *x , char *y),其功能是统计x、y指向的两个16位二进制数字字符串对应位数字不同的位数,并返回统计结果; ③ 在主函数中输入两个十进制正整数39和15,分别调用函数DecToBin将它们转换为二

24

《C及C++程序设计》实验报告

进制数字字符串,再调用函数Hymin计算它们之间的海明距离。将这两个十进制数转换后的二进制字符串及其海明距离输出。 请验证结果是否为:distance of 39 and 15 = 2 [源程序]

void DecToBin(char str[] , int n) {int i=0,j; while(n!=0)

{ str[i++]=___n%2+?0?________; n=___n/2____; }

for(j=i ; j<16 ; j++) str[j]=?0?; }

int Hymin(char *x , char *y)

{int count=0, i ; for(i=0; i<16 ; i++)

if(__x[i]!=y[i] (或 *x++!=*y++_)_________) count++; return count; } main()

{ int m,n,t;

char a[17],b[17];

scanf(“%d%d”,&m,&n);

__DecToBin( a, m)_____________; ___ DecToBin( b, n)____________;

printf(“distance of %d and %d = %d\\n”,m,n,___Hymin(a,b)________); }

[测试数据及结果]

四、实验总结

25

《C及C++程序设计》实验报告

实验名称: 链 表 实验时间: 年 月 日 第 周 星期

实验属性:验证性

一、 实验目的

1. 掌握结构体的基本概念及应用; 2. 了解动态存储分配的基本概念; 3. 进一步掌握C语言中指针的运用;

4. 掌握链表的建立、插入、删除、归并等基本操作。

二、 实验预备工作

1. 复习结构体的基本概念;

2. 复习指向结构体数组的指针的应用。

三、 实验内容

1.填空题

(1)有如下说明:

struct link { int data; struct link *next;}*p; 设p已申请到一个结点空间,要求将p串接到头结点head上,写出建立如图所示的存储结构和赋值所需的语句。

20 NULL head data next

head = _____p_________;

____p->data___________ = 20; ____p->next___________ = NULL;

(2) 下列程序的运行结果是_____51,60,21________________

struct stu { int x;int *y; } *p;

int dt[4]={10,20,30,40};

sturct stu a[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; main() { p=a;

printf(\ printf(\ printf(\ } 2.改错题

[题目] 下列程序用来建立一个带头结点的单向链表,新产生的结点总插在链首。程

26

搜索更多关于: 2010C语言实验报告书[da][1] 的文档
2010C语言实验报告书[da][1].doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c24hfk7ranv9vfqx3dfpa_7.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top