当前位置:文档之家› C程序设计实验与练习册(重修用)new

C程序设计实验与练习册(重修用)new

目录

实验1 C程序运行环境及简单程序的运行 (1)

习题1 (1)

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

习题2 (3)

实验3 顺序结构程序设计 (5)

习题3 (6)

实验4 选择结构程序设计 (8)

习题4 (9)

实验5 循环结构程序设计 (11)

习题5 (13)

实验6 数组程序设计 (18)

习题6 (20)

实验7 函数程序设计 (24)

习题7 (26)

实验8 指针程序设计 (29)

习题8 (30)

实验1 C程序运行环境及简单程序的运行

一改错题

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

(1)下列程序的功能为:计算x*y的值并将结果输出;请纠正程序中存在错误(程序中有8处错误),使程序实现其功能,程序以文件名sy1_2.c存盘。

#include

main

{ int x=2;y=3;a

A=x*y

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

printf("\n");

}

(2)下列程序的功能为:计算圆面积并将结果输出;请纠正程序中存在错误(程序中有8处错误),使程序实现其功能,程序以文件名sy1_3.c存盘。

#include stdio.h;

main();

float r;area;

r=5.0;

area=3.14159r*r;

printf("area=%d\n",area)

习题1

一、选择题

1.C源文件的扩展名为()A)cpp B)txt C)c D)exe

2.C的合法注释是()A) /*This is a C program /* B) /* This is a C program */

C) */This is a C program */ D) /* This is a C program

3.C语言中语句的结束符是()A), B); C)。 D)、

4.以下叙述正确的是()A)组成C程序的是语句

B)组成C程序的是main()函数

C)C程序总是从main()函数开始执行

D)C程序中,注释只能位于一条语句之后

5.在一个C语言程序中下列说明正确的是()A)main()函数必须出现在所有函数之前

B)main()函数可以在任何地方出现

C)main()函数必须出现在所有函数之后

D)main()函数必须出现在固定位置

6.C语言程序的基本单位是()A)程序 B)语句 C)字符 D)函数

7.main()函数后面的一对圆括号()A)必须有 B)可有可无 C)不需要 D)仅有main()一个函数时才需要

8.以下叙述正确的是()A)C语言的源程序不必通过编译就可以直接运行

B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C)C源程序经编译形成的二进制代码可以直接运行

D)C语言中的函数不可以单独进行编译

9.编译程序的功能是 ( ) A)建立并修改程序 B)将C源程序编译成目标程序

C)调试程序 D)命令计算机执行指定的操作

10.二进制语言是属于()A)面向机器语言B)面向问题语言C)面向过程语言D)面向汇编语言

二、填空题

1.C程序是由函数构成的。其中有并且只能有个主函数。一个函数由两部分组成:函数的首部和。

2.C程序必须要有一个函数,而且只能有一个。C语言程序总是从函数开始执行,并且终止于该函数。

3.用高级语言编写的源程序必须通过___________程序翻译成二进制程序才能执行,这个二进制程序称为____________程序。

4.C语言源程序文件的后缀是,经过编译后,生成文件的后缀是,经过连接后,生成文件的后缀是。

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

2.改错题

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

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

#include stdio.h

main();

{ float r=10,h=5;

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

printf("v=%d\n",v)

}

3.程序填空

(2) 下列程序的功能为:从键盘输入3个整数分别存入变量a、b、c,然后,将变量a 的值存入变量b,将变量b的值存入变量c,将变量c的值存入变量a,输出经过转存后变量a、b、c的值。(提示:使用中间变量)。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy1_9.c存盘。

#include

main ()

{

int a,b,c, ;

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

scanf("%d%d%d", );

;

;

;

;

printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

习题2

一、选择题

1.以下关于C语言用户标识符的正确叙述是()

A)用户标识符中可以出现下划线和中划线(减号)

B)用户标识符中不可以出现中划线,但可以出现下划线

C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头

2.下列符号串中,属于C语言合法标识符的是()

A)else B)a-2 C)_123 B)123

3.下面不正确的C语言字符串常量是()

A) 'abcdef ' B) "2121" C) "8" D) " "

4.以下选项中合法的C语言字符常量是()

A) ‘\082 ' B) "B" C) ‘ab’ D) ‘\x43’

5.字符串“pm\x56\\\n\102wq”的长度是()

A) 8 B) 10 C) 16 D) 17

6.在C语言中,5种基本数据类型的存储空间长度的排列顺序为()

A) char

B) char=int

C) char

D) char=int=long int<=float

7.在C语言中,要求运算数必须是整型的运算符是()

A)/ B)++ C)!= D)%

8.下列表达式中,不属于逗号表达式的是 ( ) A )a =b,c B )a,b =c C )a =(b,c) D ) a,(b =c) 9.执行语句“x=(a=3,b=a--);”后,x ,a ,b 的值依次为( ) A )3,3,2 B )2,3,2 C )3,2,3 D )2,3,3

二、填空题

1.C 语言所提供的基本数据类型包括:单精度型、双精度型、 、 2.若x 和n 均是int 型变量,且x 的初值为12,n 的初值为5,则计算表达式x%=(n%=2)后,变量x 的值为

3.若定义int m=8,y=3;则执行y*=y+=m-=y ;后y 的值是 4.若定义int b=18;float a=3.5,c=6.7;则下面表达式的值为________

a+(int)(b/3*(int)(a+c)/2)%4

5.表达式 5.7 + 2/19= 。若定义int a=4,b;则表达式(b=6*5,a*4),a+16的值是______

6.将数学式b

a x )(sin 2转换成C 语言表达式为:

7.运算符“++”、“,”、“%”、“=”中,优先级最高的是________

8.十进制数123,转换为二进制数为 ,转换为八进制数为 ,转换为十六进制数为

9.设整型变量 x 、y 、z 均为3,则执行"x-=y-x"后,x= ,执行"x%=y+z"后,x=

三、读程序,写结果

1. #include

main( ) {

int i,j,m,n;

i=(j=5,m=j--); n=++j; printf("%d,%d,%d,%d\n",i,j,m,n);

}

3. #include

main( ) {

char a =?B?,b=33; a=a-'A'+'0';b*=2; printf("%c%c\n",a,b); }

实验3 顺序结构程序设计

1.改错题

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

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

)32(9

5

F ,输出取2位小数。请纠正程序中存在的错误(程序中有3处错误),使程序实现其功能,程序以文件名sy2_1.c 存盘。

#include main() {

float c ,f ;

printf("请输入一个华氏温度:\n"); scanf("%f",f); c==(5/9)*(f-32);

printf("摄氏温度为:%5.2f\n"c); }

(2)下列程序的功能为:按下列公式计算并输出x 的值。其中a 和b 的值由键盘输入。 x=2ab/(a+b)2

请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy2_2.c 存盘。

#include main()

{ int a,b; float x;

scanf("%d,%d",a,b); x=2ab/(a +b)(a +b); printf("x=%d \n",x); }

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

#include main() {

char c1,c2;

c1=getchar; /* 输入大写字符 */ printf("%c,%d\n",c1,c1);

