C语言实验报告书da1.docx

上传人:b****5 文档编号:29371285 上传时间:2023-07-22 格式:DOCX 页数:35 大小:44.59KB
下载 相关 举报
C语言实验报告书da1.docx_第1页
第1页 / 共35页
C语言实验报告书da1.docx_第2页
第2页 / 共35页
C语言实验报告书da1.docx_第3页
第3页 / 共35页
C语言实验报告书da1.docx_第4页
第4页 / 共35页
C语言实验报告书da1.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C语言实验报告书da1.docx

《C语言实验报告书da1.docx》由会员分享,可在线阅读,更多相关《C语言实验报告书da1.docx(35页珍藏版)》请在冰豆网上搜索。

C语言实验报告书da1.docx

C语言实验报告书da1

 

《C及C++语言程序设计》

实验报告书

 

姓名______________________

班级______________________

学号______________________

实验时间_________学年第___学期

 

扬州大学计算机中心

 

实验一程序的建立、调试执行的方法与步骤…………………………………1

实验二程序控制…………………………………………………………………5

实验三函数的定义、调用和声明………………………………………………9

实验四数组及其应用……………………………………………………………13

实验五字符串处理………………………………………………………………17

实验六函数的应用………………………………………………………………21

实验七链表………………………………………………………………………25

实验八算法设计与简单分析……………………………………………………27

 

实验名称:

程序的建立、调试执行的方法与步骤

实验时间:

年月日第周星期

实验属性:

实践性

一、实验目的

1.理解典型的C程序开发环境的要素;

2.学会使用WIN-TC集成环境编辑、编译、连接和运行C语言的源程序;

3.掌握程序编辑的基本方法,了解编译、连接的原理以及运行程序的方法;

4.通过运行简单的C程序,初步了解C程序的特点;

5.学习使用scanf和printf这两个常用的I/O函数。

二、实验预备工作

1.复习第1章程序设计基础和第2章C语言入门,掌握C语言源程序的基本构成;

2.了解C语言程序的编辑、编译、运行过程;

3.预习第11章C语言上机引导,了解Win-TC集成开发环境的组成。

三、实验内容

1.填空题

(1)

(1)下列程序运行的结果为_________0_______________。

#include

main()

{inta=9;

floatx=6.3,y=3.5;

printf(“%d\n”,a%5*(int)(x+y)%7/4);

getch();

}

(2)以下是一个完整的C程序,其功能为求a、b的和____。

#include

voidmain()

{inta,b,c;

printf(“enterfirstinteger:

”);

scanf(“%d”,&a);

printf(“entersecondinteger:

”);

scanf(“%d”,&b);

c=a+b;

printf(“\na+b=%d\n”,c);

}

2.改错题

(1)[题目]下列程序将助你熟悉由编译器产生的错误信息。

请尝试改正其中的错误,直到程序经编译后没有错误信息,最后得到正确的输出结果:

Someoutput:

1,2,3

[程序]

#include

voidmain()

