1.输入联系【Java】
   
【问题描述】
    任务很简单:
    
    给定若干个整数,请编程输出它们的和。
   
【输入形式】
    输入包含多组测试用例。
    
    每组测试数据首先是一个正整数N,表示本组数据有N个整数。
    
    请处理到文件结束。
   
【输出形式】
请计算每组数据的和,每组输出占一行。
【样例输入】
4 1 3 4 9 5 10 2 30 4 50
【样例输出】
17 96
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
		 
            if(sc.hasNext()){
			   String s = sc.nextLine();
                String[] str = s.split(" ");
                int sum = 0;
                int n = Integer.parseInt(str[0]);
                for (int x = 1; x < n+1; x++) {
                    sum += Integer.parseInt(str[x]);
                }
                System.out.println(sum);
            }else break;
        }
    }
}
    2.丑数 【Java】
   
【问题描述】
    丑数的定义是这样的——
    
    一个数,如果它分解后的素因子最多只有2、3、5、7四种,这个数则称为“丑数”。比如,前20个丑数是:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27。
    
    现在你的任务是:给你一个数,你能判断是否是丑数吗?
   
【输入形式】
输入数据的第一行首先是一个整数C,表示测试数据的个数,然后是C组数据,每组测试数据包含一个整数n(1 <= n <= 2^31-1)。
【输出形式】
对于每组测试数据,如果n是丑数,则请输出“ Yes”,否则,请输出“No”.
【样例输入】
3 12 385875 11
【样例输出】
Yes Yes No
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int num = sc.nextInt();
            if (check(num)==1) System.out.println("Yes");
            else System.out.println("No");
        }
    }
    public static int check(int num){
        while(num%2==0){
            num/=2;
        }
        while(num%3==0){
            num/=3;
        }
        while(num%5==0){
            num/=5;
        }
        while(num%7==0){
            num/=7;
        }
        if(num==1)
            return 1;
        return 0;
    }
}
    3.字符三角形【Java】
   
【问题描述】
我们学习了编程,通过对程序的控制,可以做一些有趣的输出。
比如,这个题目就是给定一个正整数N,请你输出一个由N行的*组成的三角形。
但是——为了图形的美观,我们希望输出的是一个等腰三角形!
具体规则如下:
    第一行是1个*
    
    第二行是3个*
    
    第三行是5个*
    
    ……
    
    依次类推,一直到第N行(第N行的开始没有空格)。
更多了解可以参见样例。
【输入形式】
输入数据第一行是一个正整数C,表示一共有C组测试用例。
接下来C行,每组数据占一行,是一个正整数N(1<=N<=40),N的含义见题目描述。
【输出形式】
对于每组数据给定的N,请按照要求输出由*组成的N行等腰三角形。
【样例输入】
2 3 5
【样例输出】
*
***
*****
*
***
*****
*******
*********
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int k = 0; k < n; k++) {
            int num = sc.nextInt();
            for (int i = 1; i <=num; i++) {	//输出4行
                for (int j = 0; j < num-i; j++) {
                    System.out.print(" ");
                }
                for (int j = 1; j <= 2*i-1; j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
}
    4.奋勇争先【Java】
   
【问题描述】
在丁爸信奥培训班中,每一次的作业,大家都奋勇争先,想拿下第一名。
现在已知某次测验的每位同学的解题数量和罚时,希望你能够告诉老师谁是第一名。
    注:
    
    首先依据解题数量从大到小排名,若解题数量相同,则比较罚时,罚时少的排名靠前。
   
【输入形式】
第一行是数据组数C,代表有C组测试实例。
每一组数据第一行为一个N,代表下面有N个人的成绩。
    接下来N行,每一行依次给出名字Name,解题数量num和罚时time
    
    ( 1<=C<=10, 2<N<=1000, Name的长度最大为10, 1<=num<=10,
    
    10<=time<=100000 )
   
【输出形式】
每组测试数据输出一行,依次为第一名的名字、解题数量和罚时,中间用空格隔开。
【样例输入】
1 3 Bob 5 50 Alice 4 46 John 5 48
【样例输出】
John 5 48
import java.util.Arrays;
import java.util.Scanner;
class student{
    private String name;
    private int num;
    private int time;
    public student(String name,int num,int time){
        this.name = name;
        this.num = num;
        this.time = time;
    }
    public String getName(){
        return this.name;
    }
    public int getTime() {
        return this.time;
    }
    public int getNum() {
        return this.num;
    }
    public String tell(){
        return  this.name+" "+this.num+" "+this.time;
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
//        几组数据
        int n = sc.nextInt();
        for (int k = 0; k < n; k++) {
//            输入几行数字
            int m = sc.nextInt();
//            申请几个数组
            student[] st_arr = new student[m];
            for (int i = 0; i < m; i++) {
                String data1 = sc.next();
                int data2 = sc.nextInt();
                int data3 = sc.nextInt();
                student st_data = new student(data1,data2,data3);
                st_arr[i] = st_data;
            }
            int index=0;
            String name = st_arr[0].getName();
            int max_num = st_arr[0].getNum();
            int time = st_arr[0].getTime();
            for (int i = 0; i < m; i++) {
                if (max_num<st_arr[i].getNum()){
                    name = st_arr[0].getName();
                    max_num = st_arr[i].getNum();
                    time = st_arr[i].getTime();
                    index =i;
                }
                if (max_num==st_arr[i].getNum()){
                    if(time>st_arr[i].getTime()){
                        name = st_arr[0].getName();
                        max_num = st_arr[i].getNum();
                        time = st_arr[i].getTime();
                        index = i;
                    }
                }
            }
            System.out.println(st_arr[index].tell());
        }
    }
}
    5.超级密码【Java】
   
【问题描述】
上次设计的“高级密码”被你们破解了,一丁小朋友很不服气!
现在,他又设计了一套更加复杂的密码,称之为“超级密码”。
说实话,这套所谓的“超级密码”其实也并不难:
对于一个给定的字符串,你只要提取其中的数字,然后连在一起构成一个整数,再乘以刘一丁小朋友的幸运数字513,就是解密后的结果了~
比如,字符串“ads2d4,122”,提取后的整数是24122,然后乘以513,就能得到解密后的结果:12374586。
注:题目保证解密后的结果在32位无符号整数范围。
【输入形式】
    输入首先包括一个正整数N,表示有N组测试用例。
    
    每组数据占一行,包含一个长度不超过30的字符串。
   
【输出形式】
请根据题目要求输出解密后的结果,每组数据输出一行。
【样例输入】
2 ads2d4,122 0023asdf2AA90
【样例输出】
12374586 11947770
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i <n; i++) {
            StringBuilder buf=new StringBuilder();
            String pword = sc.next();
            int sum=0;
            for (int j = 0; j < pword.length(); j++) {
                if(pword.charAt(j)>='0' && pword.charAt(j)<='9'){
                    buf.append(pword.charAt(j));
                }
            }
            //将StringBuilder转换成String
            String number = buf.reverse().toString();
            for (int j = 0; j < number.length(); j++) {
                sum +=Integer.valueOf(number.charAt(j)-48)*Math.pow(10,j);
            }
            System.out.println(sum*513);
        }
    }
}
    6.求根号n【C】
   
    【输入形式】输入一个正整数
    
    【输出形式】输出答案
    
    【样例输入】10
    
    【样例输出】3
    
    【样例说明】表示对n开平方后向下取整。
   
