电子科大高级语言程序设计实验报告四.docx

上传人:b****5 文档编号:12178463 上传时间:2023-04-17 格式:DOCX 页数:16 大小:18.28KB
下载 相关 举报
电子科大高级语言程序设计实验报告四.docx_第1页
第1页 / 共16页
电子科大高级语言程序设计实验报告四.docx_第2页
第2页 / 共16页
电子科大高级语言程序设计实验报告四.docx_第3页
第3页 / 共16页
电子科大高级语言程序设计实验报告四.docx_第4页
第4页 / 共16页
电子科大高级语言程序设计实验报告四.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

电子科大高级语言程序设计实验报告四.docx

《电子科大高级语言程序设计实验报告四.docx》由会员分享,可在线阅读,更多相关《电子科大高级语言程序设计实验报告四.docx(16页珍藏版)》请在冰豆网上搜索。

电子科大高级语言程序设计实验报告四.docx

电子科大高级语言程序设计实验报告四

电子科技大学通信与信息工程学院

 

实验报告

 

(实验)课程名称高级语言程序设计

 

电子科技大学教务处制表

 

电子科技大学

实验报告

学生姓名:

学号:

指导教师:

实验地点:

科AXXX实验时间:

一、实验室名称:

校公共机房

二、实验项目名称:

C语言程序设计

三、实验学时:

4学时

四、实验原理:

使用VC2010或TC开发环境,在微型计算机上对程序进行编辑、编译、连接与运行。

通过上机练习掌握C程序的设计思路、实现方法和程序调试过程。

五、实验目的:

(指针和函数部分)

1.熟练掌握指针的概念和基本试用方法。

2.掌握指针编程以及指针和数组;

3.掌握结构体的编程方法;

4.掌握函数的定义、函数原型和调用、函数参数传递以及返回值的使用

5.理解模块化编程的基本方法和一般技巧

6.掌握基于函数的程序设计技术利用函数实现简单的功能模块。

六、实验方法与手段:

编程实现实验指定内容,调试运行程序并完成报告。

七、实验内容:

(指针部分)

1.编写程序对课后习题5.6进行实现。

2.编写程序使用指针编写程序,输入N个整数,求N个整数中最大最小值以及其在N个整数中的位置。

3.编写程序输入一个字符串S1,将S1中所有字符拷贝到字符串S2中,要求每2个字符后面增加一个“*”。

如S1:

“ABCDE”,则S2:

“AB*CD*E”。

(函数部分)

4.编写程序对课后习题6.1进行实现。

5.编写程序对课后习题6.4进行实现注:

main函数循环调用find函数,根据返回值求出所有符合条件的数以及总个数,并输出。

6.编写函数,实现如下功能:

根据给定的字符串,如:

“a123x456178?

23304tbc789”,将其中的连续数字作为一个整数拷贝到一个数组中去,并统计该字符串共有多少个整数。

函数原型:

voidfunc(char*str,int*p,int*num);其中str是需要处理的字符串,p指向数组用于保存数据,num指向保存整数个数的整数。

七、实验器材(设备、元器件):

硬件要求:

普通pc机。

软件要求:

Windows7/XP/2003等。

八、实验步骤、实验编程与运行结果:

1.编写的程序

(程序名称)ex4_1

#include

#include

voidmain()