{

inta=1;b=1,c=1,

prinf(“Someoutput:

%d,%d,%d\n”a,b,c)

修改后的源程序为:

#iinclude

voidmain()

{inta=1,b=2,c=3;

printf(“Someoutput:

%d,%d,%d\n”,a,b,c);

}

(2)[题目]下列程序将助你熟悉由编译器产生的错误信息。

请尝试改正其中的错误。

[程序]

#include

voidmain()

{

integerI;

longj;

prinf(“Enteraninteger:

);

scanf(“%d”,&i);

j=I*I;

printf(“I=%dj=%d\n,j);

}

修改后的源程序为:

voidmain()

{

inti;

longj;

prinf(“Enteraninteger:

);

scanf(“%d”,&i);

j=i*i;

printf(“i=%dj=%d\n”,i,j);

}

3.通过调试程序回答问题

(1)[题目]用一个main函数实现:

从键盘上输入三个正整数,求最大值。

请完善程序。

[源程序清单]

main()

{

inta,b,c,d,max;

printf(“Enterthreeintegers:

”);

___scanf__________(“%d%d%d”,&a,&b,&c);

if(a>b)max=_____a__________;

elsemax=______b_________;

if(___c>max____________)max=c;

_____printf__________(“maxofthethreenumbersis%d”,max);

}

[测试数据及结果]

(2)[题目]编写main函数,其功能是实现从键盘上输入两个变量a、b,交换它们的值并输出。

[源程序清单]

main()

{inta,b,c;

scanf(“%d%d”,&a,&b);

c=a;a=b;b=c;

printf(“a=%d\tb=%d\n”,a,b);

}

 

[测试数据及结果]

(3)[题目]编写一个main函数实现:

输入变量a、b的值,并将b的值加入到a中,输出a

[源程序清单]

main()

{inta,b;

scanf(“%d%d”,&a,&b);

a+=b;

printf(“a=%d\n”,a);

}

[测试数据及结果]

四、实验总结

实验名称:

程序控制

实验时间:

年月日第周星期

实验属性:

实践性

一、实验目的

1.掌握顺序结构、分支结构和循环结构的编程方法;

2.进一步学会正确使用逻辑运算符和逻辑表达式;

3.掌握break语句和continue语句的功能及应用;

4.熟练掌握级数的近似计算、阶乘的计算、素数的判断;

5.熟练掌握利用枚举法来找出符合条件的数或验证定理与猜想;

6.熟练掌握二重循环的应用。

二、实验预备工作

1.复习if语句、switch语句的用法;

2.复习for语句、while语句、do-while语句的用法;

3.复习break语句和continue语句的功能。

三、实验内容

1、填空题

2、

(1)下列程序的功能是___判断x是否为素数,是就输出TRUE,否则输出FALSE___。

#include

main()

{intx,k,i;

scanf(“%d”,&x);

for(i=2;i<=(k=sqrt(x));i++)

if(x%i==0)break;

if(i>k)printf(“TRUE”);

elseprintf(“FALSE”);

}

3、

(2)下列程序的运行结果是________a=2,b=1____________________。

#include

main()

{

intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;

}

case2:

a++,b++;break;

}

printf(“a=%d,b=%d\n”,a,b);

}

(3)下面程序的功能是计算100到1000之间有多少个数其各位数字之和是5。

main()

{inti,s,k,count=0;

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

{

s=0;k=i;

while(k)

{

s=s+k%10;

k=___k/10________;}

if(s!

=5)__continue_________;

count++;

}

printf(“%d\n”,count);

}

4、改错题

[题目]求满足下列条件的三位数n,它除以11(整数相除)所得到的商等于n的各位数字的平方和,且其中至少有二位数字相同的数。

如:

131,它除以11的商为11,各位数字的平方和为11,又如550,也是满足条件的三位数。

[含有错误的源程序]

main()

{intn,a,b,c;

for(n=1;n<1000;n++)/*for(n=100;n<1000;n++)*/

{a=n/100;

b=n/10%10;

c=n/10;/*c=n%10;*/

if(n/11=a*a+b*b+c*c||(a==b+a==c+b==c)>=2)/*if(n/11==a*a+b*b+c*c&&(a==b)+(a==c)+(b==c)>=1)*/

printf(“%5d”,n);

}

}

3、程序设计题

(1)[题目]请编程序:

根据以下函数关系,对输入的每个x值,计算出相应的y值。

x

y

x<0

0

0

x

10

10

20

-0.5x+20

[源程序清单]

[运行结果]

(2)[题目]编程题:

求π的近似值:

要求:

先求出前2n项的π值,再求出2n+2项的π值,直至二者之差小于10-5为止。

[源程序清单]

[运行结果]

(3)[题目]编程计算1!

+2!

+3!

+…+n!

的前10项之和。

[源程序清单]

main()

{intn,i;

longs=0,t=1;

printf(“inputn=”);

scanf(“%d”,&n);

for(i=1;i<=n;i++)

{t*=i;

s+=t;

}

printf(“sum=%ld\n”,s);

}

[运行结果]

(4)编程求出两个整数a和b的最小公倍数。

[程序清单]

[运行结果]

四、实验总结

实验名称:

函数的定义、调用和声明

实验时间:

年月日第周星期

实验属性:

实践性

一、实验目的

1.掌握函数的一般调用和递归调用;

2.掌握函数调用时虚实参数结合的方式;

