从键盘接收两个整数m和n,分别表示一维整型数组的元素个数,和要向移动的位数。已知0
在用户输入m和n后,第二行输入相应个数的数组元素。
程序要实现的功能是,让数组元素往右移动n位。
例如,数组的5个元素是:1,2,3,4,5。
往右移动1位后:5,1,2,3,4
往右移动2位后:4,5,1,2,3
第一行输入两个整数,第二行输入数组元素。
移动后,数组的每一个元素,注意每个数组元素后有且仅有一个空格。
第一行的数据5和2,表示数组容量为5,让数组元素往右移动2个位置。
第二行是数组的每一个元素的值。
5 2
1 2 3 4 5
输出移动后的数组元素值,注意每个元素后有且仅有一个空格。
4 5 1 2 3
#include
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i,a[100];
for(i=0;im)
n=n%m; /*循环有周期,当n>m时,只需要n对m求余即可就像周期函数一样*/
for(i=m-n;i
对于这个题目,我们可以发现规律,右移n位,也就是数组最后的n位被放在最前面,就像一个数组a[5]={1,2,3,4,5},如果右移2位的话就是让a[3],a[4](我们可以注意到下标3就是元素个数减去右移个数)放在a[0],a[1],a[2]的前面,于是我们得到结果4,5,1,2,3,所以我们只需要先打印后n位再打印前n位即可。
通过刚才的一维数组循环右移,我们可以发散一下,看看二维数组循环右移,简单说二维就是在一维的基础上多加一层行的循环。
本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。
输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。
按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。
2 3
1 2 3
4 5 6
7 8 9
2 3 1
5 6 4
8 9 7
看过一维数组循环右移,这个题目就很简单了,我们可以把方阵的每一行看成一个一维数组,然后遍历方阵的每一行,把方阵的每一行按照一维数组循环右移即可。
#include
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i,j,a[n][n];
for(i=0;in)
m=m%n;
for(i=0;i
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
21世纪以来国外也逐渐承认这项成果属于中国,所以有些书上称这是“中国三角形”(Chinese triangle)。
其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而杨辉三角的发现就是十分精彩的一页。
让我们开始做题吧!
输入数据包含多组测试数据。
每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。
输入以0结束。
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
2
3
0
1
1 1
1
1 1
1 2 1
我们可以把杨辉三角当成一个二维数组来处理,可以发现规律,杨辉三角的第n行有n个数,知道这一点就可以减少循环次数,然后我们可以看到每个数字,假设这个数组元素的下标为[i][j],那么这个数组元素的值等于下标为[i-1][j]和[i-1][j-1]的元素之和,这样就不难写出相应语句了。
#include
int main()
{
int a[10000][1],b[30][30]={0};
int i,m,k,p=0;
for(i=0;i<100;i++)
{
scanf("%d",&a[i][0]);
if(a[i][0]==0)
{
break;
}
p=a[i][0];
for(m=0;m
欢迎大家积极留言呀!