当前位置:文档之家› C程序设计实验指导书2

C程序设计实验指导书2

C程序设计实验指导书2
C程序设计实验指导书2

《C语言程序设计》实验指导

第一部分上机实验的指导思想和要求

1.上机实验的目的

学习C语言程序设计课程不能满足于“懂了”,满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写出源程序,独立上机调试程序,独立运行程序和分析结果。这是一门实践性很强的课程,必须十分重视实践环节,保证有足够的上机实践时间。

上机实验的目的是:

(1)加深对讲授内容的理解,尤其是一些语法规定。

(2)熟悉C语言程序开发的环境。

(3)学会上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误。要学会根据“出错提示”,分析并找出错误。

2.上机实验前的准备工作

(1)了解所用的计算机系统(包括C编译系统)的性能和使用方法。

(2)复习和掌握与本实验有关的教学内容。

(3)准备好上机所需的程序。

(4)对运行中可能出现的问题应事先作出估计;对程序中自己有疑问的地方,应作上记号,以便在上机时给予注意。

(5)准备好调试和运行时所需的数据。

3.上机实验的步骤

(1)调出C编译系统,进人C工作环境。

(2)输人自己编好的程序

(3)检查一遍已输人的程序是否有错(包括输入时打错的和编程中的错误),及对改正。

(4)进行编译。如果在编译和连接过程中发现错误,输出窗口会出现“出错信息”,根据提示找到出错位置和原因,加以改正,再进行编译,如此反复,直到顺利通过编译和连接。

(5)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同数据时所得到的结果是否正确。此时应运行几次,分别检查在不同情况下程序是否正确。

4.写实验报告,实验报告应包括以下内容:

(1)预习报告(实验目的,题目,程序清单(或算法流程),疑难问题等);(2)实验数据;(3)实验过程报告;(4)实验小结。

第二部分关于程序的调试和测试

l.程序错误的类型

主要有以下几种:

(1)语法错误:不符合C语言的语法规定。会在编译时被发现并指出。属于“致命错误”,不改正是不能通过编译的。对一些在语法上有轻微毛病但不影响程序运行的问题(如定义了变量但始终未使用),编译时会发出“警告”。虽然程序能通过编译,但不应当使程序“带病工作”,应尽可能将程序中所有“致命错误(error)”和“警告(warning)”的因素都排除。

(2)逻辑错误:

程序无语法错误,也能正常运行,但是结果不对。例如求s=1+2+3+…+100,有人写出以下语句:

for(s=0,i=1;i<100;i++)

s=s+i;

语法没有错,但求出的结果是1+2+3+…+99之和,而不是1+2+3+……100之和。这种错误

计算机是无法检查出来的。如果是算法有错,则应先修改算法,再改程序。如果是算法正确而程序写得不对,则直接修改程序。

(3)运行错误:有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。多数情况是数据不对,包括数据本身不合适以及数据类型不匹配。

2.程序的测试

程序调试的任务是排除程序中的错误,使程序能顺利地运行并得到预期的效果。程序的调试阶段不仅要发现和消除语法上的错误,还要发现和消除逻辑错误和运行错误。除了可以利用编译时提示的“出错信息”来发现和改正语法错误外,还可以通过程序的测试来发现逻辑错误和运行错误。

测试的目的是检查程序有无“漏洞”。对于一个简单的程序,要找出其运行时全部可能执行到的路径,并正确地准备数据并不困难。但是,如果需要测试一个复杂的大程序,要找到全部可能的路径,并准备出所需的测试数据并非易事。例如,有两个非嵌套的if语句,每个if 语句有2个分支,它们所形成的路径数目为2×2=4;如果一个程序包含100个if语句,则可能的路径数目为2100=1.267651×1030。实际上进行测试的只是其中一部分(执行几率最高的部分)。因此,经过测试的程序一般还不能轻易宣布为“没有问题”,而只能说:“经过测试的部分无问题”。

实验一C语言运行环境

一、目的和要求

1、熟悉使用C语言运行环境。

2、掌握C语言程序的书写格式和C语言程序的结构。

3、掌握C语言上机步骤,了解运行一个C程序的方法。

二、实验内容

调试运行以下程序(调试时找出程序错误并修改,再编译、运行)

1.编写自己的第一个程序

录入如下C源程序,文件名自定(**.c):

#include

int main( )

{

printf("This is a C Program。\n);

return 0;

}

对源程序进行编译、连接并运行,观察分析运行结果。

2.编写程序,译密码,要求将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母,因此, “China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为字符C,h,i,n,a,经过运算后,输出译码后的结果。3下面的C程序,目的是想计算由键盘输入的任意两个整数的积。记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因

#include “stdio.h”

int prodct(int a ,int b )

{int c ;

c=a*b;

return c;

}

int main()

{ int x,y,p;

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

p=prodct(x,t) ;

printf(“The product is %d”,p);

return 0;

}

4、求1+2+3+…+100的和,程序如下。记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因

#include “stdio.h”

int min()

{ int i , sum=0;

for(i=1;i<=100;i++) sum=sum+i;

printf("sum=%d\n",sum);

return 0;

}

三、分析与讨论

1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。

2、总结C程序的结构和书写规则。

实验二顺序程序设计

一、实验目的

1.学习C语言基本输入输出函数的使用。

2.编写顺序结构程序并运行。

二、实验内容

1、已知:a=2,b=3,x=3.9,y=2.3(a,b整型,x,y实型),计算算术表达式(float)(a+b)/2+(int)x%(int)y 的值。试编程上机验证。

(提示编程要点:1、先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,例如变量r;2、程序先给几个条件变量赋初值,然后将表达式赋值给变量r;3、最后输出变量r的值就是表达式的值。)

2.若a=5,b=7,c1=‘a’,x=31.19,y=-32.19, “COMPUTER”,编写程序,实现下面的输出格式和结果(空格用□表示):

a=□5,b=□□7,a-b=-2,a/b= 71%

c1=’a’□or□97(ASCII)

x=31.1900, y=□-32.19,x+y=□□-1.0

c2=COMPUTER,COMP,□□□COMP

程序中要包括定义变量类型和设计输出(最后一个字符串可使用常量形式,其余要求使用变量)。

3.求两个复数的加、减、乘运算结果并输出。要求,复数(complex)的实部(the real part)和虚部(the imaginary part)由键盘输入,输入数据前要有提示信息输出,将两个复数及其加、减、乘运算结果以复数的形式输出。

例:输出:

两个复数分别是:comp1=6.00+j4.40,comp2=5.00+j3.00

compl1+compl2=11.00+j7.40 等

三、实验要求

上机前准备好上机所需的程序,上机时输入和调试自己所编写的程序。

实验三选择结构程序设计

一、实验目的

1.正确使用关系表达式和逻辑表达式表达条件。

2.学习分支语句if和switch的使用方法。

3.学习调试程序。

二、实验内容

1、从键盘输入一个整数,编程判断其奇偶性,并输出结果。

2、某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lower class);4岁孩子进中班(Middle class);5岁、6岁孩子进大班(Higher class)。编写程序,输入孩子年龄,输出年龄及进入的班号。

