实验九 二维数组及字符数组程序设计1

发布时间:2021-06-05

实验九 二维数组及字符数组程序设计

姓名:周咪咪 班级:11数字媒体技术(2) 学号:2011329700214 实验目的:

1、 掌握二维数组的定义和引用方法。

2、 掌握字符数组的定义和使用方法。

3、 掌握正确使用一维数组及字符数组编程。

实验内容:

1、 编写程序,输入两个正整数m和n(1≤m,n≤6),然后输入该m行n列矩阵a中的元

素,分别求出各行元素之和,并输出。

2、 编写程序,输入一个正整数n(1≤n≤6)和n阶方阵a中的元素,如果找到a的鞍点(鞍

点的元素值在该行上最大,在该列上最小),就输出它的下标;否则输出“NO”(设a最多有一个鞍点)。

3、 编写程序,输入一个以回车符结束的字符串(少于80个字符),过滤去所有的非十六进

制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。 实验过程:

一、实验一

1、 算法思路:

(1)先定义数组,输入数据显示行列式。

(2)再用循环实现各行元素之和。

2、 程序清单:

#include<stdio.h>

int main(void)

{

int i,j,m,n,sum;

printf("enter m,n:");

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

int a[6][6];

printf("enter digit:");

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

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

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

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

{

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

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

printf("\n");

}

{

sum=0;

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

sum=sum+a[i][j];

printf("\n");

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

}

return 0;

}

3、 原始数据:

m=3,n=3

Enter digit:1 2 3 4 5 6 7 8 9

4、 运行结果:

5、 分析与思考:

(1)sum不要忘输初值。

(2)数组的定义为a[6][6]表示最多为6行6列。

二、实验二

1、算法思路:

先通过循环在行中找到最大数,记下此时的列数。

再根据列数,找到该列中的最小数。

判断最大数和最小数是不是相等,是的话输出该元素的下标,不是的话输出“no”。

2、程序清单:

#include<stdio.h>

int main(void)

{

int i,j,n,max,min,row,col;

printf("enter n(n<=6):");

scanf("%d",&n);

int a[6][6];

printf("enter digit:");

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

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

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

{

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

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

printf("\n");

}

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

{

max=a[i][0];

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

{

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

{

max=a[i][j];

row=i,col=j;

}

}

min=a[0][col];

for(j=col,i=0;i<n;i++)

{

if(a[i][j]<min)

min=a[i][j];

}

}

if(min==max)

{

printf("the row of number is:%d\n",row);

printf("the col of number is:%d\n",col);

}

else

printf("no\n");

return 0;

}

3、原始数据:

n=3

enter digit :2 4 8 2 3 9 4 5 70

4、运行结果:

5、分析与思考:

(1)在多重循环的程序中要注意加{ }的位置,否则会出错的。

(2)注意小错误,如:等于为"=="

三、实验三

1、算法思路:

(1)先定义数组a[81](前面80个为字符,最后一个为回车符)。

(2)再用循环判断语句实现滤去所有的非十六进制字符,形成新的字符串。

(3)再将字符型转换成十进制型输出。

2、程序清单:

#include<stdio.h>

int main(void)

{

char a[81],ch;

int b,i,j,sum=0,k=0,item=1;

i=0;

printf("enter string:");

ch=getchar();

while(ch!='\n')

{

if((ch>='0'&&ch<='9')||(ch>='a'&&ch<='f'))

{

a[i]=ch;

i++;

}

ch=getchar();

}

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

{

if(a[j]>='0'&&a[j]<='9')

b=a[j]-'0';

else

b=10+a[j]-'a';

sum=sum+b*item;

item=item*16;

}

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

return 0;

}

3、原始数据:

输入123#ap

4、运行结果:

5、分析与思考:

(1)在转换数据类型时,要先对字符分类。

(2)要清楚十六进制字符的范围为"0~f"

    精彩图片

    热门精选

    大家正在看