实验内容: 1.运行程序 #include <stdio.h> void main( ) { int i,j,iRow=0,iCol=0,m; int x[3][4]={{1,11,22,33},{2,28,98,38},{3,85,20,89}}; m=x[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if (x[i][j]>m) { m=x[i][j]; iRow=i; iCol=j; } printf("%d,%d,%d\n",m,iRow,iCol); } |
要求: (1)输入并调试上述源程序,对源程序进行编译、连接。 (2)运行并将结果填入表4-3。 (3)分析数组的定义、初始化过程以及程序的作用。 (4)将“if (x[i][j]>m)”改为“if (x[i][j]<m)”,再次编译、连接、运行程序,分析其功能及结果。 表4-3程序测试及结果分析 #include <stdio.h> #include<string.h> void main( ) { char str1[80]={"Hefei"},str2[80]="Anhui"; int i=0; while(str1[i]!='\0') { if(str1[i]>='a' && str1[i]<='z') str1[i]-=32; i++; } strcat(str1,str2); puts(str1); } 要求: (1)输入并调试上述源程序,对源程序进行编译、连接、运行。 (2)运行并将结果填入表4-4。 (3)分析数组的定义、初始化过程,比较str1和str2赋初值的差别。 (4)将while循环中的str1修改为str2的运行结果,分析循环的作用。 (5)写出判断字符数组结束的3种方法。 |
(6)列出所学的字符串处理函数,分析其功能。 表4-4 程序测试及结果分析 3. 程序填空 下面程序的功能是将二维数组所存储的矩阵a进行转置,并保存到数组b中。请在横线处填上正确的内容,以实现程序功能。 #include <stdio.h> #include<string.h> void main( ) { int i,j; int a[4][3],b[3][4]; for(i=0;i<4;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<4;i++) for(j=0;j<3;j++)
for( ) { printf("\n"); for(j=0;j<4;j++) printf("%3d",b[i][j]); } printf("\n"); } 要求: (1)输入并完善源程序,对源程序进行编译、连接。 (2)运行并将结果填入表4-5。 (3)如果a是方阵,比如4行4列,不定义数组b,如何实现转置? |
表4-4 程序测试及结果分析 4.编写程序 编写一个程序,统计从键盘输入的10个字符,英文字母(不区分大小写)和数字(0~9)字符出现的次数。 程序:
5.编写程序 输入一行字符,统计26个字母(不区分大小写)的个数。 程序:
|
6.编写程序 编写一个程序,打印杨辉三角形的前7行,即输出: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 要求及提示: (2)先找出杨辉三角形中各行数的特点、行间数的关系,然后利用二维数组处理。 程序:
|
7.编写程序 编写一个程序,求4×6整型矩阵的外围元素之和。 程序:
|
8.编写程序 已经一个班级有45个学生。用一个三列的二维数组存放学生的信息。第一列存放学号,第二列存放物理成绩,第三列存放数学成绩。要求编程实现: 1数学及物理课程的平均成绩。 2输出两门课程都低于平均成绩的同学的学号和成绩。 3对数学成绩从高到低排序。 程序:
|
9.编写程序 将一个二维数组行和列元素互换,存到另一个二维数组中。
程序:
10.编写程序 求出4*4矩阵中最大和最小元素值及其所在行、列的行下标和列下标。再求出两条对角线元素之和。 程序:
|
|
程序测试及运行结果: 4. 5. 6. |
7. 8. |
.9. 10. |