如:输入:3,输出:age:3,enter Lower class。

建议用switch语句来实现。调试无语法错误后,使用下列测试用例进行测试:(1)3岁;(2)4岁;(3)5岁;(4)7岁。

3 编写一个运算器程序,要求能实现两个数的加、减、乘、除四种运算,输入两个操作数和一个运算符号,输出结果,注意0不能做除数。

使用下列测试用例进行测试:(1)加法;(2) 减法;(3)乘法;(4)0不为除数的除法;(5)0为除数的除法。

选作题:通过键盘输入一个字符,判断该字符是数字字符、字母、空格还是其他字符。

三、实验要求

1.复习选择结构程序设计。

2.上机前准备好上机所需的程序,上机时输入和调试自己所编写的程序。

3.上机结束后,应整理出实验报告,实验报告的内容应包括:题目、程序清单、运行结果及对运行情况的分析。

实验四循环结构程序设计

一、实验目的

1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。

2、了解条件型循环结构的基本测试方法。

3、掌握如何正确地控制计数型循环结构的次数。

4、了解在循环结构中,提高程序效率的方法。

5、进一步学习调试程序。

二、实验内容

(1)编程求解:鸡兔同笼,有三十五只头,九十四只足,求鸡和兔各有多少?

(提示:用穷举法求解。即鸡或免的个数x从0至35循环试探,如果满足共有94只足的已知条件,那么此时的x就是一个解。问题:循环条件可以进一步简化以提高程序效率吗?)

(2)假设密码为12345,当用户输入的密码正确时,显示“Welcome!”,程序结束;密码错误时,显示“Error! Try again!”,并要求用户重新输入密码。如果输入3次后密码仍错误,显示“Sorry!You are not welcome”,并不允许再输入,程序结束。(用户输入的密码限定为整数)问题:此题应选择哪些测试用例较好?

(3)已知某班有4位同学:A、B、C、D。其中有一位同学做了好事,但不知是谁。当被询问时,A说:不是我;B说:是C;C说:是D;D说:他胡说。已知其中有三个人说的是真话,一个人说的是假话。请根据以上信息,编写程序,找出做了好事的人。

(提示:C语言中,某个表达式为“真”即值为1,为“假”即值为0;本题中要认真考虑4位同学的话应如何用关系表达式表示?)

选作题:求和sum=1!+2!+3!+4!+…20!(考虑应该用何种类型的量存放结果sum. )

三、实验要求

1. 复习循环结构程序设计。

2.上机前准备好上机所需的程序,上机时输入和调试自己所编写的程序。

3.上机结束后,应整理出实验报告,实验报告的内容应包括:题目、程序清单、运行结果及对运行情况的分析。

实验5 数组

[实验目的和要求]:

了解数组与数学矩阵的关系

掌握数组的定义、引用和初始化

理解二维数组数据的存储顺序

理解并掌握冒泡排序法和选择排序法

掌握字符数组与字符串的定义和引用

了解字符串处理函数的用法

[实验预习和准备]:

填空题:

(1)若有定义int a[3][5];,则排序在数组中第9个元素是。

(2)已知int x[10]={0,2,4};,则数组x在内存中所占的字节数是(turbo c)、(VC ++ 6.0) 。

(3)已知float s[10];,计算s在内存中占用多少个内存单元的表达式是。

(4)写出一个名为s的单精度实型一维数组,长度是6,所有元素初值均为0,其数组定义语句是。

(5)int s[4]={1,2,3,4};则s[s[0]+2*s[2]-s[3]]的值是。

(6)strlen(“student\t\101\\\n”)的值是。

排序算法:熟悉冒泡排序法和选择排序法

比较冒泡排序法和选择排序法的差异

[实验内容和步骤]:

从键盘输入10个整数,统计其中正数、零和负数的个数并输出。

#include

1:int main()

2:{ int a[10],i,s1,s2,s3;

3: s1=s2=s3=0;

4: for(i=0;i<10;i++)

5: scanf(“%d”, ①);

6: for(i=0;i<10;i++)

7: if(a[i]>0) s1++;

8: else if(a[i]==0) s2++;

9: else ②;

10: for(i=0;i<10;i++)

11: printf(“%3d”, ③);

12: printf(“\n”);

13: printf(“positive=%3d,zero=%3d,negative=%3d”,s1,s2,s3);

14:return 0;}

回答下面的问题:

完成程序中的空白处。

①②③

第10行,for循环输出时,共输出多少个数?如果将10改为20,将会出现什么结果?上机测试并解释原因。

程序中所定义的数组a[10]在内存中占多少个字节?在程序中利用sizeof计算a[10]在内存中占多少个字节。数组元素在内存中是顺序存放的?还是随机存放的?

