编程初学者入门训练-KiKi学结构体和指针

目录

  1. 有容乃大
  2. KiKi学程序设计基础
  3. KiKi去重整数并排序
  4. KiKi判断上三角矩阵
  5. 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)+" ");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值