c2=c1+26; /* 转变为小写 */

printf("%c,%d\n",c2,c2); /* 输出 */ }

2.程序填空

(1)下列程序的功能为:给定格式输入数据,按输出要求输出结果,请填写适当的符号或语句,使程序实现其功能,程序以文件名sy2_4.c存盘。

输入形式enter x,y:2 3.4

输出形式x+y=5.4

#include

main()

{

int x;

float y;

printf ("enter x,y: ");

}

习题3

一、选择题

1.C语言中数据的输入和输出由()完成。

A)语句 B)函数 C)表达式 D)命令

2.要输入实数,用格式字符()。

A)%d B)%c C)%f D)%s

3.格式说明由()和格式字符组成。

A)% B)\ C)’ D)”

4.要输出double型的数据,用()

A)%f B)%lf C)%d D)%c

5.从终端输入一个字符,可以用函数()

A)getchar( ) B)putchar( ) C)gets( ) D)puts( )

6.putchar( )函数可以向终端输出一个()

A)整型变量表达式 B)实型变量值 C)字符串 D)字符或字符型变量

7.要实现多个混合数据的输入输出,用函数()

A)getchar( ),putchar( ) B)getchar( ),printf( )

C)scanf( ),printf( ) D)scanf( ),putchar( )

8.设n=10,i=4、则赋值运算n%=i+1执行后,n的值是( )

A)0 B)3 C)2 D)1

9.设变量a是整型,f是实型,i是双精度型,则表达式10+ 'a '+i*f值的数据类型为( )

A)int B)float C)double D)不确定

10.有以下程序:

main( )

{

int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d,%d,%d\n",m,n,p);

}

若想从键盘上输入数据,使变量m的值为123,n的值为456,p的值为789,则正确的输入是()

A)m=123n=456p=789 B)m=123 n=456 p=789

C)m=123,n=456,p=789 D)123 456 789

二、填空题

1.要使用标准的I/O库函数,必须在程序的开头加上文件包含命令。2.格式化输出函数是,它的功能是按照用户指定的格式,在标准输出设备上输出数据。

3.%m.nf表示数据输出的总宽度占列,其中小数部分占列。

4.格式化输入函数是,它的功能是按照指定格式要求,从终端把数据依次传送到输入项地址列表所指定的内存空间中。

5.语句printf ("%3s,%7.2s,%.4s,%-5.3s\n", "CHINA","CHINA", "CHINA", "CHINA" ); 执行后的结果为_________________________________

6.若有定义char c1='A',c2='D';已知字符?A?的ASCII码值是65,则执行语句printf("%d,%c",c1,c2-2);后的输出结果是

9.#include

main()

{ float x,y,z;

scanf(" ", );

z=2*x*sqrt(y);

printf("z=%5.2f",z);

}

10.#include

main()

{ char ch;

=getchar( );

putchar( );

}

实验4 选择结构程序设计

1.改错题

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

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

#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.程序填空

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

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

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

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

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

请填写适当的符号或语句,使程序实现其功能,程序以文件名sy3_4.c存盘。

#include

main()

{char c;

scanf(_____________________);

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

__________________________

else if(________________________)

printf("A-Z\n");

___________( c >='a' &&c<='z')

printf("a-z\n");

_____________________

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

}

3.编程题

(1)编写一个程序实现如下功能:从键盘输入三个整数,输出这三个整数的和、平均值(保留2位小数)、积、最小值以及最大值(程序以文件名sy3_7.c存盘)。

(2)编写一个程序实现如下功能:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变(程序以文件名sy3_8.c存盘)。

习题4

一、选择题

1.逻辑运算符两侧运算对象的数据类型( )

A) 只能是0或1 B) 只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何类型的数据

2.以下关于运算符优先顺序的描述中正确的是( )

A) 关系运算符<算术运算符<赋值运算符<逻辑与运算符

B) 逻辑与运算符<关系运算符<算术运算符<赋值运算符

C) 赋值运算符<逻辑与运算符<关系运算符<算术运算符

D) 算术运算符<关系运算符<赋值运算符<逻辑与运算符

3.要判断char型变量m是否是数字字符,可以使用表达式( )

A) 0<=m && m<=9 B) '0'<=m && m<='9'

C) "0"<=m && m<="9" D) 0<=m & m<=9

4.设x,y和z是int型变量,且x=1,y=2,z=3,则下面表达式中值为0的是( )

A) x&&y B) x<=y C) x||y+z&&y-z D) !((x

5.为了避免嵌套的if-else语句的二义性,c语言规定else总是与( )组成配对关系。

A)缩排位置相同的if B)在其之前末配对的if

C)在其之前未配对的最近的if D)同一行上的if

6.假设有定义int a=1,b=2,c=3,d=4,m=2,n=2。则执行表达式: (m=a>b&&(n=c>d)后,n的值为( )

A)1 B)2 C)3 D)4

7.运行下列程序,其输出结果为()

#include

main( )

{

int a=2,b=-1,c=2;

if (a

if (b<0) c=0;

else c++;

printf(“%d”,c);

}

A)0 B)1 C)2 D)3

8.以下叙述中正确的是()

A)用C程序实现的算法必须要有输入和输出操作

B)用C程序实现的算法可以没有输出但必须要有输入

C)用C程序实现的算法可以没有输入但必须要有输出

D)用C程序实现的算法可以既没有输入也没有输出

9.执行以下程序后的输出结果是()

main()

{ int a,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);

}

A)6,1 B)2,1 C)6,0 D)2,0

10.下列运算符中优先级最低的是(),优先级最高的是( ) A)?: B)&& C)+ D)!=

二、填空题

1.C语言提供的3种逻辑运算符是、、

2.执行下述语句后,a= ,b= ,m= ,n=

int a=1, b=2, c=3, d=4, m=5, n=6;

a = ( m=a>

b ) && ( n =c>d ) || ++a = = b--;

3.有int x,y,z;且x=4,y=-5,z=6,则以下表达式的值为

!(x>y)+(y!=z)||(x+y)&&(y-z)

4.当a=1,b=2,c=3时,表达式x=a>b>c的值是

5.对n(>0)个人进行分班,每班k(>0)个人,最后不足k人也编一班,试用条件表达式表示要编班。