分析并测试下面程序的运行结果。

#include

1:int main()

2:{

3:int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

4: for(i=1;i<3;i++)

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

6:s+=a[i][j];

7: printf(“%d\n”,s);

8: return 0;}

回答下面的问题:

(1)第3行,定义数组a的所有元素的初值是。

(2)第4~6行,参与s相加的元素有。

(3)程序运行的结果是。

3、不用字符串处理函数将两个字符串连接,即将字符串b连到字符串a的后面,变成字符串c.

1: #include

3:{ char a[80],b[80],c[160];

4: int i=0,j=0,k=0;

5: scanf(“%s”,a);

6: scanf(“%s”,b);

7: while(a*i+!=’\0’)

8: c[k++]=a[i++];

9: while(b*j+!=’\0’)

10: c[k++]=b[j++];

11: c*k+=’\0’;

12: printf(“%s\n%s\n%s\n”,a,b,c);

13: return 0; }

回答下面的问题:

第5行,输入一串字符放入数组a中时,为什么没有对a加&操作?

第7~8行,此句的作用是什么?

第8行,如果将两个自加运算用一般加法来等价,请写出此语句的等价表达式。

第7~8行,本循环结束时,是否将字符串a中的结束符也复制给了字符串c?

第9~10行,此语句是将字符串b复制到c数组的开始处吗?

第11行,此句的作用是什么?是否可以省略此行?为什么?

根据此程序思路,如果将字符串s2连接到字符串s1的后面,且不需要第三个字符串变量作中间过渡,如何实现?编程实现并测试。

4、将一个数组从大到小排序,再把一个从键盘输入的数插入数组中,使其仍按从大到小的顺序排列。

#include

1:int main()

