C语言的一道数组题Plus
其实数组那部分当时学的东西挺简单的.
常见的题就是用一个数组装几个数字.
然后排序,找出大于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的更多相关文章
- C语言变长数组data[0]
1.前言 在刷题时遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0] ...
- ny525 一道水题
一道水题时间限制:1000 ms | 内存限制:65535 KB 难度:2描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他吗? ...
- 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题
在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...
- POJ-1200 Crazy Search,人生第一道hash题!
Crazy Search 真是不容易啊,人生第一道hash题竟然是搜博客看题解来的. 题意:给你 ...
- NYOJ-525一道水题思路及详解
一道水题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他 ...
- C语言程序设计之 数组2020-10-28
C语言程序设计之 数组2020-10-28 整理: 第一题:求最小数与第一个数交换 [问题描述] 输入一个正整数n (1<n<=100),再输入n个整数,将最小值与第一个数交换,然后输 ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- C语言中的数组的一些笔记
C语言是面向过程的语言. 计算数组长度: Int count =sizeof(ages)/sizeof(int); C语言里面输出字符串,必须以'\0'结束,如果没有则一直执行下去. Char nam ...
- 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...
随机推荐
- zTree设置异步加载后展开
//不能直接配置展开属性 因为没有数据,需要添加回调函数,异步加载成功展开 callback: { onAsyncSuccess: zTreeOnAsyncSuccess } //异步加载成功回调函数 ...
- zabbix系列之六——安装后配置二Items
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/snmp 1Items 1.1creating items ...
- WiFi 干扰器,有时间可以去试试呦!
转自社区: 0X01 引言 想不想搞个WIFI干扰器?网上搜集了一下资料,发现用esp8266可以实现简单的干扰功能,包括断网.复制.欺骗等等.刚好手上有块Tpyboard V202(30元),也是e ...
- SQLSERVER性能计数器的简单剖析
SQLSERVER性能计数器的简单剖析 今晚看了这篇文章:SQL Server 2012新performance counter:非常实用的Batch Resp Statistics 文章里介绍到SQ ...
- Django之modelform修改数据库
工程包目录:https://github.com/kongzhagen/python/tree/master/Django 目的: 客户信息表Customer在前端以表单形式展示 提交Customer ...
- SQL SERVER常用语法汇总
阅读目录 一.SQL分类 二.基础语句 三.sql技巧 四.(MS SQL Server)SQL语句导入导出大全 回到目录 一.SQL分类 DDL—数据定义语言(CREATE,ALTER,DROP,D ...
- python 下字符串格式时间比较
python 下有多个有关时间的模块,分别是time.datetime.calendar,今天重点讨论下time写法. 其中time模块,主要有以下方法: ltime=time.time() 获取当前 ...
- Opengl---gluLookAt函数详解(转)
转自 http://www.cnblogs.com/jiangu66/archive/2013/04/06/3003122.html 下面的一段摘自百度百科: 视点转换 函数原型 void gluLo ...
- 超强IIS站点工具一键设置PHP,支持多个PHP同时运行
PHPWAMP8.8.8.8IN支持三大主流Web服务器:iis.apache.nginx NGINX站点管理.IIS站点管理.Apache站点管理均支持php多版本同时运行,无限自定义mysql.p ...
- Zepto的SwipeUp 在 android 和微信 的解决方案
Zepto的SwipeUp 在 android 和微信 的解决方案 时间:2016-04-19 22:20:09 作者:zhongxia 问题解决方案: Q:为什么swipeUp和swipeDown在 ...