admin 管理员组

文章数量: 887021


2023年12月18日发(作者:screened)

实验1熟悉Visual C++6.0环境及运行C程序

一、实验目的

1.掌握在Visual C++6.0环境下C程序的建立、编辑、编译和执行过程。

2.掌握C程序的最基本框架结构,完成简单程序的编制与运行和调试。

3.掌握发现语法错误、逻辑错误的方法以及排除简单错误的操作技能。

二、实验内容

1.从键盘输入两个数a和b,求它们的平方和,并在屏幕上输出。输入该C程序,编译并运行之,记下屏幕的输出结果,以文件名sy1_1.c保存。

#include

main()

{

int a,b,sum; /*定义整型变量a、b、sum */

printf("Please Input a,b n "); /*输出提示信息*/

scanf("%d%d",&a,&b); /*从键盘输入两个整数分别赋予a和b*/

sum=a*a+b*b; /*赋值语句,把a2+b2的结果赋给变量sum*/

printf("%d*%d+ %d*%d=%dn",a,a,b,b,sum); /*输出语句*/

}

2. 改错题

在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。

(1计算x*y的值并将结果输出。试纠正程序中存在的错误,以实现其功能。程序以文件名sy1_2.c保存。

#include

main main()

{ int x=2;y=3;a int x=2,y=3,a;

A=x*y a=x*y;

print ('a=%d",A); printf ("a=%d",a);

printf("n");

}

(2)下程序的功能为:求两数中的较大数据并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy1_3.c保存。

#include

1

该程序的运行结果:

Please Input a,b

2 4

2*2+4*4=20

该程序的运行结果:

a=6

viod main() void main()

{

int a ,b , max;

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

Max=a; max=a;

If (max

Printf(“max=%d”,max); printf(“max=%d”,max);

}

3.程序填空题

(1)从键盘输入两个整数,输出这两个整数的和。根据注释信息填写完整程序,以实现其功能。以文件名sy1_4.c保存。

#include

main()

{

int x,y,total; /* 定义整型变量x,y,total*/

printf("Please input x,y ! "); /*

输出提示信息 */

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

由键盘输入两个数分别赋予x和y*/

total=x+y; /*

赋值语句 */

printf("%d + %d=%dn",x,y,total); /* 输出两个整数的和 */

}

(2)从键盘输入两个整数,输出这两个整数的差。根据注释信息填写完整程序,以实现其功能。程序以文件名sy1_5.c保存。

#include

main()

{

int a,b,m;

printf("Input a,b please ! ");

scanf("%d%d",&a,&b);

_m=a-b;___ /*

赋值语句,将a和b的差值赋给m */

_printf(“%d-%d=%dn”,a,b,m);_ /* 输出a 和b差的结果值后换行 */

}

4.编程题

2

该程序的运行结果:

5,3

max=5

该程序的运行结果:

Please input x,y !2 4

2+4=6

该程序的运行结果:

Input a,b please !20 17

20-17=3

(1)编程序,运行后输出如下信息:“Better City,Better Life!”。程序以文件名sy1_6.c保存。

#include

main()

{

printf("Better City,Better Life!n");

}

(2)编程序,从键盘输入3个整数,输出它们的平方和。程序以文件名sy1_7.c保存。

#include

main()

{

int a,b,c,sum;

printf("Please Input a,b,c n ");

scanf("%d,%d,%d",&a,&b,&c);

sum=a*a+b*b+c*c;

printf("%d*%d+%d*%d+%d*%d=%dn",a,a,b,b,c,c,sum);

}

该程序的运行结果:

Please Input a,b,c

2,3,4

2*2+3*3+4*4=29

3

实验2 数据类型、运算符和表达式

一、实验目的

1.理解C语言中各种数据类型的意义,掌握各种数据类型的定义方法。

2.掌握C语言常量、变量的定义与使用。

3.掌握C语言数据类型及运算符的使用规则。

二、实验内容

1.改错题

在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。

(1)下列程序的功能为:已知圆锥半径r和高h,计算圆锥体积v。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_1.c保存。计算圆锥体积的公式为:

#include stdio.h #include

main(); main()

{ float r=10,h=5; float r=10,h=5,v;

v=1/3*3.14159*r^2*h; v=1.0/3*3.14159*r*r*h;

printf("v=%dn",v) printf("v=%dn",v);

}

(2)下列程序的功能为:通过键盘输入两个整数分别存放在变量x、y中,不借用第3个变量实现变量x、y互换值。纠正程序中存在的错误,以实现其功能。程序以文件名sy2_2.c保存。

#include

main()

{

}

4

int x,y;

printf("请输入两个整数n");

scanf("%d%d",x, y); scanf("%d%d",&x, &y);

printf("初始状态下的x:%d y: %dn",x,y );

x=x+y x=x+y;

y=x-y;

x=x-y;

该程序的运行结果:

v=523.598333

printf("最终状态下的x:%d y: %d/n",x,y);

该程序的运行结果:

请输入两个整数

2 5

初始状态下的x:2 y: 5

最终状态下的x:5 y: 2

2.程序填空题

(1) 计算当x=4时,公式y序以文件名sy2_3.c保存。

#include

main()

{

float x=4.0,y;

y=(1+x*x*x)/(x*x+4*sqrt(x)+10)*2*x*x;

printf("%f",y);

}

(2) 下列程序的功能为:从键盘输入3个整数分别存入变量a、b、c,然后,将变量a的值存入变量b,将变量b的值存入变量c,将变量c的值存入变量a,输出经过转存后变量a、b、c的值。(提示:使用中间变量)补充完善程序,以实现其功能。程序以文件名sy2_4.c保存。

#include

main ()

{

int a,b,c, t ;

printf("Please input a,b,c: ");

scanf("%d%d%d", &a,&b,&c );

t=a ;

a=c ;

c=b ;

b=t ;

printf("a=%dnb=%dnc=%dn",a,b,c);

}

3.编程题

(1)从键盘输入3个大写英文字母,把它们转换成小写字母后输出。程序以文件名sy2_5.c保存。

#include

main()

{

char c1,c2,c3;

scanf("%c%c%c",&c1,&c2,&c3);

c1=c1+32;

c2=c2+32;

c3=c3+32;

5

1x3x4x102×2x2

的值。补充完善程序,以实现其功能。程该程序的运行结果:

61.176471

该程序的运行结果:

Please input a,b,c:1 2 3

a=3

b=1

c=2

该程序的运行结果:

ABC

abc

printf("%c%c%cn",c1,c2,c3);

}

(2)从键盘输入3个整数,输出它们的平均值与积。程序以文件名sy2_6.c保存。

#include

main()

{

int a,b,c,ji;

float ave;

printf("请输入3个整数n");

scanf("%d%d%d",&a,&b,&c);

ave=(a+b+c)/3.0;

ji=a*b*c;

printf("ave=%f,ji=%dn",ave,ji);

}

6

该程序的运行结果:

请输入3个整数

2 4 6

ave=4.000000,ji=48

实验3 顺序结构程序设计

一、实验目的

1.掌握scanf()、printf()以及其他常用输入、输出函数的使用。

2.掌握格式控制符的使用。

3.掌握顺序结构程序设计的方法。

二、实验内容

1.改错题

在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。

(1)下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C=

5(F32),输出取92位小数。纠正程序中存在的错误,以实现其功能。程序以文件名sy3_1.c保存。

#include

main()

{

float c,f;

printf("请输入一个华氏温度:n");

scanf("%f",f); scanf("%f",&f);

c=(5/9)*(f-32); c=(5.0/9)*(f-32);

printf("摄氏温度为:%5.2fn" c); printf("摄氏温度为:%5.2fn", c);

}

(2)下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。纠正程序中存在的错误,以实现其功能。程序以文件名sy3_2.c保存。

该程序的运行结果:

请输入一个华氏温度:

75

摄氏温度为:23.89

x2ab(ab)2

#include

main()

{ int a,b;

float x;

该程序的运行结果:

4,6

x=0.480000

scanf("%d,%d",a,b); scanf("%d,%d",&a,&b);

x=2ab/(a+b)(a+b); x=2.0*a*b/((a+b)*(a+b));

printf("x=%dn",x); printf("x=%fn",x);

(3)下列程序的功能为:从键盘输入一个小写字母,要求改用大写字母输出。请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy3_3.c保存。

#include

main()

{

char c1,c2;

printf("%c,%dn",c1,c1);

7

该程序的运行结果:

a

a,97

A,65

c1=getchar; c1=getchar(); /* 从键盘输入一个小写字母 */

c2=c1+26; c2=c1-32; /* 转换为大写字母 */

printf("%c,%dn",c2,c2); /* 输出大写字母及其ASCII码值 */

}

2.程序填空题

(1)下列程序的功能为:按给定格式输入数据,按要求格式输出结果。补充完善程序,以实现其功能。程序以文件名sy3_4.c保存。

输入形式 enter x,y:2 3.4

输出形式 x+y=5.4

#include

main()

{

int x;

float y;

printf ("enter x,y: ");

scanf("%d%f",&x,&y);

printf("x+y=%.1fn",x+y);

}

(2) 下列程序的功能为:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。(周长l=2r,圆面积s=r,圆球表面积sq=4r,圆球体积vq=善程序,以实现其功能。程序以文件名sy3_5.c保存。

#include

main()

{

float pi,h,r,l,s,sq,vq,vz;

pi=3.1415926;

printf("请输入圆半径r,圆柱高h:n");

scanf("%f%f",&r,&h) ;

l= 2*pi*r ;

s= pi*r*r ;

sq= 4*pi*r*r ;

vq= 4.0/3*pi*r*r*r ;

vz= pi*h*r*r ;

printf("圆周长为:%.2fn",l );

printf("圆面积为:%.2fn", s );

printf("圆球表面积为:%.2fn", sq );

printf("圆球体积为:%.2fn", vq );

printf("圆柱体积为:%.2fn", vz );

}

(3) 下列程序的功能为:通过键盘输入两个整数,分别存入变量x、y中,当x

#include

22该程序的运行结果:

enter x,y:2 3.4

x+y=5.4

43r;圆柱体积vz=hr2),请补充完3该程序的运行结果:

请输入圆半径r,圆柱高h:

1.5 3

圆周长为:9.42

圆面积为:7.07

圆球表面积为:28.27

圆球体积为:14.14

圆柱体积为:21.21

该程序的运行结果:

8

请输入x,y:

3 5

交换后的x:5 y:3

main()

{ int x,y,t;

printf("请输入x,y:n");

scanf("%d%d",&x,&y) ;

if (x

{ t =x ; x=y ; y=t;} /* x与y交换 */

printf("交换后的x:%d y:%d n",x,y);

}

3.编程题

(1)编写一个程序实现如下功能:从键盘输入3个字符,然后在屏幕上分3行输出该3个字符。程序以文件名sy3_7.c保存。

#include

main()

{

char c1,c2,c3;

c1=getchar();

c2=getchar();

c3=getchar();

putchar(c1);

putchar('n');

putchar(c2);

putchar('n');

putchar(c3);

putchar('n');

}

(2)编写一个程序实现如下功能:输入一元二次方程ax2+bx+c=0的系数a、b、c,求方程的根。要求:运行该程序时,输入a、b、c的值,分别使b2-4ac的值大于、等于和小于零,观察并分析运行结果。程序以文件名sy3_8.c保存。求根公式如下:

#include

#include

void main()

{float a,b,c,disc,x1,x2,p,q;

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

disc=b*b-4*a*c;

p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1=p+q;

x2=p-q;

printf("x1=%5.2fnx2=%5.2fn",x1,x2);

9

该程序的运行结果:

ABC

A

B

C

该程序的运行结果:

a=1,b=3,c=2

x1=-1.00

x2=-2.00

.

.

.

.

.

}

#include

#include

void main()

{float a,b,c,disc,x1,x2,p,q;

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

if (a==0)

printf("不是二次方程n");

disc=b*b-4*a*c;

printf("无实根n");

else

if (disc<0)

else

if (disc==0)

{p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1=p+q;

x2=p-q;

}

else

{p=-b/(2.0*a);

printf("有两个相同的实根n");

printf("x1=%5.2fnx2=%5.2fn",x1,x2);

q=sqrt(disc)/(2.0*a);

x1=p+q;

x2=p-q;

}

实验四 选择结构程序设计

(解答)

1.改错题

(1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c保存。

10

}

printf("有两个不同的实根n");

printf("x1=%5.2fnx2=%5.2fn",x1,x2);

#include

main()

{

char ch,c1,c2;

printf("Enter a character:");

ch=getchar();

if((ch>='a')||(ch<='z')) // if((ch>='a')&&(ch<='z'))

ch-=32;

c1=ch-1;

c2=ch+1;

if(ch='A') // if(ch=='A')

c1=ch+25;

else if(ch='Z') // else if(ch=='Z')

c2=ch-25;

putchar(c1);

putchar(ch);

putchar(c2);

putchar('n');

}

改正后的程序:

#include

main()

{

char ch,c1,c2;

printf("Enter a character:");

ch=getchar();

if((ch>='a')&&(ch<='z'))

ch-=32;

c1=ch-1;

c2=ch+1;

if(ch=='A')

c1=ch+25;

else if(ch=='Z')

c2=ch-25;

putchar(c1);

putchar(ch);

putchar(c2);

putchar('n');

}

(2)下列程序的功能为:输入3个整数后,输出其中最大值。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c保存。

#include "stdio.h"

main()

11

该程序的运行结果:

Enter a character:g

FGH

该程序的运行结果:

请输入3个整数:

5 2 7

3个数中最大者为:7

{

int a,b,c,max;

printf ("请输入3个整数:n");

scanf ("%d%d%d",&a,&b,&c);

max=a;

if (c>b)

{ if (b>a) max=c;} /* c>b>a */

else /* b>c */

{if (c>a) max=b;} /* b>c>a */

printf("3个数中最大者为:%dn",max);

}

改正后的程序:

#include "stdio.h"

main()

{

int a,b,c,max;

printf ("请输入3个整数:n");

scanf ("%d%d%d",&a,&b,&c);

max=a;

if (c>b)

{ if (c>a) max=c;}

else

{if (b>a) max=b;}

printf("3个数中最大者为:%dn",max);

}

(3)下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。例如,输入“3”,则输出“Mar”。纠正程序中存在错误,以实现其功能。程序以文件名sy4_3.c保存。

#include "stdio.h"

main()

{

char m;

printf(“input the month number:n”);

scanf (“%c”,&m);

switch (m)

{

case 1:printf (“Jan”);

case 2:printf (“Feb”);

case 3:printf (“Mar”);

case 4:printf (“Apr”);

}

}

改正后的程序:改法一

12

该程序的运行结果:

input the month number:

2

Feb

#include "stdio.h"

main()

{

char m;

printf("input the month number:n");

scanf ("%d",&m);

switch (m)

{

case 1:printf ("Jan");break;

case 2:printf ("Feb");break;

case 3:printf ("Mar");break;

case 4:printf ("Apr");

}

}

改法二

#include "stdio.h"

main()

{

char m;

printf("input the month number:n");

scanf ("%c",&m);

switch (m)

{

case ‘1’:printf ("Jan");break;

case ‘2’:printf ("Feb");break;

case ‘3’:printf ("Mar");break;

case ‘4’:printf ("Apr");

}

}

2.程序填空

(1) 下列程序的功能为:判断从键盘上输入的一个字符,并按下列要求输出。

若该字符是数字 输出字符串"0-9"

若该字符是大写字母 输出字符串"A-Z"

若该字符是小写字母 输出字符串"a-z"

若该字符是其他字符 输出字符串"!,@,…"

补充完善程序,以实现其功能。程序以文件名sy4_4.c保存。

#include

main()

{ char c;

scanf(___"%c", &c _________);

if('0'<=c&&c<='9')

_____ printf("0-9n");______

13

该程序的运行结果:

d

a-z

else if(___c>='A' && c <='Z'______)

printf("A-Zn");

____ else if _______('a'<=c&&c<='z')

printf("a-zn");

____ else __________________

printf("!,@,…n");

}

(2)下列程序的功能为:实现加、减、乘、除四则运算。补充完善程序,以实现其功能。程序以文件名sy4_5.c保存。

#include

main()

{

int a,b,d;

}

(3)下列程序的功能为:猜价格,用户输入自己估计的价格,程序判断其正确性。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c保存。

#include "stdio.h"

main()

{float a,b;

14

char ch;

printf("Please input a expression:");

scanf("%d%c%d", &a,&ch,&b );

switch(ch)

{

case '+':d=a+b;

}

printf("%d+%d=%dn",a,b,d);

break;

printf("%d-%d=%dn",a,b,d);

break;

printf("%d*%d=%dn",a,b,d);

break;

if( b==0 )

printf("Divisor is zeron");

printf("%d/%d=%fn",a,b,( float )a/b); /*强制类型转换*/

else

break;

printf("Input Operator error!n");

该程序的运行结果:

Please input a expression:2*6

2*6=12

case '-':d=a-b;

case '*':d=a*b;

case '/':

default:

该程序的运行结果:

请主持人输入时尚手机的实际价格

1500

printf("请主持人输入时尚手机的实际价格n");

scanf("%f",&b);

printf("nn请观众猜时尚手机的价格n");

scanf("%f",&a);

if( a

printf("低了n");

if( a= =b )

printf("猜对了!n");

if( a>b )

printf("高了n");

}

3.编程题

(1)从键盘输入三个整数,输出这三个整数的和、平均值(保留2位小数)、积、最小值以及最大值。程序以文件名sy4_7.c保存。

参考源程序

#include

main()

{

int sum=0, a, b, c, max, min;

long ji=0;

float ave;

printf("输入三个整数:(a=? b=? c=?)n");

scanf("a=%d b=%d c=%d", &a, &b, &c);

sum=a+b+c;

ave=sum/3.0;

ji=a*b*c;

max=((a>b?a:b)>c)?(a>b?a:b):c;

min=a;

if (b

min=b;

if(c

min=c;

printf("a+b+c=%d a*b*c=%ld ave=%.2f", sum,ji, ave);

printf("nmax=%d min=%dn", max, min);

}

(2)有一分段函数如下,要求用scanf函数输入x的值,求y值并在屏幕上输出。程序以文件名sy4_8.c保存。

0 x<5

y = x-1 5≤x<15

6x2-1 x≥15

参考源程序

15

#include

void main()

{ float x,y;

scanf("%f", &x);

if(x<5) y=0;

else if(x<15) y=x-1;

}

(3)从键盘输入一个数字0~6,输出相应星期几的英文单词,其中数字0对应Sunday,数字1~6对应Monday~Saturday,如果输入的不是0~6的数字,则显示错误信息。程序以文件名sy4_9.c保存。

参考源程序

#include

main()

{

int m;

printf("请输入数字(0-6):");

scanf ("%d",&m);

switch (m)

{

case 0:printf ("Sunday ");break;

case 1:printf ("Monday ");break;

case 2:printf ("Tuesday ");break;

case 3:printf ("Wednesday ");break;

case 4:printf ("Thursday ");break;

case 5:printf ("Friday ");break;

case 6:printf ("Saturday ");break;

default:printf ("数据输入错误。");

}

}

else y=6*x*x-1;

printf("x=%f, y=%fn", x,y);

实验5 循环结构程序设计

一、实验目的

1.掌握循环结构程序设计的3种控制语句——while语句、do···while语句、for语句的使用方法。

2.了解用循环的方法实现常用的算法设计。

二、实验内容

1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)

(1)下列程序的功能为:求1~100之和(和值为5050)并输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_1.c保存。

#include

main()

{

16

该程序的运行结果:

The sum from 1 to 100 is 5050

int i,sum=0;

i=1;

while(i<100) while(i<=100)

sum=sum+i; { sum=sum+i;

i++; i++;}

printf(“The sum from 1 to 100 is %dn”,sum);

}

(2)下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其功能,程序以文件名sy5_2.c保存。

#include

main()

{

char x;

x='z';

while(x!='a') while(x!='a'-1)或while(x>='a')

{

printf("%3d",x); printf("%3c",x);

x++; x- -;

}

}

(3)下列程序的功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。纠正程序中存在的错误,以实现其功能。程序以文件名sy5_3.c保存。例如,输入字母D,打印出如下图形:

#include

main()

{

int i,j,k;

char ch;

scanf("%c",&ch);

k=ch-'A'+1;

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

{

for (j=20;j>=i;j--)

printf("%c",' ');

for (j=1;j<=i-1;j++) for (j=1;j<=2*i-1;j++)

printf("%c",'A'+i-1);

printf("n");

}

k=ch-'A';

for (i=k;i>=1;i--)

{ for (i=20;i>=i;i--) for (j=20;j>=i;j--)

printf("%c",' ');

for (j=1;j<2*i-1;j++) for (j=1;j<=2*i-1;j++)

17

该程序的运行结果:

printf("%c",'A'+i-1);

printf("n");

}

}

2.程序填空题

(1)用辗转相除法求两个正整数的最大公约数和最小公倍数。补充完善程序,以实现其功能,程序以文件名sy5_4.c保存。

#include

main ()

{ int r, m, n,k, t ;

scanf ("%d%d",&m,&n);

if (m

{ t=m;

k=m*n;

r = m%n;

while (r)

{ m=n;

n=r;

r= m%n ;

}

printf ("%d %dn", n , k/n ); /*输出最大公约数和最小公倍数*/

}

(2)假设有1020个西瓜,第一天卖了一半多两个,以后每天卖剩的一半多两个,求几天后能卖完。补充完善程序,以实现其功能。程序以文件名sy5_5.c保存。

#include

main( )

{ int day,x1,x2;

day=0;

x1=1020;

while( x1>0 )

{

x2= x1/2-2 ;

x1=x2;

day++;

}

printf("day=%dn",day);

}

(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数.补充完善程序,以实现其功能。程序以文件名sy5_6.c保存。

#include

main()

{ int i,j;

for(i=0; __ i<10 _____; i++)

{ j=i*10+6;

18

m=n; n=t; } /*交换两数*/

该程序的运行结果:

该程序的运行结果:

day=8

该程序的运行结果:

if (___ i%3!=0 ____)

continue;

printf("%d",j);

}

}

3.编程题(写出程序运行结果)

(1)计算1~100之间所有含8的数之和。程序以文件名sy5_7.c保存。

参考程序:

#include

main()

{

int i, sum=0;

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

if(i%10==8 || i/10==8)

sum+=i;

printf("sum=%dn",sum);

}

(2)编写程序,利用下列近似公式计算e值,误差应小于10-5。程序以文件名sy5_8.c保存。

e1参考程序:

1111…

n!1!2!3!#include

main()

{

int i=0 ;

long n=1;

float e=0, t=1;

while(t>1e-5)

{

e+=t;

i++;

n*=i;

t=1.0/n;

}

printf("e=%fn",e);

}

该程序的运行结果:

(3)某学校有近千名学生,在操场上排队,若5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生总人数。程序以文件名sy5_9.c保存。

参考程序:

19

该程序的运行结果:

#include

main()

{int i;

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

if(i%5==2&&i%7==3&&i%3==1)

}

(4)从键盘输入N个学生的学号和每人M门课程的成绩,计算每个学生的总分及平均分。输出内容包括每个学生的学号、总分和平均分。程序以文件名sy5_10.c保存。

#include

void main()

{

int i,j,n,m,no,score,sum;

float ave;

printf("输入学生数和每人课程数:");

scanf("%d%d",&n,&m);

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

{ sum=0;

}

}

printf("输入第%d个学生的学号: ",i);

scanf("%d",&no);

printf("输入第%d个学生的%d门课程成绩: ",i,m);

for(j=1;j<=m;j++)

{

scanf("%d",&score);

sum+=score;

}

ave=(float)sum/m;

break;

printf("学生总人数=%dn",i);

printf("n**第%d个学生的学号为:%d 总分为:%d 平均分为:%.2fnn",i,no,sum,ave);

实验6 数组程序设计

一、实验目的

1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。

2. 掌握字符数组和字符串函数的使用。

3. 掌握与数组有关的算法。

二、实验内容

1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)

20

(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c保存。

#include

void main()

{int n=10,i,sum=0;

int a[n]; int a[10];

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

{

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

sum=sum+a[i];

}

printf("sum=%dn",sum);

}

(2)下列程序的功能为:将字符串b连接到字符串a。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_2.c保存。

#include

void main( )

{ char a[]="wel",b[]="come"; char a[20]="wel",b[]="come";

int i,n=0;

while(!a[n]) n++; while(a[n] != '0') n++;

for(i=0;b[i]!='0';i++)

a[n+i]=b[i];

a[n+i]=’0’;

printf("%sn",a);

}

(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_3.c保存。

#include

#define N 4

#define M 4

main()

{

int i,j,k,flag1,flag2,a[N][M],max,maxj;

for (i=0;i

for (j=0;j

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

flag2=0;

for (i=0;i

{

max=a[j][0]; max=a[i][0];

for (j=0;j

if (a[i][j]>max) if (a[i][j]>=max)

{

max=a[i][j];

maxj=j;

}

for (k=0,flag1=1;k

if (max>a[k][maxj])

flag1=0;

if (flag1)

{

printf("nThe saddle point is:a[%d][%d]=%dn",i,maxj,max);

flag2=1;

}

}

if ( flag2) if (! flag2)

printf("nThere is no saddle point in the Matrixn");

}

2.程序填空题

(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。补充完善程序,以实现其功能。程序以文件名sy6_4.c保存。

21

#include "stdio.h"

#define N 10

main()

{

int a[ ]={0,1,2,3,4,5,6,7,8,9},k;

int low=0,high=N-1,mid,find=0;

printf("请输入欲查找的值:n");

scanf("%d",&k);

while (low<=high)

{

mid=(low+high)/2;

if(a[mid]==k)

{

printf("找到位置为:%dn",mid+1);find=1;

}

if(a[mid]>k)

_ high=mid-1 ;

else

_ low=mid+1_____;

}

if(!finD. printf("%d未找到n",k);`

}

(2)以下程序的功能是:求3个字符串(每串不超过20个字符)中的最大者。补充完善程序,以实现其功能。程序以文件名sy6_5.c保存。

#include

#include

void main()

{

char string[20],str[3][20];

int i;

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

gets(str[i]);

if ( strcmp(str[0],str[1])>0 ) strcpy(string,str[0]);

else strcpy(string,str[1]);

if ( strcmp(string,str[2])<0 ) strcpy(string,str[2]);

puts(string);

}

(3)下列程序的功能为:从键盘输入20个整数,统计非负数个数,并计算非负数之和。补充完善程序,以实现其功能。程序以文件名sy6_6.c保存。

#include

main()

{ int i,a[20],sum=0,count;

count=0;

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

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

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

{ if(a[i]<0)

22

continue;

sum+=a[i];

count++;

}

printf("s=%dt count=%dn",sum,count);

}

3.编程题(写出程序运行结果)

(1)从键盘输入10个数,用选择排序法将其按由大到小的顺序排序;然后在排好序的数列中插入一个数,使数列保持从大到小的顺序。程序以文件名sy6_7.c存盘。

#define N 11

#include

void main()

{ int a[N],i,j,k,t,p;

printf("请输入%d 个整数 :n",N);

for(i=0;i

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

for(i=0;i

{ k=i;

for(j=i+1;j

if(a[k]>a[j])

k=j;

if(k!=i)

{ t=a[k]; a[k]=a[i]; a[i]=t;}

}

printf("n排序后:n");

for(i=0;i

printf("%5d",a[i]);

printf("n请输入插入整数: ");

scanf("%d",&p);

j=9;

while(j>=0 && a[j]>p) //找插入位置

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

a[j+1]=p; //插入

printf("n插入后:n");

for(i=0;i

printf("%5d",a[i]);

printf("n");

}

(2)从键盘输入两个矩阵A、B的值,求C=A+B 。程序以文件名sy6_8.c存盘。

357A12136

4B68101316#include

void main()

{

int a[2][3],b[2][3],c[2][3],i,j;

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

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

23

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

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

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

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

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

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

c[i][j]=a[i][j]+b[i][j];

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

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

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

printf("n");

}

}

(3)从键盘输入一个字符串,删除其中某个字符。如输入字符串“abcdefededff”,删除其中的字符e,则输出的字符串为“abcdfddff”。程序以文件名sy6_9.c存盘。

//方法一:

#include

#include

void main()

{

int i,j;

char s[80],c;

printf("输入一行字符: ");

gets(s);

printf("输入要删除字符: ");

scanf("%c",&c);

for(i=0,j=0;s[i]!='0';i++)

if (s[i]!=c)

s[j++]=s[i];

s[j]='0';

puts(s);

}

//方法二:

#include

#include

void main()

{char line[80] ;

char ch;

int i,j;

int len;

printf("输入一行字符: ");

gets(line) ;

printf("输入要删除字符: ");

ch=getchar();

i=0;

while(line[i]!='0' )

{while( line[i]!='0' && line[i]!=ch) i++;

len=strlen(line);

for(j=i;j

line[j]=line[j+1];

line[j]='0';

}

puts(line);

}

24

实验7 函数程序设计

一、实验目的

1.掌握函数定义的方法。

2. 掌握函数实参与形参的传递方式。

3. 掌握函数的嵌套调用和递归调用的方法。

4. 了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。

二、实验内容

1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)

(1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。

#include

#include

void sub( char s[], char t[] )

{

int i, d;

d=strlen( s );

for( i=1; i< d ; i++ ) for( i=0; i< d ; i++ )

t[i]=s[d-1-i] ;

for( i=0; i

t[d+i]=s[i] ;

t[2*d]='/0' ; t[2*d]='0'

}

main( )

{

char s[100], t[100];

printf( " Please enter string s : " );

scanf("%s" , s );

sub(s,t) ;

printf( " n The result is : %s n ", t );

}

(2)下列程序的功能为:将字符数组中的字符串逆序输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_2.c存盘。

#include

#include

#define ARR_SIZE = 80; #define ARR_SIZE 80

void Inverse(char str[]) void Inverse(char str[]);

main()

{ char a[ARR_SIZE] ;

printf("Please enter a string: ");

gets(a);

Inverse(char a[]); Inverse(a);

printf ("The inversed string is: ");

25

puts(a);

}

void Inverse(char str[])

{ int len, i = 0, j;

char temp;

len = strlen(str);

for (j=len-1; i

{ temp = str[i];

str[j] = str[i]; str[i] = str[j];

str[j] = temp;

}

}

(3)下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_3.c存盘。

#include

int fun(int n)

{ static int p=1;

p=p*n;

return p;

}

void main()

{ int n,i;

int f=0; int f=1;

printf("input member: ");

scanf("%d",&n);

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

f=f*fun(i); f= fun(i);

printf("%d!=%dn",n,f);

}

2.程序填空题

(1)下列sum()函数的功能是:计算数组x前n个元素之和。在主函数中,输入10个任意整数和下标i1、i2的值(设1≤i1≤i2≤9),调用sum()函数计算从第i1元素到第i2元素的和,并输出结果。补充完善程序,以实现其功能。程序以文件名sy7_4.c存盘。

#include

int sum( int x[], int n )

{

}

void main()

{

int i, i1, i2, result;

26

int i, s=0;

for ( i=0; i

s = s+x[i] ;

return s;

}

int x[10];

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

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

scanf( "%d%d", &i1, &i2 );

result = sum( x+i1, i2-i1+1 );

printf( "Sum=%dn", result );

(2)下列程序的功能为:输入一个字符数小于100的字符串string,然后将string所存盘字符串中的每个字符之间加一个空格。补充完善程序,以实现其功能。程序以文件名sy7_5.c存盘。

#include

#include

#define MAX 100

void Insert(char srcStr[]);

main()

{

char string[MAX];

scanf("%s",string);

Insert( string );

printf("%s",string);

}

void Insert(char srcStr[])

{ char strTemp[MAX];

int i = 0, j = 0;

strcpy(strTemp, srcStr);

while ( j

{ srcStr[i] = strTemp[j];

i++;

j++;

srcStr[i] = ' ';

i++;

}

srcStr[i] = '0';

}

strTemp[j]!=’0’

27

(3)下列程序的功能为:输出如下图形,补充完善程序,以实现其功能。程序以文件名sy7_6.c保存。

#include

void a(int i)

{

int j,k;

for(j=1;j<=30-i;j++) printf("%c",' ');

for(k=1;k<= 2*i-1 ;k++) printf( “%c”,i+48 );

printf("n"); or “%d”,i

}

void main()

{ int i;

for(i=1;i<=7;i++) a(i) ;

for(i=6;i>=1;i--) a(i) ;

}

3.编程题

(1)从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。程序以文件名sy7_7.c存盘。

#include

#define N 10

void EXmaxmin(int a[],int n) //求最大数和最小数

{

int i,j=0,k=0,t;

int max,min;

max=a[0]; min=a[0];

for(i=1;i

if(max

else if(min>a[i]) { min=a[i]; k=i;}

t=a[j];

a[j]=a[k];

a[k]=t;

}

void main()

{

int i;

int a[N];

printf("请输入%d个整数:",N);

for(i=0;i

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

printf("调整前的数组元素为:");

for(i=0;i

printf("%5d",a[i]);

printf("n");

EXmaxmin(a,N);

28

printf("调整后的数组元素为:");

for(i=0;i

printf("%5d",a[i]);

}

(2)编写一函数,判断一字符串是否为回文。所谓“回文”是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的5个字符串统计其中回文的个数。程序以文件名sy7_8.c存盘。

#include

#include

int function(char x[])

{

int i;

int y=strlen(x);

for(i=0;i

if(x[i]!=x[l-i-1])

return 0;

return 1;

}

void main()

{

char s[100];

int count=0,i;

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

{ printf("输入第%d个字符串:",i);

}

(3)编写一函数,实现将一个十进制数转换成二进制数。程序以文件名sy7_9.c存盘。

#include

int n=0;

void tentotwo(int number,int b[ ])

{

while(number)

{

}

29

b[n]=number%2;

n++;

number=number/2;

scanf("%s",s);

{printf("%s是回文n",s);count++;}

else printf("%s不是回文n",s);

}

if(function(s))

printf("共有回文%d个n",count);

}

void main(void)

{

int inumber;

int a[20],i;

printf("please input nunber: ");

scanf("%d",&inumber);

printf("n");

tentotwo(inumber,a );

for(i=n-1;i>=0;i--)

printf("%d",a[i]);

printf("n");

}

30


本文标签: 程序 功能 输出