{

inti,j,

k,

count=0;

charstring1[20],

string2[20];

char*p1,*p2;

printf("请输入一个源字符串\n");

gets(string1);

printf("请输入你要查找的字符\n");

gets(string2);

p1=string1;

p2=string2;

for(i=0;i<(strlen(string1));i++)

{

k=0;//k初始化为0

if(p1[i]==p2[0]&&p1[i]!

='\0')//如果p1数组中有和p2数组中第一个字符相同的字符,且不为'\0'

{

for(j=1;j<(strlen(string2));j++)

{//判断后续字符是否相等,若不相等,k置为一

if(p1[i+j]!

=p2[j])

{//在判断过程中若有字符不等,k置为一

k=1;

}

}

if(k==0)//判断结束后若k=0,输出查找字符所在起始位

{

count++;

printf("第%d个字符所在位置为:

%d\n",count,i);

}

}

}

if(count==0)

{

printf("NO\n");

}

getchar();

}

典型测试数据(输入):

请输入一个源字符串

asdhhfajl

请输入你要查找的字符

aj

应输出(上机前自己分析的结果):

请输入一个源字符串

asdhhfajl

请输入你要查找的字符

aj

NO

实际运行结果:

请输入一个源字符串

asdhhfajl

请输入你要查找的字符

aj

NO

2.编写的程序

(程序名称)ex4_2

#include

#include

voidmain()

{

inti;//循环变量

intn;

intmax,min;

int*p;

intposition1=0,

position2=0;

printf("请输入一个数以开辟适当大小的内存空间\n");

scanf_s("%d",&n);

p=(int*)calloc(n,sizeof(int));

printf("请输入一组整数\n");

for(i=0;i

{

scanf("%d",p+i);

}

max=min=*p;

for(i=1;i

{

if(max<(*(p+i)))

{

max=p[i];

position1=i;

}

if(min>p[i])

{

min=p[i];

position2=i;

}

}

printf("最大值为%d\t,位置在%d\n",max,position1);

printf("最小值为%d\t,位置在%d\n",min,position2);

getchar();

getchar();

}

典型测试数据(输入):

请输入一个数以开辟适当大小的内存空间

6

请输入一组整数

213454445323243

应输出(上机前自己分析的结果):

请输入一个数以开辟适当大小的内存空间

6

请输入一组整数

213454445323243

最大值为4532,位置在3

最小值为3,位置在5

实际运行结果:

请输入一个数以开辟适当大小的内存空间

6

请输入一组整数

213454445323243

最大值为4532,位置在3

最小值为3,位置在5编写的程序

(程序名称)ex4_3

#include

voidmain()

{

inti;

intn;

intcount=0;

charline1[40],

line2[40];

char*p;

gets(line1);

 

p=line1;

for(i=0;line1[i-count]!

='\0';i++)

{

if((i+1)%3!

=0)

{

line2[i]=p[i-count];

}

else

{

line2[i]='*';

count++;

}

}

line2[i]='\0';

puts(line2);

while

(1);

}

典型测试数据(输入):

adsaaggga

应输出(上机前自己分析的结果):

adsaaggga

ad*sa*ag*gg*a

实际运行结果:

adsaaggga

ad*sa*ag*gg*a

编写的程序

(程序名称)ex4_4

#include

/*5*3矩阵的转置*/

voidmain()

{

voidtran(intarray[5][3]);

intarray0[5][3]={0};

inti,j;

for(i=0;i<5;i++)

for(j=0;j<3;j++)

{

scanf("%d",&array0[i][j]);

}

tran(array0);

}

voidtran(intarray[5][3])

{

intarray1[5][5]={0};

inttemp;

inti,j;

for(i=0;i<5;i++)

for(j=0;j<3;j++)

{

array1[i][j]=array[i][j];//将array数组中的数据拷到array1中前三列

}

for(i=0;i<5;i++)

for(j=i;j<5;j++)

{

if(i!

=j)

{

temp=array1[i][j];

array1[i][j]=array1[j][i];//进行行列转置

array1[j][i]=temp;

}

}

for(i=0;i<3;i++)

for(j=0;j<5;j++)

{

printf("%d\t",array1[i][j]);

if(j==4)

printf("\n");

}

getchar();

getchar();

 

}典型测试数据(输入):

123456789101112131415

应输出(上机前自己分析的结果):

1471013

2581114

3691215

上机时遇到的问题:

①进行两次行列交换导致数据未转置解决办法:

J赋初值I

②实参错选array0[5][3]解决办法:

将array0的首地址传给形参

实际运行结果:

1471013

2581114

3691215

编写的程序

(程序名称)ex4_5

/*找水仙花数*/

#include

#include

voidmain()

{

voidfind(intn);

inti;

for(i=100;i<1000;i++)

{//循环输入所有三位数

find(i);

}

while

(1);

}

voidfind(intn)

{

doubleunit,

decade,

hundred;

inta,b,c;

staticintcount=0;

hundred=int(n/100);

decade=int((n-hundred*100)/10);

unit=n-hundred*100-decade*10;

a=int(pow(hundred,3));

b=int(pow(decade,3));//计算个位,十位,百位的立方

c=int(pow(unit,3));

if(n==a+b+c)

{

printf("%d是水仙花数\n",n);

}

}典型测试数据(输入):

应输出(上机前自己分析的结果):

153是水仙花数

370是水仙花数

371是水仙花数

407是水仙花数

上机时遇到的问题:

①调用Pow函数数据类型设为int型出错解决办法:

改为double型

②计算个十百出错解决办法:

换用其它方法

实际运行结果:

153是水仙花数

370是水仙花数

371是水仙花数

407是水仙花数

3.编写的程序

(程序名称)ex4_6

#include

#include

voidmain()

{

voidfunc(char*str,int*p,int*num);

charstr[20]={'\0'};//定义一个字符数组用于储存数据并初始化

intINT[20]={0};//定义一个整型数组用于储存处理后得到的整数

intnum=0;//指向整数个数计数

printf("请输入字符串\n");

gets(str);

 

func(str,INT,&num);

while

(1);

}

voidfunc(char*str,int*p,int*num)

{

inti;//循环变量

inta[20]={0};//辅助数组

intj=0,

m=0,

b=0,

count=0,

flag=0;

for(i=0;*(str+i)!

='\0';i++)

{

if(*(str+i)>='0'&&*(str+i)<='9')//若数据为1~9

{

a[j++]=str[i]-'0';

flag=1;

if(*(str+i+1)=='\0')//若字符以数字结尾

{

for(m=0;m

{

b=b*10+a[m];

}

printf("%d",b);

count++;

}

}

elseif(flag==1)//若非数字字符前为数字表示一串数字已经结束

{

for(m=0;m

{

b=b*10+a[m];

}

flag=0;

*(p+count)=b;

count++;

j=0;//j重置为0

printf("%d\t",b);

b=0;//b重置为0

}

}

num=&count;

printf("\n");

printf("整数个数为:

%d",*num);

}

典型测试数据(输入):

21jkfd34334hj34

应输出(上机前自己分析的结果):

请输入字符串

21jkfd34334hj34

213433434

整数个数为:

3

上机时遇到的问题:

①判断语句错写成赋值语句解决办法:

修改

②b忘记初始化导致数据一直连续运算解决办法:

每次b初始化为0

实际运行结果:

请输入字符串

21jkfd34334hj34

213433434

整数个数为:

3

九、实验结论:

 

10、总结及心得体会:

 

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

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

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1