3.掌握变量的作用域与存储类别的基本概念。

二、实验预备工作

1.复习函数定义的一般形式、函数调用的一般形式;

2.复习函数实际参数和形式参数的基本概念及在函数调用时形参与实参的结合方法;

3.复习变量的作用域及存储类别等基本知识。

三、实验内容

1.填空题

(1)下列程序执行时的输出结果是___i=7,j=6,x=7

i=2,j=7,x=5____________。

main()

{

inti=2,x=5,j=7;

fun(j,6);

printf(“i=%d,j=%d,x=%d\n”,i,j,x);

}

fun(inti,intj)

{

intx=7;

printf(“i=%d,j=%d,x=%d\n”,i,j,x);

}

(2)下列程序执行时的输出结果是_____468__________。

main()

{inta=2,i;

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

{printf(“%d”,fun(a));

a++;

}

}

f(inta)

{intb=0;

staticintc=0;

b++,c++;

returna+b+c;

}

(3)下面程序的运行结果是___Theresultis:

365__________。

longfunc(longx)

{

if(x<100)returnx%10;

elsereturnfunc(x/100)*10+x%10;

}

main()

{

printf(“Theresultis:

%ld\n”,func(132645));

}

(4)下面程序的运行结果是_____3600________。

#include

intfun(intk);

intw=3;

main()

{

intw=10;

printf(“%d\n”,fun(5)*w);

}

intfun(intk)

{

if(k==0)returnw;

return(fun(k-1)*k);

}

2.改错题

[题目]以下程序从键盘输入一个较大的整数n(n>=6),然后验证6到n之间的所有偶数都可以分解为两个素数之和。

[程序]

#include"stdio.h"

#include”math.h”

voidmain()