#include <stdio.h>
int szys_sqrt(int n)
{
    int i=1;
l:     if(i*i==n)
         return i;
    if(i*i>n)
        return i-1;
    i=i+1;
    goto l;
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d\n",szys_sqrt(n));
    return 0;
}
    7.学生成绩排序【C】
   
    【问题描述】
    
    对某班学生成绩排序。从键盘依次输入某班学生的姓名和成绩(一个班级人数最多不超过50人)并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩,成绩相同时,则按输入次序排序。
    
    【输入形式】
    
    从键盘依次输入最多不超过50个学生的学生姓名和成绩:
    
    第一行输入班级学生人数;
    
    在单独行上输入空格隔开的学生姓名和成绩,其中学生成绩是整数。
    
    【输出形式】
    
    按学生成绩由高到低顺序输出学生姓名和成绩,每行输出一位学生的姓名和成绩,其中姓名(英文)占15位,成绩占5位,均按缺省方式对齐。成绩相同时按输入次序排序。
    
    【输入样例】
    
    4
    
    aaa 50
    
    bbb 70
    
    ccc 65
    
    ddd 90
    
    【输出样例】
   
    ############ddd###90
    
    ############bbb###70
    
    ############ccc###65
    
    ############aaa###50
   
(注意:其中“#”号代表空格)
    【样例说明】
    
    输入了四个学生姓名和成绩,按成绩排序输出。
   
#include <stdio.h>
struct student
{
    char name[50];
    int score;
};
int main()
{
    struct student a[50];
    struct student t;
    int i,n,j;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%s%d",&a[i].name,&a[i].score);
    for(i=1;i<n;i++)
        for(j=0;j<n-i;j++)
            if(a[j].score<a[j+1].score)
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
    for(i=0;i<n;i++)
        printf("%15s%5d\n",a[i].name,a[i].score);
    return 0;
}
    8.学生成绩排序(冒泡)【C】
   
    【问题描述】对一含有n个整数的数组,使用选择排序将其由小到大排序。
    
    【输入形式】第一行为元素个数n,第二行为n个整数(以空格隔开)。
    
    【输出形式】输出n个整数(以空格隔开)
    
    【样例输入】
    
    6
    
    43 2 56 1 22 9
    
    【样例输出】
    
    1 2 9 22 43 56
   
#include <stdio.h>
void sort(int a[], int n)
{
    int i, t, j;
    for(i=0; i<n-1; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(a[j]<a[i])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    int i;
    int score[n];
    for(i=0;i<n;i++)
        scanf("%d",&score[i]);
    sort(score,n);
    for(i=0;i<n;i++)
        printf("%d ",score[i]);
    return 0;
}
    9.十进制到八进制的转换【C++】
   
    【问题描述】对于输入的任意一个非负十进制整数n(0=<n<100000),打印输出与其等值的八进制数
    
    【输入形式】非负十进制整数
    
    【输出形式】相应十进制整数转换后的八进制正整数,若输入不符合要求,提示错误,重新输入
    
    【样例输入】5548
    
    【样例输出】12654
    
    【样例说明】先判断输入是否符合非负正整数要求
   
//十进制到八进制的转换
#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int i,t=0;
	cin>>i;
	vector<int>nums;
	if(i>0)
	{
		for(;i>0;i/=8)//每次都除8 
	    {
		    t=i%8;
		    nums.push_back(t);//压入余数 
	    }
	}
	else
	{
		cout<<"0";
	 } 
	for(int time=nums.size()-1;time>=0;--time)
	{
		cout<<nums[time];//输出除以8的余数 
	}
}
 
