目录
- 有容乃大
- KiKi学程序设计基础
- KiKi去重整数并排序
- KiKi判断上三角矩阵
- KiKi学结构体和指针
1.题目描述
确定不同整型数据类型在内存中占多大(字节),输出不同整型数据类型在内存中占多大(字节)。
1.1输入描述
无。
1.2输出描述
不同整型数据类型在内存中占多大(字节),具体格式详见输出样例,输出样例中的?为不同整型数据类型在内存中占的字节数。输出样例如下:
The size of short is ? bytes.
The size of int is ? bytes.
The size of long is ? bytes.
The size of long long is ? bytes.
1.3代码实现
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
System.out.println("The size of short is "+Short.SIZE/8+" bytes.");
System.out.println("The size of int is "+Integer.SIZE/8+" bytes.");
System.out.println("The size of long is "+Long.SIZE/8+" bytes.");
System.out.println("The size of long long is "+Long.SIZE/8+" bytes.");
}
}
2.题目描述
BoBo老师教了KiKi学习程序设计基础,他知道C++是带类的C语言,这个“++”主要包含三部分内容:对C语言进行语法上的扩展、面向对象(封装、继承和多态),STL(即模板)。这学期KiKi学习了C和C++,学好他们,其他编程语言都可以很轻松掌握。C和C++的输入有区别,请帮KiKi输出C和C++输出Hello world的代码。
2.1输入描述
无。
2.2输出描述
printf(“Hello world!\n”);
cout << “Hello world!” << endl;
2.3代码实现
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
System.out.println("printf(\"Hello world!\\n\");");
System.out.println("cout << \"Hello world!\" << endl;");
}
}
3.题目描述
给定一个整数序列,KiKi想把其中的重复的整数去掉,并将去重后的序列从小到达排序输出。
3.1输入描述
第一行,输入一个整数n,表示序列有n个整数。
第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。
3.2输出描述
去重并且从小到大排列的整数序列,整数之间用空格分隔。
3.3示例1
输入
6
5 3 3 4 2 2
输出
2 3 4 5
3.4代码实现
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
String[] strs = bf.readLine().split(" ");
List<Integer> list = new ArrayList<Integer>();
try{
for(int i=0;i<strs.length;i++){
if(!list.contains(Integer.parseInt(strs[i]))){//去重
list.add(Integer.parseInt(strs[i]));
}
}
}catch(NumberFormatException e){}//不添加异常会报错
Collections.sort(list);//从小到大排序
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");//遍历输出
}
}
}
4.题目描述
KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
4.1输入描述
第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)
从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。
4.2输出描述
一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。
4.3示例1
输入
3
1 2 3
0 4 5
0 0 6
输出
YES
4.4示例2
输入
4
1 2 3 4
5 6 7 8
9 0 11 12
13 0 0 16
输出
NO
4.5代码实现
import java.util.Scanner;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
boolean judge = true;
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] arr = new int[n][n];
//读入n*n方阵
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
arr[i][j] = in.nextInt();
}
}
//判断方阵是否为上三角矩阵
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i>j){
if(arr[i][j]!=0){
judge = false;
}
}
}
}
//判断输出结果
if(judge){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
5.题目描述
KiKi学习了结构体和指针,他了解了结构体类型可以定义包含多个不同类型成员,而指针本质是内存地址,是引用数据的另外一种方式。现在他想将多个输入的数据通过结构体和指针的方式连接在一起,形成一个单向链表,即:每个结点是结构体类型,包括整型数据成员(data)和结构体指针类型成员(next),每个结点的指针部分指向下一个输入的结点。具体建立过程如下:先输入n个整数,按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。输出删除后的单链表信息。
5.1输入描述
包括三行:
第一行输入数据个数n (3≤n≤100);
第二行依次输入n个整数,用空格分隔;
第三行输入欲删除数据m。
5.2输出描述
包括两行:
第一行输出完成删除后的单链表长度;
第二行依次输出完成删除后的单链表数据。
5.3示例1
输入
5
1 2 2 3 4
2
输出
3
1 3 4
5.4代码实现
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
String[] strs = bf.readLine().split(" ");
int m = Integer.parseInt(bf.readLine());
ArrayList<Integer> arrlist = new ArrayList();
for(int i=0;i<n;i++){
int data = Integer.parseInt(strs[i]);
if(data != m){
arrlist.add(data);
}
}
System.out.println(arrlist.size());
for(int i=0;i<arrlist.size();i++){
System.out.print(arrlist.get(i)+" ");
}
}
}