一、有序序列判断
#include <stdio.h>
int main(){
int n = 0;
int arr[50] = {0};
int flag1 = 0;//升序
int flag2 = 0;//降序
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%d",&arr[i]);
if (i>0) {
if (arr[i]>arr[i-1]) {
flag1 = 1;
}else{
flag2 = 1;
}
}
}
if (flag1+flag2==1) {
printf("sorted\n");
}else{
printf("unsorted\n");
}
}
二、序列中删除指定数字
用i遍历数组,j存放去重后的数字
#include <stdio.h>
int main(){
int n = 0;
int arr[50] = {0};
int del = 0;
scanf("%d",&n);
int i = 0;
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
}
scanf("%d",&del);
int j = 0;
for(i=0;i<n;i++){
if (arr[i]!=del) {
arr[j++] = arr[i];
}
}
for(i=0;i<j;i++){
printf("%d ",arr[i]);
}
}
三、序列中整数去重
用i遍历数组,j指示需要去重的元素,k进行去重,去重一次数组收缩1,由于可能有多个连续的重复元素,j进入下一轮循环前需要j–
#include <stdio.h>
int main(){
int n = 0;
int arr[1000] = {0};
scanf("%d",&n);
int i = 0;
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
}
for(i=0;i<n;i++){
int j=0;
for(j=i+1;j<n;j++){
if (arr[j]==arr[i]) {
int k=0;
for(k=j;k<n-1;k++){
arr[k] = arr[k+1];
}
j--;
n--;
}
}
}
for(i=0;i<n;i++){
printf("%d ",arr[i]);
}
}
四、有序序列合并
#include <stdio.h>
int main(){
int arr1[1000] = {0};
int arr2[1000] = {0};
int arr3[2000] = {0};
int i = 0;
int j = 0;
int n = 0, m = 0;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d",&arr1[i]);
}
for(i=0;i<m;i++){
scanf("%d",&arr2[i]);
}
i = 0, j = 0;
while (i<n && j<m) {
if (arr1[i]<arr2[j]) {
printf("%d ",arr1[i++]);
}else {
printf("%d ",arr2[j++]);
}
}
if (i==n) {
for(;j<m;j++){
printf("%d ",arr2[j]);
}
}else{
for(;i<n;i++){
printf("%d ",arr1[i]);
}
}
}