2:{

3: int i,j,p,q,s,n,a[11]={120,-3,0,28,64,68,87,105,162,-8};

4: for(i=0;i<10;i++)

5: {

6: p=i;q=a[i];

7: for(j=i+1;j<10;j++)

8: if(q

9: {p=j;q=a[i];}

10: if(p!=i)

11: {

12: s=a[i];

13: a[i]=a[p];

14: a[p]=s;

15: }

16: printf(“%d ”,a*i+);

17: }

18: printf(“please input new data:\n”);

19: scanf(“%d”,&n);

20: for(i=0;i<10;i++)

22: {

23: for(s=9;s>=i;s--)

24: a[s+1]=a[s];

25: break;

26: }

27: a[i]=n;

28: for(i=0;i<10;i++)

29: printf(“%d ”,a*i+);

30: printf(“\n”);

31: return 0;}

回答下面的问题:

(1)在上述程序代码中,找出将数组a进行排序的代码段。

(2)第20~26行的作用是什么?请加以解释。

(3)将一个新的元素插入到一个数组中间时,其后面的元素应该怎样移动?

5、编写程序,要求在无序数组中查找给定值首次出现的位置。例如,数组为:a[10]=10 1 20 39 9 4 12 43 33 4,要查找的数:4,输出:其位置:5,若在数组中没找到该数,则输出:4在该数组中不存在。

提示:从第0个元素到最后一个元素依次与被找元素比较,相等则停止查找。循环结束条件: (已经找到)||所有的数组元素都已经找遍

6、删除一个字符串中指定的字符。要求:从键盘输入一个字符串,以及对待删除的字符,处理后输出。同一字母的大、小写按不同字符处理。如果输入的字符在字符串中不存在,则字符串照原样输出。

例如:输入字符串“I am a teacher,you are a student”,输入待删除的字符‘e’,处理后输出“I am a tachr,you ar a studnt”。

实验6 函数

[实验目的与要求]:

了解函数的类型

掌握C函数的定义与一般调用方法

理解并掌握函数嵌套调用方法

理解并掌握函数参数传递的方法

理解地址传递的含义

了解函数值的返回方法

理解递归调用的两个阶段

[实验预习与准备]:

1、从下列10个有关函数说法中,选择5个正确答案。

(1)建立函数有助于程序实现模块化,也可以提高程序的执行效率。

(2)在C语言中,实参和与其对应的形参共占用一个存储单元。

(3)用户若需调用标准库函数,调用前必须包含其相应的头文件。

(4)在函数内定义的变量,如无特殊说明,只在此函数内部有效。因此,不同函数中变量的名字可以相同,互不干扰。

(5)C语言中,实参是全局变量,形参是局部变量。

(6)若调用一个函数,且此函数中没有return语句,则该函数返回一个不确定的值。(7)C语言中,实参可以是常量、变量,但不可以是表达式。

(8)C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是单向值传递。(9)函数调用可以出现在表达式中,但不能单独作为一条语句或其他函数的实参。(10)在C语言程序中,函数不可以嵌套定义,但函数可以嵌套调用。

2、填空题

在C语言中,若对函数类型无说明,则函数的默认类型是。在一个源程序中,main函数的位置。若用数组名作为函数调用的实参,传递给形参的是

[实验内容和步骤]:

1、分析下面程序的运行结果。

#include

1:void f(int x,int y,int z)

2: {

3: x=456;y=567;z=678;

4:}

5:int main()

6:{int x=10 ,y=20 ,z=30 ;

7: f(x,y,z);

8: printf("%d,%d,%d",x,y,z ) ;

9: return 0 ;}

程序运行的结果是:。

2、分析下面的程序并回答问题。

#include

1 :int fun(int i)

2 : {

3 : i=i*i*2 ;

4 : return(i) ;

5 : }

6 : int main()

7 :{ int i ;

8 : for(i=1 ;i<=5 ;i++)

9 : printf("%d,%d\n",fun(i),i) ;

10 :}

回答下面的问题:

(1)第3行,在fun函数中,i没有初值,能否直接进行运算?说明理由。

(2)第1行和第7行都定义了变量i,会不会出现重复定义现象?说明理由。

(3)写出上机测试的结果。

3、将输入的十进制正整数n转换为二进制数,并将转换结果输出,转换方法采用“除二取余”法。分析下面的程序,补充完整,并测试运行结果。

#include

1 :void transfer(int m)

2 : {

3 : int s[20],i ;

4 : for(i=0 ;m !=0 ;i++)

5 : {

6 : s[i]= ①;

7 : m=m/2 ;

8 : }

9: i--;

10 : for( ;i >=0;i--)

11 : printf(”%d”, ②);

12 : }

13 :int main()

14 :{

15 : int n;

16 : scanf(”%d”,&n) ;

17 : ③;

18 :}

要求运行结果:

键盘输入:11↙

输出结果:1011

4、编程题

(1)编写一个函数square,对一个整数返回它的平方值。

(2)编写一个函数cube,对一个整数返回它的立方值。

(3)用函数square和cube编写函数quartic和quintic,它们分别返回一个整数的四次方和五次方值。

(4)用上述函数编写一个显示从1~20的整数幂的表的程序,程序输出的形式如下:

A TABLE OF POWERS

N0. Square Cube Quartic Quintic

1 1 1 1 1

2 4 8 16 32

3 9 27 81 243

﹍﹍﹍﹍﹍

5、编制一个函数find(char s[],char a),统计字符串s中字符变量a的值出现的次数,在主函数中输入字符串并显示统计结果。

(1)find函数的类型是什么类型?

(2)在定义find函数时,能否将参数直接定义成find(char s[],char a)?这里的s[]没有具体的长度,会不会错?为什么?

(3)编程实现find函数。

(4)在main函数中调用find函数,测试字符串“student”中t的次数。

(选做题)编写程序,设计一个判别素数的函数。如果是素数,返回值1;如果不是素数,则返回值0。在主函数中调用这个判别函数,输出100以内的所有素数。输出格式如下:NO. Value

2 1

3 1

4 0

﹍﹍

实验7 指针

[实验目的与要求]:

掌握指针变量的定义与引用

掌握指针与变量、指针与数组、指针与字符串的关系

掌握C集成环境中调试指针程序的方法。

[实验预习与准备]:

概念判断题

(T)int a[5],*p=a;指针变量p和数组名a都指向a[0]的首地址。

(T)int i=1,*p=&i;则*(&(*p))=1。

(F)可以把一个字符串赋值给一个指针变量,但不能赋值给一个数组名。

(T)变量的指针指变量在内存所占的存储单元的起始地址,而指针变量是指存放某类对象的地址(指针)的变量。

(F)int *p=3;是一个错误的定义语句。

(F)int *p=&i,i=3;是一个正确的定义语句,其中i是一个整型变量,p是一个指向i的指针变量。

(F)char *p,q;等价于char *p,*q;。

(F)int a[10],*p=a;,表达式*(p+1)和*(a+1)的作用都是指向a[1]的地址。

[实验内容和步骤]:

1、分析下面程序的运行结果。

(1)#include

swap1(int *p,int *q)

{int *t; t=p;p=q;q=t;}

int main()

{int a=1,b=2 ;

swap1(&a,&b);

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

return 0 ;}

运行结果是1,2 。

(2)#include

swap2(int *p,int *q)

{int t; t=*p;*p=*q;*q=t;}

int main()

{int a=1,b=2 ;

swap2(&a,&b);

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

return 0 ;}

运行结果是2,1 。

(3)

#include

swap3 (int *p,int *q)

{int t; t=*p;p=q;*q=t;}

int main()

{int a=1,b=2 ;

swap3(&a,&b);

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

return 0 ;}

运行结果是1,1 。

(4) #include

swap4 (int p,int q)

{int t; t=p;p=q; q=t;}

int main()

{int a=1,b=2 ;

swap4(a,b);

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

return 0 ;}

运行结果是1,2 。

(5)

#include

int a,b;

swap5 ( )

{int t; t=a;a=b; b=t;}

int main()

{int a=1,b=2 ;

swap5( );

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

return 0 ;}

运行结果是1,2 。

(6)

#include

int a=1,b=2 ;

swap6 ( )

{int t; t=a;a=b; b=t;}

int main()

{

swap6( );

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

return 0 ;}

运行结果是2,1 。

2、分析下面的程序并回答问题。

#include

1:int main()

2:{

3: int a[5],*p;

4: for(p=a;p<=a+4;p++)

5: scanf("%d",&(*p));

6: printf("\n");

7: p--;

8: for(;p>=a;p--)

9: printf("%d",*p);

10: printf("\n");

11: return 0; }

回答下面的问题:

第4行,p<=a+4表示什么意思?

答:指针变量所指向的地址不能超过该一维数组的最后一个元素的地址;

假设数组a在内存中的首地址是1000H,则执行完第4~5行后,p指向的内存地址是多少?a指向的内存地址是多少?

答:1000H就相当与十六进制的0x1000,执行完之后应在首地址上加上20,20转化为16进制等于20=1*16^1+4*16^0;所以20转化为十六进制是0x14,所以0x1000+0x14=0x1014=1014H,执行完之后p所指向的内存地址为1014H,a所指向的内存地址不改变,还是首地址1000H。如果要用p表示a[0]、a[1]、a[2]的地址,如何表示?

答:若p=a;则a[0],a[1],a[2]的地址分别表示为p,p+1,p+2。

第4行p<=a+4;能否改成p<=p+4;?为什么?请实际测试。

答:不能,因为p<=p+4永远为真值,进入了一个死循环。

3、下面的程序是检查一个字符串是否是对称的字符串(即第一个字符与最后一个字符相同,第2个字符与倒数第2个字符相同,依次类推),在程序的空白处填上合适的内容。

1:#include

2:#include

3:int main()

4:{ char s[81],*p1,*p2;

5:int n;

6:printf("\nInput a string:");

7:gets(s);

8:n=strlen(s);

9:p1=s; //p1=&s[0]

10:p2=s+n-1; //p2=&s[n-1]

11:while(p1

12:{if(*p1!=*p2)

13:break;

14:else

15:{p1++; p2--;}

16:}

17:if(p1

18:else printf("YES\n");

19:return 0; }

程序测试:

输入level时,输出YES 。

输入student时,输出NO 。

4、编程:编制一函数sort(int a[10]),对数组a元素进行排序,然后用主程序调用并测试。

5、写一函数,求一个字符串的长度。

实验步骤与要求:

(1) 本部分习题要求全部用指针完成;

(2) 在main函数中输入字符串,并输出其长度;

(3) 本题不能使用strlen()函数;

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

C语言实验指导书

《C语言》实验指导书 2016年10月

实验一C程序得运行环境与运行方法 一、实验目得 1。掌握所用得C语言环境得基本操作方法、 2.掌握编辑、编译、连接与运行C程序。 二、实验内容与要求 1、学习使用Visual C++6.0环境开发C程序。 (1)在磁盘上建立自己得文件夹,用于存放C程序,如“e:\cexam”。 (2)启动Visual C++6。0、执行“开始”-—“所有程序”——“Microsoft Visual Studio 6。0"——“Microsoft Visual Studio 6.0”命令,进入VC++编程环境,如图1 所示。 图1 MicrosoftVisual Studio6、0窗口 (3)新建C 程序文件。 执行“文件”——“新建”命令,单击如图2所示得“文件”选项卡,选中“C++So urceFile”;

图 2 新建文件 在“文件”文本框中输入文件名test1, 则C源程序被命名为test1。cpp,若想指定扩展名为.c,则需在“文件”文本框中输入文件名test1.c;在“目录”下拉列表框选择已经建立得文件夹,如,单击“确定”按钮,就新建了C源程序文件,并显示编辑窗口与信息窗口,如图3所示,然后在编辑窗口中输入程序。 (4)保存程序。 在如图3得界面输入程序代码。由于完全就是Windows 界面,输入及修改可借助鼠标与菜单进行,十分方便。当输入结束后,执行“文件”——“保存”命令,保存源文件。 图3编辑源程序(5)编译程序。信息窗口编辑窗口

执行“组建”--“编译[test1、cpp]”命令,弹出消息框,如图4所示,单击“就是"按钮,开始编译,并在信息窗口中显示编译信息。如果信息窗口中显示“test1.obj-0error(s),0 warning(s)",表示编译正确,没有发现错误与警告,并生成了目标文件test1、obj、 图4产生工作区消息框 如果显示错误信息,说明程序中存在严重得错误,必须改正,双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口得提示分别予以纠正;如果显示警告信息,说明这些错误并未影响目标文件得生成,但通常也应该改正。 (6)连接程序。 执行“组建”——“组建[test1.exe]”命令,开始连接,并在信息窗口中显示连接信息、如果信息窗口中出现“test1.exe—0 error(s),0 warning(s)”,表示连接成功, 并生成了可执行文件test1、exe。 (7)运行程序。 执行“组建"——“执行[test1、exe]”命令,自动弹出运行窗口,如图5所示,显示运行结果。其中“Pressany key to continue”提示用户按任意键退出运行窗口,返回到VC++编辑窗口。 图 5 显示运行结果 (8)关闭程序工作区。 当一个程序编译连接后,VC++系统自动产生相应得工作区,以完成程序得运行与调试。若想执行第二个程序时,必须关闭前一个程序得工作区,然后通过新得编译连接,产生第二个程序得工作区。否则得话运行得将一直就是前一个程序。 执行“文件"--“关闭工作区命令",弹出得对话框如图 6所示,单击“就是”按钮,关闭工作区。 图 6 关闭所有文档窗口 (9)打开文件、 如果要再次打开C源文件,可以执行“文件”——“打开”命令,在查找范围中找到

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum= 0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx); front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若 为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include

《C语言》实验指导书

内江职业技术学院 上机实验指导书 科目:C语言程序设计 系别:电商学院 班级:15软件1班 教师:王刚 2015—2016学年第一学期

《计算机基础》课程实验指导书 目录 实验一C语言概述 (1) 实验二基本数据类型 (3) 实验三输入输出和算法 (6) 实验四选择和循环结构 (10) 实验五循环结构和函数 (13) 实验六模块化设计 (14) 实验七一维数组和字符串 (18) 实验八多维数组和指针 (20) 实验九指针 (22) 实验十指针和结构体 (23) 实验十一链表和共同体 (26) 实验十二文件 (27) 教材和参考书 1、教材: 《谭浩强、张基温,《C/C++程序设计教程》,高等教育出版社。 2、参考书: (1)《(美)H.M.Deitel,P.J.Deitel著,薛万鹏译,《C程序设计教程》,机械工业出版社。 (2)杨路明,《C语言程序设计教程》,北京邮电大学出版社。

实验一C语言概述 一、实验目的 1、了解所用的计算机系统。 2、了解在该系统上如何进行编辑、编译、连接和运行一个C程序。 3、通过运行简单的C程序了解C程序的特点。 二、实验内容 1、熟悉C语言集成环境。 2、利用C语言集成环境进行编辑、编译、连接和运行一个C程序。 3、运行一个自己编写的程序,程序的功能是输出两行文字。 三、实验设备及环境 微机若干台,并安装有C语言软件。 四、实验步骤 1、熟悉所用的系统。了解Windows资源管理器的使用方法:文件的查看、复制、运行等方法,C所在目录,文本文件的建立方法。 2、进入C,并新建一个C源程序文件。 3、熟悉C的集成环境,了解各菜单项有哪些子菜单。 4、输入下面的程序,注意区分大小写。 #include void main() { printf("This is a C program.\n"); } 编译并运行程序。 5、关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

C语言实验指导书

《C语言程序设计》实验指导书 每次实验(10分)一共100分,最后折合成50分计入最终成绩。 第一次实验(一星期完成) ●内容一:熟悉编译环境和工具 在VS中键入以下的这段程序 1)关键字变色,自动缩近,智能提醒 2)代码风格和注释 3)编译出错,连接出错。修改错误 4)调试,断点,监控变量,进入函数,跳出函数。监控内存,监控堆栈 在linux中键入以下这段程序 1)熟悉VIM程序,gcc编译程序(开两个终端窗口) 2)熟悉GDB调试程序的基本技巧。(list,backstrac; break, watch,delete; next, continue, run; print,set,help) 其中,help命令是一个非常的参考,如果忘记了某条具体的命令,可以随时去参考help命令来得到相关的细节。 3)介绍《鸟歌的私房菜》这本书 ●内容二:登陆https://www.doczj.com/doc/0f1678715.html,网站,在线提交。 1)熟悉基本的提交方法和规则 2)现场演示反作弊程序的效果 ●程序: 输入:两个整数,用空格分隔, 输出:两个整数的和,计算两个整数的和的功能,要求用函数实现,同时如果输入有错误,例如(12 abc)程序能够给出“error input”的提示。 参考输入: 12 33 参考输出: 45 参考输入: 12 abc 参考输出:

error input ●思考和扩展(无标准答案) 如果用户输入12 12abc 如何判断并终止程序,输出“error input”的提示 第二次实验(一星期完成) ●内容一:登陆ACM,演示OJ系统 1)介绍这个网站,有兴趣的同学可以去尝试一下() ●内容二:计算工资/小时程序 1)强制类型转换 2)一共有多少位的算法 3)整形数的溢出,以及针对特定问题,如何解决溢出问题 注意:linux编译下应该加上–lm 开关。 ●程序: 输入:工资数,小时数(整数,空格分隔)。 输出:工资/小时数(精确到小数点后2位),并根据四舍五入取整,然后将取整的数平方后计算一共有几位,后三位分别是什么? 参考输入: 2345 2 ←input (separate by space) 参考输出: 1172.50 ←average salary 1173 ← round off to integer 7 ← number of digit 0 2 5 ← the last three digit (separate by space) 第三次实验(两星期完成) ●内容一:介绍linux 下的grep,并给出相应的实例。重点介绍下面要用到的四个符号。 ●内容二:正则表达式 ^ 代表字符串开始 . 代表任意字符 $ 代表字符串末尾

C语言实验指导书

C语言程序设计实验指导书 沈岚岚吕元长编写 桂林电子科技大学信息科技学院 2012.03

