美文网首页
8 -11作业汇总

8 -11作业汇总

作者: cGunsNRoses | 来源:发表于2017-10-09 22:44 被阅读0次

    8、15work

    1、自己独立写出冒泡排序及选择排序

    一、冒泡排序

    二、选择排序

    2. 找出数组元素中,差值(绝对值)最小的两个元素。

    int[] intArr ={20,90,13,88,1,15,40};

    //差值最小的两个数的下标

    int miny = 0;

    int minx = 0;

    //最小差值、

    int minDf = Math.Abs (intArr [0] - intArr [1]);

    for (int i = 0; i < intArr.Length - 1; i++) {

    for (int j = i + 1; j < intArr.Length; j++) {//前面两个比较过了 ,从第二个开始,为了后面两个也取到 只-1

    //计算两个数的差值

    int dif = Math.Abs (intArr [i] - intArr [j]);

    if (minDf > dif) {

    minDf = dif;

    minx = i;

    miny = j;

    }

    }

    }

    Console.WriteLine ("{0},{1}", minx, miny);

    3.  使用数组描述正整数的二进制表示,如5,则数组为{1,0,1} 。

    int n  =int.Parse(Console.ReadLine ());

    string binatyStr = "";

    while (n > 0) {

    int i = n %2;

    binatyStr += i;//字符串拼接起来

    n /= 2 ;

    }

    // Console.WriteLine (binatyStr);

    //字符串长度即是数组长度

    int[] binary = new int[binatyStr.Length];

    //得到字符串的字符数组

    char[] chars  = binatyStr.ToCharArray ();

    int j =0;

    for (int i = binatyStr.Length - 1; i >= 0; --i) {

    binary [i] = chars [j] - 48;//把char 最后一个放到  int第一个去

    ++j;

    }

    for (int i = 0; i < binatyStr.Length; ++i) {

    Console.Write (binary[i]);

    }

    C:

    4、思考和实现简单插入排序

    插入排序

    选择第一个有序数a {0 }

    int[] intArr ={20,90,13,88,1,15,40};

    int temp;

    //记录需要比较的数的下标

    int p;

    for(int i = 1;i < intArr .Length;i++){// 往前比 i 不用等于 0

    temp = intArr[i];// temp = 第 i 个

    p = i -1;

    while (p >= 0 && temp < intArr [p]) {

    //后移操作

    i是不变的  [p+1]是因为第一位的时候p = -1;

    intArr [p + 1] = intArr [p];

    --p;

    }

    intArr [p + 1] = temp;

    }

    for (int i = 0; i < intArr.Length; ++i) {

    Console.Write (intArr[i]+" ");

    8、16work

    1、输入一个5行5列的二维数组,编程实现:

    (1)求出其中的最大值和最小值及其对应的行列位置.

    const int m = 5;

    const int n = 5;

    int[,] arr = new int[5,5];

    for(int i = 0;i<5;i++){

    for (int j = 0; j < 5; j++) {

    arr [i, j] = int.Parse (Console.ReadLine ());

    }

    }

    //

    int max = arr [0, 0], max_x = 0, max_y = 0;

    int min = arr [0, 0], min_x = 0,min_y = 0;

    for (int i = 0; i < 5; ++i) {

    for (int j = 0; j < 5; ++j) {

    if (max < arr [i, j]) {

    max = arr [i, j];

    max_x = i;

    max_y = j;

    }

    if (min > arr [i, j]) {

    min = arr [i, j];

    min_x = i;

    min_y = j;

    }

    }

    }

    Console.WriteLine ("最小值{0} 对应位置为{1} {2}", max, max_x, max_y);

    Console.WriteLine ("最小值{0} 对应位置为{1} {2}", min, min_x, min_y);

    (2)求出对角线上各元素之和.

    int[,] arr = new int[5,5]{{11,21,31,41,15},{12,34,11,13,14},{32,21,22,43,41},{6,3,1,5,2},{10,12,91,12,34}};

    int sum = 0;

    for (int i = 0; i < 5; ++i) {

    for (int j = 0; j < 5; ++j) {

    if (i == j) {

    sum += arr [i, j];

    }

    }

    }

    Console.WriteLine ("sum = "+ sum);

    2. 求{"a","ba","bc","bad","abcde"}这个字符串数组中,字母a出现的次数

    string[] arr = {"aaaa","aaba","bc","bad","abcde"};

    int time = 0;

    for (int j = 0; j < arr.Length; j++) {

    string a = arr [j];

    char[] chars = a.ToCharArray ();

    for (int i = 0; i < chars.Length; i++) {

    if (chars [i] == 'a') {

    time++;

    }

    }

    }

    Console.WriteLine (time );

    foreach (string str in arr) {

    foreach (char ch  in str) {//在string 中可以取出char 类型

    if (ch == 'a') {

    ++time;

    }

    }

    }

    Console.WriteLine ("time ="+ time );

    B:

    3. 有一行英文语句,统计其中的单词个数(规定:单词之间以空格分隔),并将每一个单词的第一个字母改为大写

    string  a ="hello boy how are you be be";

    char[] chars = a.ToCharArray ();

    int number = 0;

    for (int i = 0; i < chars.Length; i++) {

    if (chars [0] <= 122 && chars [0] >= 97) {

    char z = (char)(chars [0] - 32);

    chars [0] = z;

    }

    if (chars [i] == ' ') {

    number++;

    char x = (char)(chars [i + 1] - 32);

    chars [i + 1] = x;

    }

    }

    for (int i = 0; i < chars.Length; i++) {

    Console.Write (chars [i]);

    }

    Console.WriteLine (number+1);

    string  a ="  hello boy how are you be be  ";

    // string []str =  a.Split (' ');//根据空格分割字符串数组  string方法  数组长度即是单词数量

    string new_a = a.Trim();//去掉前后空格

    int number = 0;

    char[] charArr = new_a.ToCharArray();//转成一个新的字符数组

    for (int i = 0; i < new_a.Length; ++i) {

    char ch = charArr  [i];

    if (i == 0) {

    if (ch >= 97 && ch <= 122) {

    charArr [i] = (char)(ch - 32);

    }

    }

    if (ch == ' ') {

    number++;

    char next_ch = new_a.ToCharArray () [i + 1];//把下一个转成字符

                                                                     //检查是否为小写字母

    if (next_ch >= 97 && next_ch <= 122) {

    charArr [i + 1] = (char)(next_ch - 32);

    }

    }

    }

    // string new_str = new string (charArr);//

    string  new_str = "";

    foreach(char  ch in charArr){

    new_str += ch.ToString();

    }

    Console.WriteLine (new_str);

    C:

    4. 求二维数组{{1,2,3},{4,5,6},{7,8,9}}的鞍点。(鞍点:在行中最大,在列中最小的元素的位置,二维数组也可能没有鞍点)

    11  21 31

    10 50 70

    //5 21 31

    int [,] arr = {{4,21,31},{6,11,31},{7,21,31}};

    int max_i = 0, max_j = 0;

    //找出行最大的数  再在列中比较

    for (int i = 0; i < 3; i++) {

    int max = 0;

    for (int j = 0; j < 3; ++j) {//判断是否是行中最大

    if (max < arr [i, j]) {

    max = arr [i, j];

    max_i = i;

    max_j = j;

    }

    }

    bool isSaddlePoint = true;

    for (int k = 0; k < 3; k++) {//判断是否是列中最小的

    if (max > arr [k, max_j]) {

    isSaddlePoint = false;

    }

    }

    if (isSaddlePoint == true) {

    Console.WriteLine ("有鞍点  {0}  {1}",max_i,max_j);

    }

    }

    8、17

    题型比较简单,枚举题型 参考C#(10)

    // 1、定义一个枚举类型PrimitiveType用来表示常用的游戏物体,

    // 该枚举包含枚举数:正方行Cube,胶囊体Capsule,圆柱体Cylinder,平面Plane,四边形Quad。

    // 定义该枚举类型的变量并赋值,输出其默认的整型值

    2、建立一个描述日期(Data)的枚举,描述星期一到星期天。

    // 然后实现如下代码:

    // 周一去钓鱼,

    // 周二去爬山,

    // 周三去上课,

    // 周日在家休息。

    // 完成设定后输出即可。

    8yue18

    1、分别根据X,  X和Y,XYZ    初始化三维向量 ,同时YZ ,Z为初始值

    2、//创建学生结构体 包含姓名,年龄,学号,分数,有5个学生保存在结构体数组中,编程找出分数最高者

          //对学生数组按照年龄排序并让学生按照年龄升序进行自我介绍


    周末思考题

    1、模拟电影票选座系统,将100个座位号当做10*10二维数组,然后用0表示该座位未售出,1表示已售出,            任意顾客来买票时,若为1张,则随即抽取一个编号,若为2张,优先选择并排连续的座位,若无连座,则随即选取2个座位号。(使用随机数模拟)

    2、现需要开发一款卡牌类手游,

    每个玩家可以选择一名英雄并开始游戏,游戏中会可以不断提升等级和不断获得新装备。直至通关。

     请创建结构体存放英雄的信息,和装备的信息(自行补充信息)【腾讯面试题】

    3、.  有100000个qq号,从000000到999999不等,在只读取1遍的前提下将其中重复的qq号挑出。(使用随机数模拟,数组长度不限)【谷歌面试题】

    4、思考1000的阶乘尾部有多少个0。

    相关文章

      网友评论

          本文标题:8 -11作业汇总

          本文链接:https://www.haomeiwen.com/subject/xwrbrxtx.html