6.若有定义int a=10,b=20,c;则执行c=(a%b<1)||(a/b>1);后c的值为

7.若有定义int a=2,b=-1,c=2;则执行if (a

8.能正确表示x≤-5或x≥5关系的C语言表达式是

9.假定所有变量均已正确说明,执行下述程序段后x的值是

a=b=c=0; x=35;

if (!a) x--;

else if (b) if (c) x=3;

else x=4;

10.若有定义int w=5,x=2,y=3,z=4;则条件表达式w

三、读程序,写结果

1.#include

main( )

{ int k=2,a=4,b=5,c=1;

printf("\n%d\n",k

}

3.下列程序执行时的输入数据是“2473”,写出其输出结果。

#include

main()

{ int cx;

while((cx=getcher( )!='\n')

{ switch(cx-'2')

{ case 0:

case 1: putchar(cx+4);

case 2: putchar(cx+4);break;

case 3: putchar(cx+3);

default :putchar(cx+2);

}

}

}

4.#include

main( )

{

int x=3,y=0;

switch (x)

{

case 3:

switch(y)

{

case 0:printf("$$$$$\n");break;

case 9:printf("$$$$$\n");break;

}

case 2: printf("$$$$$\n");

}

}

实验5 循环结构程序设计

1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)(1)下列程序的功能为:求1~100之和(和值为5050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。

#include

main()

{

int i,sum=0;

i=1;

while(i<100)

sum=sum+i;

i++;

printf(“The sum from 1 to 100 is %d\n”,sum);

}

2.程序填空

(1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_4.c存盘。

提示:

“辗转相除法”求两个正整数的最大公约数的算法如下:

①将两数中大的那个数放在m中,小的放在n中。

②求出m被n除后的余数r。

③若余数为0则执行步骤(7);否则执行步骤(4)。

④把除数作为新的被除数;把余数作为新的除数。

⑤求出新的余数r。

⑥重复步骤(3)到(5)。

⑦输出n,n即为最大公约数。

#include

main ()

{

int r, m, n, ;

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

if (m

r = m%n;

while (r)

{ m=n;

n=r;

r= ;

}

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

}

(2)下列程序的功能为:计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个);请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_5.c存盘。

#include

main()

{

int day,x1,x2;

day=0;

x1=1020;

while( )

{

x2= ;

x1=x2;

day++;

}

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

(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c 存盘。

#include main() { int i,j;

for(i=0; ___________________; i++) { j=i*10+6;

if (________________________)

continue;

printf("%d",j); }

}

3.编程题

(1)编写一个程序实现如下功能:计算1~100之间所有含8的数之和(程序以文件名sy4_7.c 存盘)。

(2)编写一个程序实现如下功能:用下列近似公式计算e 值,误差应小于10-5(程序以文件名sy4_8.c 存盘)。

++++

=!31!21!111e …!

1n +

习题5

一、选择题

1.下述循环的循环次数是( )

int k=2;

while (k=0)printf ("%d",k ); k--;printf ("\n");

A )无限次

B )0次

C )1次

D )2次 2. 在下列选项中,没有构成死循环的程序段是( ) A )int i=100; B )for (;;); while (1) { i=i%100+1;

if (i>100)break ; }

C )int k=1000;

D )int s=36;

do {++k;} while(k>=10000);while(s);--s;

3.下面程序输出结果是()

main()

{ int k=0; char c='A';

do

{ switch( c++ )

{ case 'A': k++; break;

case 'B': k--;

case 'C': k+=2; break;

case 'D': k=k%2; continue;

case 'E': k=k*10; break;

default: k=k/3;

}

k++;

}while( c<'G' );

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

}

A)k=3 B)k=4 C)k=2 D)k=0

4.程序段:int num=0; while(num<=2) printf(“%d ,”,num++);的运行结果是()A)0,1, B) 1,2, C) 0,1,2, D) 1,2,3,

5.下面程序段的运行结果为 ( )

a=1,b=2,c=2;

while(a

printf("%d,%d,%d",a,b,c);

A) 1,2,0 B) 2,1,0 C) 1,2,1 D) 2,1,1

6.设有以下语句:

int x=3;

do

{

printf("%d\n",x-=2);

}

while(!(--x));

该程序段的执行结果为( )

A) 显示1 B) 显示1和-2 C) 显示0 D) 是死循环

7.下面有关for循环的正确描述是 ( )

A) for循环只能用于循环次数已经确定的情况