前言上机实验的目的和要求 一上机实验的目的 上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下: 1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。 2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。 3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。 4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。 二上机实验前的准备工作 1 了解所用的计算机系统的性能和使用方法; 2 复习和掌握与本实验有关的教学内容; 3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序; 4 准备好调试和运行时所需的数据。 三上机实验的步骤 1 调出C语言编译系统,进入C语言工作环境; 2 输入自己编制好的程序; 3 检查输入是否有错,及时更正; 4 进行编译和连接; 5 运行程序,分析结果。 四、实验结束,整理实验报告 实验报告应包括以下内容: 1 上机题目; 2 程序清单; 3 运行结果; 4 对结果的分析和本次获得的经验和体会。

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

C语言实验指导书

实验1 C语言初步与编程环境介绍(2学时) 1.目的要求 1)熟悉C语言基本结构, 2)熟悉VC控制台应用程序设计的使用方法。 2.实验内容 (1)创建项目,分别将教材P13和P14程序输入并编译。 (2)下列程序能正确运行吗?如果能,写出运行结果;如果不能,指出错误原因并改正。 Main() { printf("hello\n"); } 附:VC 6.0 环境的使用方法介绍 Microsoft Visual C++ (简称VC)是微软公司生产的基于其Windows系统的软件开发工具。它具有使用灵活,并与32位Windows内核(使用于Windows 95/98/NT/2000)高度兼容的特点,从而被Windows程序员们广泛使用。同时,VC同样可以加工处理C语言程序,与标准的ANSI C语言兼容。VC提供了一种控制台操作方式,本实验课程主要在控制台方式下进行设计运行。 一、什么是控制台程序? Win32控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图形用户界面,程序与用户交互时通过一个标准的文本窗口,通过标准的输入输出流(I/O Streams)进行。 一个最简单的控制台程序如下: #include // 包含使用标准输入输出库的头文件声明 main() { printf(”Hello World!”); //输出一个字符串 } 二、如何使用MSVC编写控制台程序?

控制台程序按照下面几个步骤进行。 1、打开VC集成开发环境。 双击桌面图标“Microsoft Visual C++ 6.0”,或者从系统菜单“开始”/“程序”/“Microsoft Visual Studio 6.0”/“Microsoft Visual C++ 6.0”(如图1),打开VC 开发环境(如图2)。 图 1 从开始菜单中打开VC开发环境 图 2 VC开发环境界面

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

《C语言》实验指导书

《C语言程序设计》 实 验 指 导 书 华中师范大学信息技术系 二00九年三月

项目一:熟悉C语言的运行环境及简单程序设计 (11) 实验一熟悉C语言的运行环境 实验二c程序初步 (3) 实验三数据类型及输入输出 (5) 实验四运算符与表达式 (8) 项目二:流程控制、指针、数组、模块化程序设计 实验五分支程序设计 (9) 项目六循环程序设计 (11) 项目七函数 (12) 项目八数组 (13) 项目九指针 (15) 项目三:综合程序设计——竞赛编排及优胜排序 (注:每个项目应包含实验学习目标、实验内容、实验原理、实验设备、实验步骤、实验注意事项或实验思考等内容。 基本型实验应有明确的实验学习目标、详细的过程和具体的结果;综合设计型实验应有明确的实验学习目标、可参考的过程和实验结果评价标准)

