数组(2)

2019-01-10 13:05

printf(\ printf(\ }

二、二维数组实验

1. 以下程序功能为:将下列矩阵中的元素向右移动一列,最后一列移至第一列。找出并改正以下源程序中错误,通过调试得出正确的运行结果。

1 4 6 8 10 12

源程序(有错误的程序) #include #define ROW 2 #define COL 3

int main() {

int a[ROW][COL]={1,4,6,8,10,12}; int i,j,temp;

for(i=0;i=0;j--) { a[i][j]=a[i][j+1]; /*调试时设置断点*/ //改为a[i][j+1]=a[i][j]; } a[i][0]=temp; /*调试时设置断点*/ } for(int i=0;i

return 0; }

运行结果(改正后程序的运行结果) 6 1 4 12 8 10

2. 编程:利用二维数组计算并打印一个n行的杨辉三角。例如: Input n: 6 1 1 1 1 2 1 1 3 3 1

1 4 6 4 1

1 4 10 10 5 1

提示:第一列及对角线上的元素都是1,其他元素通过计算得出:

如果用i表示行,j表示列,则第i行j列的元素pi,j?pi?1,j?1?pi?1,j

#include void main() { }

3. 编程:通过键盘输入3行4列的二维数组,分别按行和按列输出数组。例如: Input numner: 1 2 3 4 5 6 7 8 9 10 11 0

output by row: 1 2 3 4 5 6 7 8 9 10 11 0 output by col: 1 5 9 2 6 10 3 7 11 4 8 0

int a[10][10]={0}; //设最多10层 int i, j, n;

printf(\请输入杨辉三角形的层数:\scanf(\if(n>10) {

printf(\层数超出范围\ return; }

for(i=0;i

a[i][0]=1; a[i][i]=1; }

for(i=2;i

a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i

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

printf(\

printf(\}

#include void main() {

int a[3][4],i,j; }

4. 编程:输入一个m*n矩阵,求他们的各行元素之和。例如: Input m , n: 2 2 Input 2*2 matrix: 4 5 5 6 sum[0]=9 sum[1]=11

提示:设计一个一维数组 int s[10],分别保存各行元素之和。

#include void main() {

int a[10][10], s[10]={0}; //设定矩阵最大为10 x 10 int m, n, i, j;

printf(\请输入矩阵的行数和列数:\scanf(\

if(m<0 || m>10 || n<0 || n>10) {

printf(\行或列(1~10)值超出范围\ return; }

printf(\请输入 3 X 4 整数矩阵:\\n\for(i=0; i<3; i++) for(j=0; j<4; j++)

scanf(\printf(\按行输出:\for(i=0; i<3; i++) for(j=0; j<4; j++)

printf(\printf(\

printf(\按列输出:\for(i=0; i<4; i++) for(j=0; j<3; j++)

printf(\

printf(\

}

printf(\请输入 %d*%d 矩阵:\\n\for(i=0; i

scanf(\

//求各行之和并输出 for(i=0; i

for(j=0; j

printf(\}

5. 编程:判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。

Input m , n: 2 2 Input 2*2 matrix: 4 5 5 6

i=0, j=1, saddle point: 5

提示:找鞍点需要处理三件事情:(1)找每行中最大值所在的列下标;(2)判断该元素在本列上是否为最小;(3)判断是否找到了鞍点,若找到,输出。

#include void main() {

int a[10][10]; //设定矩阵最大为10 x 10 int m, n, i, j, col, flag=0; printf(\请输入矩阵的行数和列数:\scanf(\

if(m<0 || m>10 || n<0 || n>10) {

printf(\行或列(1~10)值超出范围\

return; //退出程序 }

printf(\请输入 %d*%d 矩阵:\\n\for(i=0; i

scanf(\for(i=0; i

col=0; //找出第i行中的最大值所在列下标col for(j=1; j

}

if(a[i][col]

for(j=0; ja[j][col]) break;

if(j==m) {

flag=1; //有鞍点

printf(\ } }

if(flag==0)

printf(\

三、字符串实验

1. 以下程序功能为:输入一个字符串,将其逆序输出。找出并改正以下源程序中错误,通过调试得出正确的运行结果。

源代码(有错误的程序) #include #include void main() { int i,j; char s[80],result[80]; printf(\ gets(s); for(i=strlen(s)-1,j=0;i>=0;i--,j++) { result[j]=s[i]; } result[j]='\\0'; //必须给字符串加上串结束标志 printf(\ puts(result); }

运行结果(改正后的程序) Enter a string : asdfg

This is the reverse string: gfdsa

2. 编程:任意输一个字符串保存在一维字符数组中,求其长度(不用strlen函数)。例如: Input a string: aadfdg length=6


数组(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年度四川省普通高中省级优秀学生、“三好”学生、优秀学生

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: