第一题—“移动数组中的’0’”
题目描述
给定一个整型数组,将数组中所有的“0”移动到末尾,非“0”项保持顺序不变
在原始数组上进行移动操作,勿创建新的数组
输入
第一行是数组长度
后续每一行是数组的一条记录
输出
调整后的数组内容
样例输入
4
0
7
0
2
样例输出
7
2
0
0
#include<iostream>
int main(){
int k;
scanf("%d",&k);
int arr[k];
for(int i =0;i<k;i++){
scanf("%d",&arr[i]);
}
int newArr[k];
int kx = 0;
for(int j = 0;j<k;j++){
if(arr[j]!=0){
newArr[kx] = arr[j];
kx++;
}
}
for(int l = kx;l< k;l++){
newArr[l] = 0;
}
for(int i =0 ;i<k;i++){
printf("%d\n",newArr[i]);
}
}
第二题—“二维矩阵旋转”
//没有AC,有点累了,下次更改。有兴趣的看下题。代码没必要看了。时间 2018/03/29 8:33
题目描述:
给一个N*N的二维矩阵,将该矩阵顺时针旋转90度
输入
输入一个N*N二维矩阵
输出
将输入的二维矩阵顺时针旋转90度
样例输入
1 4 7
2 5 8
3 6 9
样例输出
3 2 1
6 5 4
9 8 7
int main(){
int a[1000] ={0};
int n ,k =0;
while(scanf("%d",&n)!=EOF){
a[k] = n;
k++;
}
int sq = sqrt(k);
int b[sq][sq];
for(int i=0,j =0;j<k;j++){
b[i][(j+1)%sq] = a[j];
if((j+1)/sq != 0){
i++;
}
}
int newb[sq][sq];
for(int i = 0;i<sq;i++){
for(int j =0;j<sq;j++){
newb[i][j]=b[sq-j][i];
}
}
for(int i=0,j =0;j<k;j++){
printf("%d",b[i][(j+1)%sq] );
if((j+1)/sq != 0){
i++;
}
}
return 0;
}