实验基本要求 1、每次实验前,学生必须预习实验内容,实验程序必须自行编制、自行调试。 2、每次实验,学生都必须提交实验报告,内容包括实验目的、实验内容、实验程序、实验过程(软件的使用、程序的调试)等,见下面的实验报告模版。 3、学生第一次上机时,应在教师机指定文件夹下建立以自己学号+姓名的子文件夹,例如学号为2005683001的学生张三,应在教师机指定文件夹下建立“2005683001张三”的子文件夹,此文件夹就是学生张三存放本课程实验全部文档的文件夹,也是教师评价学生饰演成绩的主要依据。 4、学生每次实验完毕后,都应将实验报告、实验程序等文档上传到教师机自己建立的子文件夹中。 5、学生每次实验,都应该在考勤表上签到。 附 华中师范大学信息技术系c语言程序设计实验报告 实验目的: 实验设备(包括软件): 实验内容: 实验过程: 实验程序及实验结果: 实验体会:

C语言程序设计实验-答案

-前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include main() { int r,s; scanf("%d",&r); s=r*r; printf("s=%d\n",s); } 3.-------------------------------- (1) #include main() { printf(" *\n"); printf("***\n"); printf(" *\n"); } (2) #include

{ int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); }

C语言实训指导书

C语言实训指导书 C语言课程组编写 适用专业2010级计算机应用技术专业 2010级计算机网络技术专业 2010级计算机软件技术专业 2010级计算机网络工程专业 2010级计算机信息管理专业 2010级计算机网络安全专业 2010级计算机电子商务专业

软件学院CCUTSOFT 2011年1月 目录 C语言实训安排 (3) 一.实训时间 (3) 二.实训地点 (3) 三.实训对象 (3) 四.开发环境 (3) 五.实训目的 (3) 六.实训内容 (4) 七.实训题目 (4) 八.指导教师 (6) 十.实训方案 (7) 十一.实训要求 (7) 十二.考核方式 (8) 十三.进度计划 (9) 附录 (9)

C语言实训安排 一.实训时间 起始时间:2010.1.4——2008.1.12 上午:8:00——12:30 下午:13:00——17:30 二.实训地点 软件楼204、206、401、402、404、408、412、416、504、606、608、612、614 三.实训对象 10级计算机应用技术专业 10级计算机网络技术专业 10级计算机软件技术专业 10级计算机网络工程专业 10级计算机信息管理专业 10级计算机网络安全专业 10级计算机电子商务专业 四.开发环境 Turbo C 2.0 五.实训目的 本次实训旨在进一步巩固学生本学期在C语言课程上的所学,加强学生对面向过程的理解,加快学生编程思想的形成,培养学生的编程兴趣,从而更快的提高学生的程序设计能力,并为下学期各课程的打下一个坚实的基础。

六.实训内容 本次实训要求学生依据指导教师对实训各题目的讲解和实训指导书中对各实训题目的分析,结合自身学习情况,从四道实训题目中人选一题,独立完成该题目的设计和实现,并完成实训报告的撰写。 七.实训题目 题目一:迷宫游戏 内容:1、使用二维数组形成游戏地图,数组元素0表示墙1表示路2表示出口。 2、用*表示人,E表示出口,并在游戏地图输出完毕后,单独输出。 3、当人物标示与出口标示重合时,输出成功提示,并结束程序。 4、使用共用体变量接收键盘按键信息。 5、使用bios.h函数库中的bisokey函数读取键盘按键信息。 6、使用stdio.h函数库中的gotoxy函数设置输出位置。 7、使用键盘方向键LEFT、RIGHT、UP、DOWN移动人物,键值分 别为75、77、72、80。 8、使用ESC键退出程序运行界面并显示失败提示,键值27。 9、在移动过程中要注意处理重合问题。 题目二:学生成绩管理 内容:1、使用结构体数组定义学生基本信息(学号、姓名、年龄)及成绩(C语言成绩、英语成绩和数据库成绩)。如下: struct student { int id,age,cscore,enscore,dbscore; char name[21]; }students[5]; 2、实现学生基本信息(学号、姓名、年龄)及成绩(C语言成绩、 英语成绩和数据库成绩)的录入。 3、基本信息的查询(根据学号)、删除(根据学号)与修改(根据学 号)。 4、根据每科成绩,求出每个人的总分 5、对学生考试成绩进行排序(根据学号或各科成绩排序)

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。

3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图:

②判断素数函数流程图:

