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

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

然后排序,找出大于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. Automate the Sizing of your SGA in Oracle 10g

    How much memory does each of the individual components of the SGA need? Oracle now has methods to de ...

  2. JQuery 选择器 筛选器

    什么是jQuery对象 参考:http://jquery.cuishifeng.cn/css.html jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQue ...

  3. Swagger RESTful API文档规范

    *注意编写的关键词:“必须”.“不能”.“需要”.“应当”,“不得”.“应该”.“不应该”,“推荐”.“可能”和“可选的” 原文链接:http://swagger.io/specification/ ...

  4. springmvc源码解析-初始化

    1.      概述 对于Web开发者,MVC模型是大家再熟悉不过的了,SpringMVC中,满足条件的请求进入到负责请求分发的DispatcherServlet,DispatcherServlet根 ...

  5. PyQt4(简单布局)

    import sys from PyQt4 import QtCore, QtGui app = QtGui.QApplication(sys.argv) widget = QtGui.QWidget ...

  6. UIButton的两种block传值方式

    UIButton的两种block传值方式 方式1 - 作为属性来传值 BlockView.h 与 BlockView.m // // BlockView.h // Block // // Create ...

  7. 字符串,元组,列表; 切片&range

    总结:字符串: "" 组成元组: () 组成列表: [] 组成 切片 中括号冒号: [5: 0: -2] # print(s2[5:0:-2]) 此步长为-2,则从右往左取, 则a ...

  8. 快速搭建一个Express工程骨架

    下载express-generator 通过应用生成器,可以帮我们快速搭建项目需要的骨架.这就需要npm在全局下载express-generator(-g就是在全局安装) npm install ex ...

  9. I - Matches Game(异或运算符的使用)

    I - Matches Game Description Here is a simple game. In this game, there are several piles of matches ...

  10. Keepalived 实现双机热备

    原理 首先有一个虚拟ip暴露给客户端,虚拟ip对应的mac地址为一台真实服务器, 即用户向虚拟ip发送一个请求,该请求会被分发到真实服务器上. 现在有2台真实服务器,一台master,一台backup ...