7-3 将数组中的数逆序存放
实验代码:
#include <stdio.h> int main() { int i, n, h, a[10]; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &a[i]); for (i = 0; i < n/2; i++) { h = a[i]; a[i] = a[n-1-i]; a[n-1-i] = h; } for (i = 0; i < n-1; i++) printf("%d ", a[i]); printf("%d\n", a[n-1]); return 0; }
设计思路:
第一步:定义变量,按要求输入。根据题意判断只需判断数组中一半的数据即可得到结果。
第二步:定义变量h,将a[i]与a[n-1-i]进行交换。
第三步:输出a[i]与a[n-1]。
流程图:
遇到的问题及解决方法:
在交换中将数组中所有数进行了交换导致最后一位没有输出。
提交列表:
7-4 交换最小值和最大值:
实验代码:
#include<stdio.h> int main() { int i,N; int a[10]; int s,p; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d\t",&a[i]); } s=a[0]; p=0; for(i=1;i<N;i++) { if(s<a[i]) { s=a[i]; p=i; } } a[p]=a[N-1]; a[N-1]=s; s=a[0]; p=0; for(i=1;i<N;i++) { if(s>a[i]) { s=a[i]; p=i; } } a[p]=a[0]; a[0]=s; for(i=0;i<N;i++) { printf("%d ",a[i]); } return 0; }
设计思路:
第一步:定义变量并赋予初值,输入。
第二步:判断数组中的最小值赋给另一个变量并把它与第一个进行交换,同样找出最大值赋给其他变量并与最后的进行交换。
第三步:输出。
流程图:
遇到的问题及解决方法:
本题中所遇到的问题较多,第一次将题意理解错误将最大值与最小值进行了交换,后来没有考虑最大最小值位于数组首尾的情况,没有引入另两个存放的变量。
提交列表:
7-4 数组元素循环右移问题:
实验代码:
#include <stdio.h> int main(void) { int N, M, i, j, temp; int a[100]; scanf("%d %d", &N, &M); for (i = 0; i < N; i++) scanf("%d", &a[i]); if (M > N && M % N != 0) M = M % N; else if (M > N&&M%N == 0) M = 0; else M = M; for (i = 0, j = N - M - 1; i < j; i++, j--) { temp = a[i]; a[i] = a[j]; a[j] = temp; } for (i = N - M, j = N - 1; i < j; i++, j--) { temp = a[i]; a[i] = a[j]; a[j] = temp; } for (i = 0, j = N - 1; i < j; i++, j--) { temp = a[i]; a[i] = a[j]; a[j] = temp; } for (i = 0; i < N - 1; i++) printf("%d ", a[i]); printf("%d", a[N - 1]); return 0; }
设计思路:
第一步:定义并输入,先判断M与N之间的大小关系
第二步:根据题意引入temp进行交换
第三步:输出
流程图:
遇到的问题及解决方法:
这道题我并不理解参考了其他答案。
提交列表:
我的git地址是:https://git.coding.net/zhouxuan12/123.git
总结:这两周主要学习了数组,一维数组尚且理解,但对二维数组始终不太明白只能记着。
表格 折线图 :
点评:
http://www.cnblogs.com/fengzx/p/7811151.html