B) for是先执行循环体语句,后判断表达式

C) 在for循环中,不能用break语句跳出循环体

D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

8.执行下面的程序后,a的值为( )

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{ if(b>=20) break;

if(b%3==1)

{ b+=3; continue; }

b-=5;

}

}

A)7 B)8 C)9 D)10 9. C语言中while和do-while循环的主要区别是( )

A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比的循环控制条件严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

10.以下叙述正确的是()

A)continue语句的作用是结束整个循环的执行

B)只能在循环体内和switch语句体内使用break语句

C)在循环体内使用break语句或continue语句的作用相同

D)从多层循环嵌套中退出,只能使用goto语句

二、填空题

1.执行下列程序段后的输出是

x=l;

while(x<=3) x++,y=x+++x;

printf("%d,%d",x,y);

2.下列程序段的输出结果是

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

for( j=2;j> 0;j--)

printf("#");

3.执行下列程序段后的输出是________________

x=0;

while(x<3)

for(;x<4;x++)

{ printf(“%1d”,x++);

if( x<3) continue;

else break;

printf(“%1d”,x);

}

4.设定义int k=1,n=263;执行下面程序段后,k的值是

do

{

k*=n%10;

n/=10;

}

while(n);

5.执行该程序时,输出结果是

main()

{ int y=10;

do { y--;} while (--y);

printf("%d\n",++y);

}

6.运行下列程序,输入:1 100 2 20 3 50 0 0,其输出结果为#include

main()

{ int sum=0,a,b;

do

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

switch ( a )

{

case 1: sum+=b;break;

case 2: sum-=b;break;

}

} while ( a != 0 );

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

}

7.运行下列程序,输入:6 9,其输出结果为

#include

main()

{

int n1, n2, i;

scanf( "%d%d", &n1, &n2 );

for ( i = n1; i <= n1*n2; i++ )

if ( (i % n1 == 0) && (i % n2 == 0) )

break;

printf( "Max = %d\n", i );

printf( "Min = %d\n", n1*n2/i );

}

8.运行下列程序,其输出结果为

#include

main()

{ i nt i, j;

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

{ for ( j=1; j<=i; j++ )

printf( “%d*%d=%d”, i, j, i*j );

printf( “\n” );

}

}

9.运行下列程序,其输出结果为

#include

main()

{ int k=5,n=0;

while(k>0)

{ switch(k)

{ default : break;

case 1 : n+=k;

case 2 :

case 3 : n+=k;

}

k--;

}

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

}

10.下列程序的功能为:求1到100以内所有能被13整除的数的累加和,当累加和超出100时停止累加。请填写适当的符号或语句,使程序实现其功能。

#include

main( )

{ int i, sum = 0;

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

{ if ( ) sum += i;

if ( sum > 100 ) ;

}

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

}

三、读程序,写结果

1.#include

void main( )

{ int x=0,y=0,z;

while(y<6) x+= ++y;

printf("output1: %d %d\n",x,y);

for(y=1;y<6;y++) x=y;

printf("output2: %d %d\n",x,y);

for(y=1;y<6; )

{ x=y++;

z=++y;

}

printf("output3: %d %d %d\n",x,y,z);

}

2.#include

main()

{

int x=0,y=0;

while(x<12)

{ y++; x+=++y;}

printf("%d,%d\n",x,y);

}

3.#include

main( )

{ int a=1,b=10;

do

{

b-=a;

a++;

}

while(b--<0);

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

}

4.#include

main( )

{

int i;

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

{

if(i%2)

printf("$");

else

continue;

printf("&&");

}

printf("*\n");

}

实验6 数组程序设计

1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy5_1.c存盘。

#include

void main()

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

int a[n];

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

{

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

sum=sum+a[i];

}

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

}

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

#include

void main( )

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

int i,n=0;

while(!a[n]) n++;

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

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

a[n+i]=?\0?;

printf("%s\n",a);

}

2.程序填空

(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。请填写适当的符号或语句,使程序实现其功能,程序以文件名sy5_4.c存盘。

#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("找到位置为:%d\n",mid+1);find=1;

}

if(a[mid]>k)

__________________;

else

__________________;

}

if(!find) printf(“%d未找到\n”,k);`

}

3.编程题

(1)编写一个程序实现如下功能:任意输入10个整数的数列完成下列运算(程序以文件名sy5_7.c存盘):

①要求用选择排序法将数列由小到大排序;

②在排序好的数列中插入一个数,使数列保持从小到大的顺序。

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