zoukankan      html  css  js  c++  java
  • 数组练习

    //
    //  main.c
    //  数组练习
    //
    //  Created by zhangxueming on 15/6/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    //#include <stdbool.h>
    
    //7.计算某个由英文、数字以及标点符号构成的数组的总宽度,其中英文字符的宽度为
    //1cm,数字宽度为 0.5cm、标点符号宽度为 0.8cm。
    //8.接上题,如果规定行的宽度为 10cm,将某个字符长度超过 50 的字符串截断,恰好 使 10cm 宽的行能容纳。输出这个被截断的子数组。
    //rtyuiopgfdfgjfghjklkjh
    float getCharacterWidth(char ch)
    {
        if ((ch>='A' && ch<='Z') || (ch>='a' && ch<='z')) {
            return 1.0;
        }
        else if(ch>='0' && ch<='9')
        {
            return 0.5;
        }
        else
        {
            return 0.8;
        }
    }
    
    //int main(int argc, const char * argv[]) {
    //    char str[100]={};
    //    int cnt =0;
    //    float length = 0.0;
    //    
    //    for (int i=0; i<100; i++) {
    //        scanf("%c",&str[i]);
    //        if (str[i]=='
    ') {
    //            str[i]='';
    //            break;
    //        }
    //        cnt++;
    //    }
    //    int i=0;
    //    for (; i<cnt; i++) {
    //        length+= getCharacterWidth(str[i]);
    //        if (length>10.0) {
    //            str[i]='';
    //            break;
    //        }
    //    }
    //    
    ////    for (int j=0; j<i; j++) {
    ////        printf("%c", str[j]);
    ////    }
    //    printf("%s
    ", str);
    //    return 0;
    //}
    
    //13.给定一个 5 个元素构成的整型数组,每个元素的值都在 0-9 之间,按照位置将其组成一个 5 位数并输出,例如 int a[5] = {1,2,2,3,7};则输出 73221。
    //num = 7
    //num*10+3 = 73
    //num*10+2 = 732
    //num*10+2 = 7322
    //num*10+1 = 73221
    //int main(int argc,const char *argv[])
    //{
    //    int a[5]={};
    //    int num = 0;
    //    for (int i=0; i<5; i++) {
    //        scanf("%d", &a[i]);
    //    }
    //    for (int i=4; i>=0; i--) {
    //        num = num*10+a[i];
    //    }
    //    printf("num = %d
    ", num);
    //    return 0;
    //}
    
    //18.判断一个整型数组是否是对称数组,例如a[6]={1,2,3,3,2,1}和{1,6,8,1,8,6,1}都是对称数组。
    typedef enum {
        false,//0
        true  //1
    }bool;
    
    bool isSymmetryArray(int a[], int len)
    {
        for (int i=0; i<len/2; i++) {
            if (a[i]!=a[len-i-1]) {
                return false;
            }
        }
        return true;
    }
    
    //int main(int argc,const char *argv[])
    //{
    //    int a[6]={1,2,3,3,2,1};
    //    printf("%d
    ", isSymmetryArray(a,6));
    //    return 0;
    //}
    
    //30.给定一个英文句子,单词之间用 1 个空格分开,求出第 2 个单词的偏移位置。例如
    //“Professor du comes from Korea”的偏移位置是 10。
    
    //int main(int argc,const char *argv[])
    //{
    //    char str[100]={};
    //    scanf("%[^
    ]", str);
    //    //scanf("%[A-Z,a-z,0-9]",str);
    //    //printf("%s", str);
    //    int i=0;
    //    while (str[i]) {
    //        if (str[i]==' ') {
    //            break;
    //        }
    //        i++;
    //    }
    //    printf("%d",i+1);
    //
    //    return 0;
    //}
    
    //43.围圈报数
    //有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号的哪位.
    //0 0 0 1 0  3
    
    //int main(int argc,const char *argv[])
    //{
    //    int a[100]={};
    //    int n,m;
    //    int cnt=0;//统计出局的人数
    //    int k=0;//报数
    //    int i=0;
    //    scanf("%d%d", &n, &m);
    //    if (n<0||n>100) {
    //        return -1;
    //    }
    //    
    //    for (i=0; i<n; i++) {
    //        a[i]=1;
    //    }
    //    i=0;
    //    while (cnt<n-1) {
    //        if (a[i]) {
    //            k++;
    //            if(k==m)
    //            {
    //                a[i]=0;
    //                k=0;
    //                cnt++;
    //            }
    //        }
    //        i++;
    //        if (i==n) {//判断边界
    //            i=0;
    //        }
    //    }
    //    for (i=0; i<n; i++) {
    //        if (a[i]) {
    //            printf("%d", i+1);
    //            break;
    //        }
    //    }
    //    return 0;
    //}
    
    //猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
    //10  1
    //9   (1+1)*2  4
    //8   (4+1)*2  10
    
    int func(int n)
    {
        if (n==10) {
            return 1;
        }
        else if(n>10)
        {
            return 0;
        }
        return (func(n+1)+1)*2;
    }
    
    //int main(int argc, const char *argv[])
    //{
    //
    //    printf("%d
    ", func(8));
    //    
    //    return 0;
    //}
    
    //4..输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)
    //比如:a[10]=
    //输入:1 2 2 3 4 5 6 7 8 9
    //输出:2
    //数据结构: 定义一个整型数组 int count[10] 存储每个元素的个数, 开始时每个元素个数初始化为1
    //
    //算法:
    //(1) 利用双层循环, 每一个元素都与后面一个元素比较, 如果两者相同, 则该元素次数+1,
    //(2) 以上的算法中两个相同的元素的次数是一样的, 优化如下, 比较两个元素的时候, 如果两者相等, 则该元素次数+1, 后面的元素次数设置为0, 比较的时候再判断这个元素是否已经比较
    //
    //伪代码:
    //
    //定义数组保存每个元素次数
    //
    //使用双层循环遍历数组
    //如果当前元素后后面元素相等, 并且后面的元素次数不为0
    //当前元素次数+1, 后面的元素次数设置为0
    //
    //从保存每个元素次数的数组中查找最大的值
    
    //a[10]=
    //1 2 2 5 4 5 2 7 5 9
    //count[10]
    //1 3 0 2 1 0 0 1 1 1
    
    
    int main(int argc,const char *argv[])
    {
        int a[10]={};
        int cnt[10]={};
        for (int i=0; i<10; i++) {
            scanf("%d", &a[i]);
        }
        for (int i=0;i<10; i++) {
            cnt[i]=1;
        }
        
        for (int i=0; i<10; i++) {
            if (cnt[i]) {
                for (int j=i+1; j<10; j++) {
                    if (a[i]==a[j]) {
                        cnt[i]++;
                        cnt[j]=0;
                    }
                }
            }
        }
        
    //    for (int i=0; i<10; i++) {
    //        printf("%d ", cnt[i]);
    //    }
        
        //查找cnt数组中的最大值
        int max = cnt[0];
        for (int i=1; i<10; i++) {
            if (max<cnt[i]) {
                max = cnt[i];
            }
        }
    
        //输出数值
        for (int i=0; i<10; i++) {
            if (max==cnt[i]) {
                printf("%d ", a[i]);
            }
        }
        return 0;
    }
  • 相关阅读:
    [solution]xdebug正确配置,但不显示错误信息
    SIGCHLD信号
    sigsuspend
    信号引起的竞态
    智力面试题
    可重入和不可重入
    信号—信号处理函数(捕捉)
    PCB信号集
    信号产生的原因:
    信号初步
  • 原文地址:https://www.cnblogs.com/0515offer/p/4547170.html
Copyright © 2011-2022 走看看