7-5 数组元素循环右移问题 (20分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:
6 2 1 2 3 4 5 6输出样例:
5 6 1 2 3 4
#include <stdio.h>
int main()
{
/*基本变量的确定*/
int n,m;
scanf("%d %d",&n,&m);
if(n<=100&&n>=1){
/*数据输入存储*/
int temp[n];
for(int i=0;i<n;i++){ //此处并非遍历,而是从i=0,开始直到n-1
m=m%n; //从m开始++,以n为周期,数据输入
scanf("%d",&temp[m]);
m++;
}
/*遍历数据输出*/
int count=1; //标准化的空格输出小技巧
for(int i=0;i<n;i++){
printf("%d",temp[i]);
if(count<n){
printf(" ");
count++;
}
}
}
}
上下两题,实现路径雷同: 标准化空格小技巧,真的值得以后经常使用,哈哈!
7-6 求最大值及其下标 (20分)本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6 2 8 10 1 9 10输出样例:
10 2
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int temp[n];
for (int i=0;i<n;++i)
{
scanf("%d",&temp[i]);
}
int max=temp[0],maxIdx=0;
for (int i=1;i<n;++i)
{
if(max<temp[i])
{
max=temp[i];
maxIdx=i;
}
}
printf("%d %d",max,maxIdx);
}
上下两题,实现路径雷同:
7-7 将数组中的数逆序存放 (20分)本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4 10 8 1 2输出样例:
2 1 8 10
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int temp[n];
for (int i=0;i<n;++i)
{
scanf("%d",&temp[i]);
}
int count=1;
for (int i=n-1;i>=0;--i)
{
printf("%d",temp[i]);
if(count<n)
{
printf(" ");
count++;
}
}
}
7-8 矩阵运算 (20分)给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例:
4 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1输出样例:
35
#include <stdio.h>
int main()
{/*准备工作*/
int n,sum=0;
scanf("%d",&n);
int matrix[n][n];/*数据输入*/
for (int i=0;i<n;++i)
{
for (int j=0;j<n;++j)
{
scanf("%d",&matrix[i][j]);
//if((i+j)!=(n-1) && i!=3 && j!=3) //错误点:对&& 、||、!的使用,不熟练
if(!(i+j==n-1||i==n-1||j==n-1))
{
sum+=matrix[i][j];
}
}
}
printf("%d",sum);
return 0;
}
来源:oschina
链接:https://my.oschina.net/u/4429979/blog/4291883