{intk,j,n,limit;

do

{printf("Inputanumber>=6:

");

scanf("%d",&limit);}

while(limit<6);

for(n=6;n<=limit;n+=2)

for(k=3;k<=n/2;k+=2)

if(prime(k))

{j=n-k;

if(prime(j))

{printf("%d=%d+%d\n",n,k,j);

continue;/*break*/

}

}

}

intprime(intm)

{intg,h;h=sqrt(m);

for(g=2;g<=h;g++)

if(m%g==0)return0;

return1;

}

3、程序设计题

(1)[题目]设n0是一个给定的正整数。

对于i=0,1,2,…,定义:

若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。

用这种方法产生的数称为冰雹数(hailstone)。

请编写一个函数voidhailstones(intn),其功能是显示由n产生的序列,并按如下形式输出。

Hailstonesgeneratedby77:

77232116582988

442211341752

26134020105

168421

Numberofhailstonesgenerated:

23

[源程序]

voidhailstones(intn)

{intt=1;

printf("%5d",n);

while(n!

=1)

{t++;

if(n%2)n=3*n+1;

elsen=n/2;

printf("%5d",n);

if(t%6==0)printf("\n");

}

printf("\nNumberofhailstonesgenerated:

%d\n",t);

}

main()

{intn;

printf("hailstonesgeneratedby:

");

scanf("%d",&n);

hailstones(n);

}

 

[测试数据及结果]

四、实验总结

实验名称:

数组及其应用

实验时间:

年月日第周星期

实验属性:

实践性

一、实验目的

1.掌握数组元素的输入和输出的方法;

2.掌握与数组有关的算法(排序、查找、插入、删除等)。

二、实验预备工作

1.复习一维、二维数组的定义及数组元素的引用方法;

2.复习一维、二维数组的输入和输出的方法;

3.理解冒泡排序算法和选择排序算法。

三、实验内容

1.填空题

(1)以下程序在a数组中查找与x值相同的元素的所在位置。

main()

{inta[11],x,i;

printf(“Enter10Integers:

\n”);

for(i=1;i<=10;i++)scanf(“%d”,a+i);

printf(“Enterx:

”);scanf(“%d”,&x);

a[0]=___x_______;i=10;

while(x!

=a[i])____i--_______;

if(__i!

=0(或i>0)_________)printf(“%5d’spositionis%4d\n”,x,i);

elseprintf(“%disnotfound!

\n”,x);

}

(2)以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中。

#include

main()

{inta[10]={1,2,5,8,9,10},an=5;

intb[10]={1,3,4,8,12,18},bn=5;

inti,j,k,c[20],max=9999;

a[an+1]=b[bn+1]=max;

i=j=k=0;

while((a[i]!

=max)||(b[j]!

=max))

if(a[i]

{c[k]=a[i];

k++;

i++

}

else{c[k]=b[j];

k++;

j++

}

for(i=0;i

printf("%4d",c[i]);

printf("\n");

}

2.改错题

(1)[题目]以下程序的功能是从键盘上最多输入10个整数,并检测整数3是否包含在这些数据中,若包含3,则显示出第一个3出现的位置,程序有些错误,试改正之。

main()

{intdata[10];

j=0;/*intj=0*/

while(j<10)

{scanf(“%d”,data[j]);/*scanf(“%d”,&data[j])*/

j++;

}

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

if(data[j]=3)/*data[j]==3*/

{printf(“3isinthepositionof%d\n”,j);

continue;

}

}

(2)[题目]在m行n列的二维数组中找出最大值的元素,然后将该元素所在行与最后一行交换,将该元素所在列与最后一列交换。

请按功能要求改正程序中的错误,并调试程序。

#defineM3

#defineN4

#include“math.h”

main()

{intx,k,j,com,col,t;

inta[M][N]={12,4,56,-34,0,-2,-45,3,9,-7,4,-65};

for(k=0;k

{for(j=0;j

printf("\n");

}

putchar('\n');

x=0;com=0;col=0;/*x=a[0][0]*/

for(k=0;k

for(j=k+1;j

if(x

for(k=0;k

{t=a[k][col];a[k][col]=a[k][N];a[k][N]=t;}/*a[k][col]=a[k][N-1];a[k][N-1]=t;*/

for(k=0;k

{t=a[com][k];a[com][k]=a[M][k];a[M][k]=t;}/*a[com][k]=a[M-1][k];a[M-1][k]=t;*/

for(k=0;k

{for(j=0;j

printf("\n");

}

putchar('\n');

}

3.程序设计题

⑴下面程序是利用插入排序法将n个数从大到小进行排序,插入排序的算法思想如下:

从一个空表开始,将待排序的数一个接一个插入到已排好序的有序表中(空表视为有序),从而得到一个新的、记录数增1的有序表。

例如:

当n=7时,待排序的数及每一趟有序表的变化情况如下:

趟数

有序表

剩余待排序数

初始状态

49 38 65 97 76 13 27

第1趟

49

38 65 97 76 13 27

第2趟

49 38

65 97 76 13 27

第3趟

65 49 38

97 76 13 27

第4趟

97 65 49 38

76 13 27

第5趟

97 76 65 49 38

13 27

第6趟

97 76 65 49 38 13

27

第7趟

97 76 65 49 38 27 13

请完善下列程序并进行调试。

#include<stdio.h>

main()

{inta[10];inti,j,t;

printf(”\nEnter10number:

”);

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

scanf(“%d”,&a[i]);

for(i=1;i<=9;i++)

{t=a[i];

j=i-1;

while((j>=0)&&(t>a[j]))

{a[j+1]=a[j];

j--;

}

a[j+1]=t;

}

printf(“\nthereis10number:

”);

for(i=0;i<=9;i++)printff(“%4d”,a[i]);

(2)[题目]打印以下形式的杨辉三角形。

1

11

121

1331

14641

15101051

[源程序清单]

 

运行结果:

 

四、实验总结

实验名称:

字符串处理

实验时间:

年月日第周星期

实验属性:

实践性

一、实验目的

1.掌握字符串处理函数的模拟;

2.掌握字符串的压缩与还原、查找子串、插入子串等操作。

二、实验预备工作

1.掌握字符串的初始化方法及字符串的结束标记;

2.复习字符串的输入输出方法;

3.复习字符串处理函数,掌握其功能及使用方法。

三、实验内容

1.填空题

(1)下面程序是模拟字符串复制函数,将字符串b复制到字符串a。

#include

#include

main()

{inti;

chara[20],b[10];

gets(b);i=0

while(____a[i]=b[j](或(a[i]=b[j])!

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

当前位置:首页 > 考试认证 > IT认证

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

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