一维数组练习

C.一维数组练习
Time Limit: 1000 MSMemory Limit: 32768 K
Total Submit: 54 (22 users)Total Accepted: 17 (17 users)Special Judge: No
Description
输入一个由n个整数组成的序列,其中序列中任意连续三个整数都互不相同。求该序列中所有递增子序列的个数,并要求分别输出。
Input

先是这组数的个数n,然后是n个整数。

Output

递增序列个数

然后是每个递增序列一行,每行中每个数之间用一个空格分隔。

Sample Input
10
1 10 8 5 9 3 2 6 7 4
Sample Output
3
1 10
5 9
2 6 7




import java.util.*;
public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
int n;
n = input.nextInt();
int s[];
int qwe = 0;
s = new int[n+1];
for(int i=0; i<n; i++)
{
s[i] = input.nextInt();
}
int temp = 0;
int m = 1,w = 0;
for(int i=0; i<n; i++)
{
if(s[i]<s[i+1])
{
m++;
}
else if(s[i]>s[i+1])
{
if(m>=2)
{
m = 1;
w++;
}
else
{
continue;
}
}
}
System.out.printf("%d\n",w);

qwe = 1;
m = 1;
for(int i=0; i<n; i++)
{
if(s[i]<s[i+1])
{
m++;
System.out.printf("%d ",s[i]);
}
else if(s[i]>s[i+1])
{
if(m>=2)
{
System.out.printf("%d\n",s[i]);
m = 1;
}
else
{
continue;
}
}
}

}
}
}



以下是几种不同语言的一维数组练习题及相关代码: ### Java 练习题 - **学员成绩处理**:建立一个数组表示已知学员成绩,对成绩进行降序排列,再增加一个学员的成绩插入成绩序列。思路是先建立原数组,通过循环完成降序排列,由于数组长度有限,需建立一个长度加 1 的新数组来插入新成绩 [^1]。 - **数组内容比较**:定义 `equals` 方法,比较两个数组内容是否完全一致。先对数组进行排序,再比较长度和对应索引值 [^4]。 ```java import java.util.Arrays; public class Test7 { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 3, 2}; int[] arr2 = {2, 1, 2, 3, 4, 3}; System.out.println("是否一致" + equals(arr, arr2)); } public static boolean equals(int[] arr, int[] arr2) { Arrays.sort(arr); Arrays.sort(arr2); if (arr.length != arr2.length) { return false; } for (int i = 0; i < arr.length; i++) { if (arr[i] != arr2[i]) { return false; } } return true; } } ``` - **二分查找**:使用二分查找法在数组中查找指定数字。让数组的中间数和要查找的数字作比较,根据大小调整左、右边界 [^5]。 ```java import java.util.Scanner; public class javaSchool { public static void main(String[] args) { int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9}; System.out.println("请输入你要查找的数字"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int mid = -1; int left = 0; int right = array.length - 1; while (left <= right) { mid = (left + right) / 2; if (n > array[mid]) { left = mid + 1; } else if (n < array[mid]) { right = mid - 1; } else { break; } } if (n == array[mid]) System.out.println("找到了。下标为:" + mid); else System.out.println("没有找到此数字"); } } ``` ### C 语言练习题 - **查找指定数的下标**:用数组存储 10 个整型数,通过键盘输入一个数,找出该数在数组中的下标值 [^2]。 ```c #include <stdio.h> int main(int argc, char *argv[]) { int arr[10]; int searchNum; int found = -1; printf("请输入 10 个整型数:\n"); for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } printf("请输入要查找的数:\n"); scanf("%d", &searchNum); for (int i = 0; i < 10; i++) { if (arr[i] == searchNum) { found = i; break; } } if (found != -1) { printf("数 %d 在数组中的下标是 %d。\n", searchNum, found); } else { printf("数 %d 不在数组中。\n", searchNum); } return 0; } ``` ### C++ 练习题 - **数组逆序输出**:输入 `n` 个数到数组中,然后将数组元素逆序输出 [^3]。 ```cpp #include<bits/stdc++.h> using namespace std; long long n, a[200]; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = n; i >= 1; i--) cout << a[i] << " "; return 0; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值