其实数组那部分当时学的东西挺简单的.

常见的题就是用一个数组装几个数字.

然后排序,找出大于n的数字有几个,有几个重复数字之类的.

去年想出来一个题.

因为以前写的代码太复杂,又有很多不足和bug.所以今天重新写了下.

小明想要记录多个数字(即装到数组中),最多有50个数字,(都是十进制数)

但他不知道输入多少个好,请你设计一段代码来满足他的需求.(数字范围在int内)

并输出这些数字.

不考虑输入文章未出现的情况.(例如输入一个封号 ';' )

********************************************************************************

Q:我们在int n[50]后如何记录数字?

因为常用的记录数字往往是将数组全部装完

或者是先输入一个数字来决定数组长度

若果只是用循环来记录数字就会陷入死循环(没有那么多的数字)

Think:用一个特殊的数字来结束 例如输入0来结束 if(n[i]==0)break;←这样

但如果输入的数字里刚好有这个数字就会出现问题.

/*****************************************************
*
*    思想:将每个数字改成获得单个字符再转换(1)
*        获得空格或回车就将以获得的数字装进数组(2)
*        *装满或获得两次回车就结束(3)
*
*        1.num用来装已获得的数字
*        2.js对数字计数
*          flag表示能否计数
*        3.flagn表示是否获得了一个回车
******************************************************/
#include<stdio.h>
#include<stdlib.h>
#define N 50

int main(int argc,char** argv){
    ,flag = ,flagn = ;
    char ex;
    ){
        if(scanf("%[0-9]",&ex)){
            flag = ;                        //可以计数 flag
            flagn = ;                        //不结束循环
            num=num*+ex-;                //利用asc II码来计算num
        }
        else if(scanf("%[ ]",&ex)){            //选择空格字符
            if(flag){
                math[js++]=num;                //录入数字 数字数量+1
                )break;            //达到上限
            }
            num = flagn = ;                //num归零 不结束循环
            flag = ;                        //不可计数 flag
        }
        else if(scanf("%c",&ex) && ex == '\n'){    //选择回车符
            if(flag)math[js++]=num;                //计数 数字+1
            num = flag = ;                        //num归零 不可计数 flag
            if(flagn)break;                        //将会*以双回车结束
            flagn = ;
        }
        if(js==N)break;                    //达到上限
    }                                    //循环结束了 

    if(!js){                            //*无数字处理
        printf("NULL.\nEnd.\nThere are %d numbers.\n",js);
        system("PAUSE");
        ;
    }
    num=;
    printf("Have %d number.\n",js);
    while(js--){
        printf("%-5d",math[num++]);
        ))printf("\n");
    }
    system("PAUSE");
    ;
}

Way2:将数字以十六进制来读取将十六进制转换为十进制 添加要求:以十六进制数a作为结束语句(其实只要是大于十的进制都可以)

代码如下:

#include<stdio.h>
#include<stdlib.h>
#define N 50

int main(int argc,char** argv){
    ,changdu=,n=;
    ){
        scanf("%x",&num);
        ){
            math[n++]=num;            //个位数直接赋值
            if(n==N)break;            //达到上限
            continue;
        }
        )break;        //输入十六进制数a 结束输入数字
        shu=num;
        while(shu){
            changdu*=;            //将该十进制的十六进制最高位所代表的数计算出来即changdu
            shu/=;
        }                            //shu==0

        changdu/=;
        while(changdu){
            shu=shu*+num/changdu;             num%=changdu;        //去掉数字num的十六进制最高位的数
            changdu/=;
        }
        math[n++]=shu;
        if(n==N)break;                //达到上限
    }
    printf("There are %d numbers.\n",n);
    shu=num=;
    while(n--){
        printf("%-5d",math[shu++]);
        ))printf("\n");
    }
    system("PAUSE");
    ;
}

个人觉得第一种比较好,没有要求以十六进制数a作为结束语句

更方便啊! QAQ

C语言的一道数组题Plus的更多相关文章

  1. C语言变长数组data[0]

    1.前言 在刷题时遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0] ...

  2. ny525 一道水题

    一道水题时间限制:1000 ms  |  内存限制:65535 KB 难度:2描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他吗? ...

  3. 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题

    在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...

  4. POJ-1200 Crazy Search,人生第一道hash题!

                                                        Crazy Search 真是不容易啊,人生第一道hash题竟然是搜博客看题解来的. 题意:给你 ...

  5. NYOJ-525一道水题思路及详解

    一道水题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他 ...

  6. C语言程序设计之 数组2020-10-28

    C语言程序设计之 数组2020-10-28 整理: 第一题:求最小数与第一个数交换 [问题描述] ​ 输入一个正整数n (1<n<=100),再输入n个整数,将最小值与第一个数交换,然后输 ...

  7. C语言学习004:数组与指针

    在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的

  8. C语言中的数组的一些笔记

    C语言是面向过程的语言. 计算数组长度: Int count =sizeof(ages)/sizeof(int); C语言里面输出字符串,必须以'\0'结束,如果没有则一直执行下去. Char nam ...

  9. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

随机推荐

  1. windows 删除删除不掉的文件

    DEL /F /A /Q \\?\%1RD /S /Q \\?\%1 windows下删除删除不掉的文件: 1.打开记事本,把上面的命令复制进去 2.保存,后缀名改为.bat,ok 3.把想要删除的文 ...

  2. Pig join用法举例

    jnd = join a by f1, b by f2;   join操作默认的是内连接,只有两边都匹配才会保留   需要用null补位的那边需要知道它的模式: 如果是左外连接,需要知道右边的数据集的 ...

  3. MQTT介绍(3)java模拟MQTT的发布,订阅

    MQTT目录: MQTT简单介绍 window安装MQTT服务器和client java模拟MQTT的发布,订阅 在此强调一下mqtt的使用场景: 1.不可靠.网络带宽小的网络 2.运行的设备CPU. ...

  4. python学习手册中的一些易忘的点(第4部分)

    1.python函数高聚合低耦合1)对于输入使用参数并且对于输出使用return2)只有在真正必要的情况下使用全局变量3)不要改变可变类型的参数,除非调用者希望这样做4)每个函数都应该有一个单一的.统 ...

  5. ubuntu16.04安装网易云音乐

    源网址 对于网易,我只服云音乐,业界良心,用过的人都知道.我最喜欢的就是歌曲的评论功能,还有朋友圈子.里面有很多好段子,还有很多的好故事,基本上,不是分手,就是回忆初恋,还有吐槽的.我认为音乐带给人的 ...

  6. ASP.NET中使用UpdatePanel时用Response输出出现错误的解决方法

    asp.net中执行到Response.write("xx");之类语句或Microsoft JScript 运行时错误: Sys.WebForms.PageRequestMana ...

  7. leveldb源码分析--WriteBatch

    从[leveldb源码分析--插入删除流程]和WriteBatch其名我们就很轻易的知道,这个是leveldb内部的一个批量写的结构,在leveldb为了提高插入和删除的效率,在其插入过程中都采用了批 ...

  8. MySQL: sql_safe_updates

    在my.cnf中设置sql_safe_updates=1 启动mysqld失败. error log报错: 2018-11-20T14:28:14.567022+08:00 0 [ERROR] unk ...

  9. 定制NSError

    定制NSError 效果: 系统的NSError是可以自己定制的,以下提供代码来实现并表示如何使用: YXError.h 与 YXError.m // // YXError.h // CustomYX ...

  10. 所有文章的测试Demo

    Mqtt C++ Client 测试Demo https://pan.baidu.com/s/1Ue00GYv2SUd8aTquhvOW1w