(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图:

C语言程序设计实验指导书

C程序设计实验指导书 桂林电子科技大学职业技术学院 二零一二年十月

实验一C程序的运行环境和程序结构 一、实验目的 1.了解所用计算机系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.学习从开机开始的操作,包括如何建立子目录、使用操作命令 列目录、打印文件内容、删除文件、复制文件等。熟悉VC++6.0集成环境的使用 ①启动VC++6.0集成开发环境 选择“开始”→程序→Microsoft Visual Studio6.0打开后显示如下 ②在VC++6.0主窗口中,选择“文件”→“新建”命令,弹出下图所示“新建”对话框

点击“文件”显示如下图对话框 ③之后在文件编辑窗口开始编写程序

文件编 辑窗口 ④程序编辑完成后开始编译→链接→运行 2.自己编写一个简单的程序,输出以下信息: **************************** C Program **************************** 3.自己编写一个简单的程序,打印出学号、姓名、性别等学生 记录。 4.调用编辑程序,输入教材第一章的程序,并进行编译和运行。 5.完成一个学生信息管理系统登录界面

三、实验要求 在实验之前,要求同学熟悉main函数、变量的定义、注释、分号的 作用、函数的说明、函数体等内容

实验二数据类型、运算符和表达式 一、实验目的 1. 掌握C语言的数据类型,熟悉如何定义一个整型、字符型、实型变量,了解赋值的方法和数据输出的格式。 2. 学会使用C语言的有关算术运算符和表达式,熟练掌握C程序的编辑、编译、连接、运行的过程。 二、实验内容 (1) 输入下列程序: void main() { char c1,c2; c1=97;c2=98; printf(“%c,%c”,c1,c2); } a)将上面的“%c”改为“%d”运行程序,输出运行结果; b)将“char”改为“int”运行程序, 输出运行结果; c) 将“c1=97”改为“c1=’a’”运行程序,输出运行结果 d) 将“c1=97”改为“c1=500”运行程序, 输出运行结果; 根据运行结果说明原因? (2)调试程序: void main() {

C语言程序设计实验报告.doc

C语言程序设计实验报告 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch 语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图

Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数 */ { int t,i; t=sqrt(n); for(i=2;i1;i-=2)/* x为奇数时,做函数计算 */ { n=sushu(i); /* 做判断素数的函数调用 */ ( 励志天下 ) if(n!=0)/* 对素数的处理 */ { a[j]=n;/* 把素数由大至小存入数组a[ ]中 */ j++; if(j<11) m+=n; /* 统计前10个素数之和 */ } } if(j<10)/* 当素数个数小于10个时,结果输出 */

C语言程序设计实验指导书(新编)

C语言程序设计实验指导书 桂林电子科技大学信息科技学院

前言上机实验的目的和要求 一上机实验的目的 上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编程序正确与否。学习程序语言,上机实验的目的如下: 1 加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,通过多次上机,就能自然、熟练地掌握语法规定。 2 了解和熟悉C语言程序开发环境。熟悉一两种环境(计算机系统的软件和硬件条件),再遇到其他的系统时便会触类旁通,很快学会。 3 学会上机调试程序,也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能够正确地运行。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,而且要求自己动手实践能力强。 4 在做实验时千万不要在程序通过后就认为万事大吉,完成任务了,应当在通过的程序上做一些调试和修改,看看会得到什么结果。多动脑筋思考,将会对你有很大帮助。 二上机实验前的准备工作 1 了解所用的计算机系统的性能和使用方法; 2 复习和掌握与本实验有关的教学内容; 3 准备好上机所用的程序,切忌自己不思考、不编制程序或抄袭别人的程序; 4 准备好调试和运行时所需的数据。 三上机实验的步骤 1 调出C语言编译系统,进入C语言工作环境; 2 输入自己编制好的程序; 3 检查输入是否有错,及时更正; 4 进行编译和连接; 5 运行程序,分析结果。 四、实验结束,整理实验报告 实验报告应包括以下内容: 1 上机题目; 2 程序清单; 3 运行结果; 4 对结果的分析和本次获得的经验和体会。

实验一 C语言程序初步 数据类型、运算符和表达式 一实验目的 1 熟悉C语言运行环境——Microsoft Visual C++ 6.0中文版。 2 掌握C语言程序的书写格式和C语言程序的结构,初步了解C源程序的特点。 3 掌握C语言上机步骤,了解如何编辑、编译、调试和运行一个C程序的方法。 4 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对他们赋值的方法。 5 掌握不同的类型数据之间赋值的规律。 二实验内容 1 C语言上机步骤 ⑴开机,启动Microsoft Visual C++ 6。 ⑵建立工程文件:在“文件”菜单中选择“新建”命令项,在弹出的“新建”对话框的“工程”选项卡中选择“Win32 Console Application”选项,在“工程”框中输入工程文件名sy1,在“c:位置”下拉框中输入或选择文件夹,单击“确定”;在以下弹出的两个对话框中分别单击命令按钮“完成”和“确定”。 ⑶建立C++源文件:在“工程”菜单中选择“添加到工程”—“新建”命令项,在弹出的“新建”对话框的“文件”选项卡中选择“C++ Source File”,在右边的“文件”框中输入文件名sy11后单击“确定”。 ⑷输入源程序:在弹出的文件编辑窗口中输入下面的源程序: #include void main() { printf("Hello,World!\n"); printf("Welcome to the C language world!\n"); printf("Everyone has been waiting for.\n"); } ⑸编译:用“编译”菜单的“编译”命令项对源文件sy11.cpp进行编译,如果程序有语法或语义错误,在屏幕下面的窗口会出现错误信息;这时候要修改源程序、保存后重新编译。直到修改了全部错误,屏幕下面的窗口会出现下面的信息:

C语言程序设计实验报告——实验2 数据类型、运算符和表达式

凯里学院 C 语言程序设计 实验报告 ××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日 实验二 数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用step by step 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } (2)按习题3. 7的要求编程序并上机运行 该题的要求是: 要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。因此,“China ”应译为“Glmre" 。 请编一程序,用赋初值的方法使。cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } 装订线 装订线

c语言程序设计实验报告模板

c语言程序设计实验报告模板 篇一:C语言程序设计实验报告 一、实验目的: 1、掌握C语言的数据类型和变量的声明。 2、掌握不同类型数据之间赋值的规律。 3、掌握C语言的运算符和表达式的使用。 4、熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容: ①输人程序:#includevoid main { int a, b; float d,e; char c1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); } ②运行此程序并分析结果(2)按习题4. 8要求编写程序题目为: 设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。 程序: 三、实验步骤: ①输人程序: #include void main { int a, b; float d,e; char c1,c2; double f, g; long m, n;

unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); } ②运行此程序并分析结果。 预计结果: a=61,b=62 c1=a,c2=b d=``3.56,e=`-6.87 f=````3157.890121,g=```````0.123456 m=50000,n=-60000 p=32768,q=40000(`代表空格) 结果: g的输出看来是四舍五入了。 ③在此基础上,将程序第9~14行改为: a=61;b=62; c1=a;c2=b; f=3157.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。 p=a=m=50000;q=b=n=-60000;这两条语句将p、a、m的值和q、b、

相关主题
文本预览
相关文档 最新文档