当前位置:首页 > C语言程序设计实验指导书(师院信计教学用)
(八)下面程序的功能是实现方阵(如:3行3列)的转置(即行列互换) 如:如果原来的矩阵:100 200 300 400 500 600 700 800 900 程序输出应为:
100 400 700 200 500 800 300 600 900 填空并运行程序。
/* c7-7.c 矩阵转置*/ #include \void main( ) { int i,j,temp;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}}; printf(\原来的矩阵为:\\n\ for(i=0; i<3; i++)
{ for(j=0; j< ; j++) printf(\ printf(\ for(i=0; i<3; i++)
{ for(j=0; ;j++)
{temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;} } printf(\转置后的矩阵为:\\n\ for(i=0; i<3; i++)
{ for(j=0; j<3; j++) printf(\ } /*输出一行后要换行*/ }
请将此矩阵转置程序与教材上的矩阵转置程序进行比较,各用于何种类型矩阵比较合适?
五、实验注意事项
(一)C规定,二维数组的行和列的下标都是从0开始的。
例如,有定义:int b[3][[5]; 则数组b的第一维下标的上界为2,第二维下标的上界为4。说明定义了一个整型二维数组b,它有3行5列共3*5=15个数组元素,行下标为0,1,2,列下标为0,1,2,3,4,则数组b的各个数组元素是:
b[0][0],b[0][1],b[0][2],b[0][3],b[0][4] b[1][0],b[1][1],b[1][2],b[1][3],b[1][4] b[2][0],b[2][1],b[2][2],b[2][3],b[2][4]
(二)要对二维数组的多个数组元素赋值,应当使用循环语句并在循环过程中,使数组元素的下标变化。可用下面的方法为所有数组元素赋值:
int i,j,a[3][3]; for(i=0; i<3; i++)
34
for(j=0; j<3; j++) scanf(\
六、思考题
(一)定义一个5行5列的二维数组a,使下三角的所有元素初始化为1,在划线处填空。 int i,j,a[5][5]; for(i=0; i<5; i++) for(j=0; j<5; j++)
if( ) a[i][j]=1;
(二)求一个4×4矩阵的主对角线元素之和,填空并运行程序。 #include \
void main( )
{ int a[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,sum=0; for(i=0; i<4; i++) ;
printf(“sum=%d\\n”,sum); }
(三)求二维数组a中的最大元素及其下标,填空并运行程序。 #include \ void main( )
{int a[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}}; int i,j,max,l,c; max=a[0][0]; for(i=0; i<4; i++) for(j=0; j<4; j++)
if( max (四)统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩,填空并运行程序。 #include \ void main( ) { int stu[3][4],i,j,t[3]; float a[3],sum=0; for(i=0; i<3; i++) for(j=0; j<4; j++) scanf(\for(i=0; i<3; i++) { t[i]=0; 35 for(j=0; j<4; j++) { sum+=stu[i][j]; t[i]+=stu[i][j]; } printf(\ ; printf(\ } printf(\ } 36 实验八 字符数组程序设计 一、实验学时 2学时 二、实验目的 (一)掌握字符数组的定义、初始化和应用; (二)掌握字符串处理函数的使用。 三、预习要求 重点预习的内容:C语言中字符串的存储表示;字符数组输入输出的方法;常用的字符串处理函数的使用。 四、实验内容 (一)输入下面的程序并运行,观察程序运行的结果,并分析原因(注意程序第2行中有些单引号之间是空格)。 /* c8-1.c 字符数组的输出*/ #include \void main( ) { char a[10]={ ’I’, ’ ’, ’a’, ’m’, ’ ’, ’a’, ’ ’, ’b’, ’o’, ’y’}; printf(\} 将字符数组a的大小改为11,再运行程序,并将结果与修改前的结果进行比较,分析原因。 (二)按照要求编写程序:有一行文字,不超过80个字符,分别统计出其中英文大写字母、小写字母、数字、空格、及其它字符的个数。 编程提示: 1.定义一个一维字符数组。 2.定义5个整型变量分别统计大写字母、小写字母、数字、空格和其它字符的个数(即作为5个计数器使用),并为这5个变量赋初值。 3.用scanf函数或gets函数为字符数组赋一个字符串。 4.在循环中对字符数组的每个元素进行判断,相应的计数器加1。注意循环控制的条件和进行判断的条件怎样设置。 5.循环结束后输出各计数器的值。 思考:如果是对一篇英文文章进行统计,又该怎么编程呢?文章的行数和每行字数可以自己来设。提示:对文章的内容要用二维字符数组来存储。 /* c8-2.c 统计字符个数 */ #include \ 37
共分享92篇相关文档