C语言实训指导书 下载本文

一、实训目的

1、掌握一维数组的定义、数组元素的引用形式和赋值的方法 2、掌握一维数组的输入和输出的

3、掌握和一维数组有关的典型算法,如求菲波那契数列、最大数、查找、排序等 二、预习内容

1、预习一维数组的定义及引用的一般方法 2、熟悉循环语句和数组处理语句结合的方法 三、实训内容

1、分析和记录以下程序运行结果,并上机验证: main() # include stdio.h { main()

int v[5]; { int t, i; int i;

int a[10]={ 1,2,3,4,5,6,7,8,9,10 }; v[0]=197; v[2]=-100 t=a[9];

v[4]=350; v[5]=v[0]+v[2]; for ( i=9; i>1; i-=2) --v[4]; a[i]=a[i-2]; for (i=0;i<5;i++) a[1]=t;

printf( v[%d]=%d\\n, i, v[i] ); for ( i=0; i<10; i++ ) } printf( =, a[i] ); }

该程序的运行结果是 该程序的运行结果是:

、将程序补充完整,以完成以下功能,并上机调试。2 (中等难度题)a数组。(1)以下程序以每行输出4个数据的格式输出stdio.h #include a[12], i; int {

) ; for ( i=0; i<12; i++ ) scanf( %d, (i=0; i<12; i++ ) for

; ) { if ( a[i] ); printf( m, } printf( \\ ); }

14

(2)以下程序将数组中的数据按逆序存放。(中等难度题) # include stdio.h

#define SIZE 12 ; /*SIZE为常量12*/ main()

{ int a[SIZE], i, j, t;

for ( i=0; i

{ t=a[i]; ; ; i++; j ;}

for (i=0; i

(3)以下程序实现将数组a中的元素按从小到大的顺序排列。 # include stdio.h main()

{ int i, j, temp, a[10];

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

if ( ) { ; ; ; }

for ( ) printf( %d, a[i] ); }

7、编程题:

(1)读入10个整数,求出非负数个数及其和,并将10个整数按从小到大的次序输出。 (2)利用随机函数,生成10个50 ~ 60之间的随机整数,并判断是否有55,若有输出它在数组中的下标,否则输出“NO DATA!”。

15

一、实训目的

1、掌握二维数组的定义和引用;

2、掌握字符串的定义以及它和一维字符数组之间的关系和区别; 3、掌握字符串处理函数的功能和应用。 二、预习内容

1、二维数组的定义和二重循环之间的关系 2、字符串的概念 三、实训内容

1、分析和记录以下程序运行结果,并上机验证: main()

{ int num[4][4]={11,22,33,44,1,2,3,4,10,20,30,40,12,22,32,42}; int i, j, s=0;

for (j=0; j<3; j++) 该程序的运行结果是: for ( i=0; i<3; ++i )

if ( i==j ) s+=num[j][i];

printf( %d\\n, s); } main()

j, m, n, a, x[3][4]={43,32,22,13,11,22,33,44,55,11,32,31}; i, {int a=x[m][n]; m=n=0;

该程序的运行结果是: for (i=0;i<3; i++) for ( j=0; j<4; j++)

if ( a>x[i][j] ) { m=i; n=j; a=x[m][n]; }

printf(a=%d, m=%d n=%d\\n, a, m, n ); }

2、若有三个字符串s1、s2和s3,其中?尽扡摣晥,?尽㈱??,要求用字符数组实现将s1的内容复制到s3中,交将s2的内容添加到s3的后面,最后输出s3。 main()

{ char s1=abcdef, s2=S456,s3[20]=\\; i=0; j=0;

while ( ) { s3[ i ]=s1[ i ]; i++; } i--;

while ( s2[ j ]!='\\0' )

{ ; j++; }

for ( ) printf( %c, s3[ i ] );

}

3、下列是打印杨辉三角形的程序,试将程序补充完整,并上机验证: main()

{ int i, j, a[6][6]={0};

16

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

{ a[i][0]=1; ; for ( j=1; ; j++ ) ; }

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

{ for (j=0; ; j++ ) printf(m, a[i][j]); ; } }

4、编程题

(1) 从键盘输入十个数对一个一维数组赋值,并将其中的奇数存放到另一个数组中后再输出,并输出奇数的个数。

如:从键盘输入: 13 14 17 34 45 55 56 76 77 99 则输出: 13 17 45 55 77 99 count = 6

(2) 编程求一个m*n的二维数组中所有元素的最大值,元素可随机产生。