2016年软件技术3+2专业技能测试A卷

专业技能测试A卷

C语言

1、删除ch

【题目】(15分)编写程序,输入一个字符串(长度不超过50),再输入单独的一个字符ch,将字符串str当中所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。
【代码】

#include<stdio.h>
#include <string.h>
main()
{
	char str1[50];
	char str2[50];
	char ch;
	gets(str1);
	ch=getchar();
	int i=0,j=0;
	int k=0;
	for(i=0;i<strlen(str1);i++){
		if(str1[i]==ch){
			for(k=i;k<strlen(str1)-1;k++){
				str1[k] = str1[k+1];
			}
			str1[k] = '';
			i--;
		}else{
			str2[j++] = str1[i];
		}
	}
	puts(str1);
	puts(str2);
} 

2、取每行的最小值

【题目】(15分)编写函数求矩阵a[n][n]中每行的最小值,结果存放到数组b中,若
则结果为1,5,9,13
4
1 4 3 2
8 6 5 7
11 10 12 9
13 16 14 15
【代码】

#include<stdio.h>
#include <string.h>
main()
{
	int n;
	scanf("%d",&n);
	char a[n][n];
	int b[n];
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=0;i<n;i++){
		b[i] = a[i][0];
		for(int j=1;j<n;j++){
			if(b[i]>a[i][j]){
				b[i] = a[i][j];
			}
		}
	}
	for(int i=0;i<n;i++){
		printf("%d,",b[i]);
	}
}

3、不安全的洞

【题目】(C语言,15分)围绕山顶一圈有N个山洞,编号为0、1、2、3、……、N-1,有一只狐狸和一只
兔子在洞中居住。狐狸总想找到兔子并吃掉它,它的寻找方法是先找到第一个洞(即编号为0的洞)
中找;再隔一个洞,即编号为2的洞中找;再隔2个洞,即编号为5的洞中找;下次再隔3个洞;即
编号为9的洞中找;……。若狐狸找一圈,请为兔子指出所有不安全的洞号。程序中用a数组元素模
拟一个洞,数组元素的下标即为洞号,数组元素中的值为0时,表示该洞安全,为1时表示该洞不安
全。
例如:若形参n的值为30时,不安全的洞号为0、2、5、9、14、20、27
【代码】

#include<stdio.h>
main()
{
	int n;
	scanf("%d",&n);
	int a[n];
	int f = 1;
	for(int i=0;i<n;i++){
		a[i] = 0;
	}
	for(int i=0;i<n;i=i+f){
		a[i] = 1;
        printf("%d,",i);
		f++;
	}
}

Java

1、面积类重写

【题目】(java,15分)方法的重载的应用。设计一个求几何图形--圆、长方形面积的类,根据用户设置的
参数自动调用对应的方法实现。
输出样例:
半径为3的圆的面积是:28.27
边长为4,5的长方形的面积是:20.00
【代码】


class Area{
	public static double area(double r) {
		return Math.PI*r*r;
	}
	public static double area(double x,double y) {
		return x*y;
	}
}


public class 面积类 {
	public static void main(String[] args) {
		System.out.println("半径为3的圆的面积是:"+Area.area(3));
		System.out.println("边长为4,5的长方形的面积是:"+Area.area(4,5));
	}
}

2、随机点名器

【题目】(java,15分)随机点名器。编写一个随机点名器程序,使其能够在全班同学中随机点中某一名同
学的名字。包括三个模块:存储全班同学的名字、总览全班同学的姓名和随机点取其中一人姓名。
运行样例:
--------随机点名器-------
存储第1个姓名:张春晓
存储第2个姓名:李思思
存储第3个姓名:王启明
第1个学生姓名:张春晓
第2个学生姓名:李思思
第3个学生姓名:王启明
被点到名的同学是:王启明
【代码】

      package 专业技能测试A卷;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class 随机点名器 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<String> names = new ArrayList<String>();
		System.out.println("--------随机点名器---------");
		for(int i=1;i<=3;i++) {
			System.out.print("存储第"+i+"个姓名:");
			names.add(sc.next());
		}
		for(int i=1;i<=3;i++) {
			System.out.println("第"+i+"个学生姓名:"+names.get(i-1));
		}
		Random random = new Random();
		System.out.println("被点到名的同学是:"+names.get(random.nextInt(3)));
	}
}

3、隔离病毒 dfs

【题目】(java,20分)某地区爆发病毒,给定一个矩阵,x代表隔离墙,o代表病毒,病毒区域是由它水平方向或垂直方向
上相邻的病毒连接而成,斜角连接不会构成病毒区域。你要计算出矩阵中有几个病毒区域(假设矩阵
周边是被隔离墙包围的).

【代码】

      public class 隔离病毒 {
	static int x,y;
	static int nums[][];
	static char matrix[][];
	static int ans=0;
	public static void main(String[] args) {
		// x隔离墙 o病毒
		Scanner sc = new Scanner(System.in);
		x = sc.nextInt();
		y = sc.nextInt();
		nums = new int[x][y];
		matrix = new char[x][y];
		for(int i=0;i<x;i++) {
			String string = sc.next();
			for(int j=0;j<y;j++) {
				matrix[i][j] = string.charAt(j);
			}
		}
		for(int i=0;i<x;i++) {
			for(int j=0;j<y;j++) {
				if(matrix[i][j]=='o'&&nums[i][j]==0) {
					dfs(i,j);
					ans++;
				}
			}
		}
		System.out.println(ans);
	}
	public static void dfs(int i,int j) {
		if(i<0||i>=x||j<0||j>=y) {
			return;
		}
		if(nums[i][j]==1) {
			return;
		}
		if(matrix[i][j]=='x') {
			return;
		}
		if(matrix[i][j]=='o') {
			nums[i][j] = 1;
		}
		dfs(i-1,j); // 向上走
		dfs(i+1,j); // 向下走
		dfs(i,j-1); // 向左走
		dfs(i,j+1); // 向右走
	}
}
原文地址:https://www.cnblogs.com/lyhLive/p/13886550.html