请问有没有C语言大神指点我这个程序究竟是怎么运行?是做什么功能的?有运行截图!求解,谢谢

#include
#include
int main(void){
char ch;
long number=0;
while((ch=getchar())<'0'||ch>'6')
;
while(ch!='?'&&ch>='0'&&ch<='6'){
number=number*7+ch-'0';
printf("%ld#",number);
ch=getchar();
}
printf("\n");
}

图片说明

0

4个回答

 while ((ch = getchar()) < '0' || ch > '6');如果输入的不是0-6之间的字符,这个循环就会一直执行getchar(),如果遇到一个0-6之间的字符,就把这个字符赋值给ch。
while (ch!= '?' && ch >= '0' && ch<= '6')这句意思就是如果ch!=‘?’和ch>='0'和ch<=‘6’这3个条件有一个为假时退出循环,否则执行循环体。
当你输入c2470f?的时候,第一个循环读到c字符的适合不满足退出条件,所以继续执行getchar();读到2字符的时候,满足条件退出循环。
这时候到第二个循环,ch = ‘2’满足循环条件,所以执行循环体,ch-'0'就是把char型转换成了int型,是按字符的ascii码计算的,在这里就是把数字字符转换成了数字,所以number = 0*7+2 = 2;
打印出2#,然后下一个getchar读到了‘4’,还满足第二个循环条件,这个时候number = 2了,所以在执行 number =number * 7 + ch - '0';的时候number = 2*7+4 = 18,打印出18#,再次执行getchar的时候ch=‘7’,不满足循环条件,所以退出了。
所以打印结果就是2#18#
3

输入字符,如果该字符小于0或者大于6,则不进行操作,继续输入字符,如果该字符在0-6之间,则进行number=number*7+该字符-0;由例子说明一下。一开始出入C,,不在0-6之间,不进行操作,接着输入2,满足0-6.初始number为0.进行number=number*7+该字符-0运算。0*7+2-0=2,number为2输出2#.接着输入4,满足0-6.进行number=number*7+该字符-0运算。2*7+4-0=18.输出18#,后面的输入都不满足0-6之间。所以输出就是2#18#

1

如果还有不理解,请追问。

1
caozhy
weixin_45841714 回复qq_31429225: 第一,getchar()得到的就是char类型,第二,char只占用1个字节,并且可以完成任务,不需要4个字节的int。如果我们可以用少的内存就没有必要浪费。
一年多之前 回复
qq_31429225
EveryLink 谢谢! 还有请问这个程序既然是七进制转换为十进制的功能,为什么要使用char型,而不直接使用int型呢?
一年多之前 回复

是将7进制数转成10进制数

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linux下C语言实现C/S模式编程(附源码,运行截图)
由标题可知,这篇博客主要讲如何用C语言实现一个C/S模式的程序。 主要功能:时间回送。 客户机发出请求,服务器响应时间,并返回服务器时间,与客户机进行同步。
统计字符串中的汉字个数
//问题描述:统计字符串中的汉字个数。 //解题思路是:从汉字机内码的特点考虑:一个汉字是有两个ASCII字符构成,且这两个字符的ASCII码值小于0。 #include #include using namespace std; int GetChineseCharacterCounts(string str) //统计字符串str中的汉字个数 { int le
计算机是怎样运行的?
一,概述 微机的工作过程就是不断地从内存中取出指令并执行指令的过程! 当开始运行程序时,首先应把第一条指令所在存储单元的地址赋予程序计数器PC,然后机器就进入了取指阶段。在取指阶段,CPU从内存中读取的内容必为指令。然后送往数据缓冲寄存器DR,经DR送往指令寄存器IR。之后由指令译码器ID对IR中的指令的操作码字段进行译码,然后又PLA发出执行该指令所需要的各种微操作控制信号。取指阶段到此结束...
关于程序是怎样在STM32里运行的
单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。  计算机执
C语言的运行环境有哪些?哪些是值得推荐的?
C语言是发展比较早的一门编程语言,因而它也是发展比较成熟的一种编程语言。学习过C语言的人都知道,C语言的运行环境很多,有MicrosoftVisualC++、MicrosoftVisualStudio、DEVC++、Code::Blocks、BorlandC++、WaTComC++、BorlandC++Builder、GNUDJGPPC++、Lccwin32CCompiler3.1、HighC、T
使用IntentService解决点我达骑手APP消息提醒机制中的优先级排序问题
最新版的点我达骑手APP对新订单消息提醒、订单信息被修改、新的可抢订单等声音及制动提醒做出了规范和优化,加入了消息提醒(包括声音及振动提醒)优先级机制,即在优先级较高的声音在播放过程中有优先级较低的声音插入播放队列,则忽略优先级较低的声音不进行播放;优先级较低的声音在播放过程中有优先级较高的声音插入播放队列,则在优先级较低的声音播放结束后再对插入的优先级较高的声音进行播放。本文从如何更安全高效的执行
fortran程序
这个程序我怎么运行就是不报错,但是却运行不出结果!跪求大神帮助!
c语言中在main函数之前会执行什么
一般程序中都是认为C语言程序在运行过程中,是由Main函数开始,最后到Main函数结束。 实际上,在可执行文件被加载之后,控制权立即交给由编译器插入的Start函数,它将对后面这些全局变量进行准备: _osver 操作系统的构件编号_winmajor 操作系统的主版本号_winminor 操作系统的次版本号_winver 操作系统完全版本号   _argc 命令行参数个数   _arg...
我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。
package cn.itcast_04; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /*  * 问题?  * 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添
计算机是如何执行程序的(以汇编一个简单的C程序,分析汇编代码为例)
ahnselina   原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000  下面为test.c的代码: int g(int x) { return x + 1; } int f(int x) { return g(x); } int main(v
浅析Linux下gcc环境的C语言运行
一)、Linux中的程序运行过程。 1、在使用gcc -g -Wall **.c -o ** -v命令后: -g:可以在可执行文件里面添加调试信息 -Wall:W是警告的意思,all则是所有,因此这条语句可以帮助显示所有警 告信息 -v:这条语句可以显示在编译时的所有信息 下面是执行命令后显示的基础信息:包括执行编译的版本信息以及进行库函数的搜索信息 2、在使用readelf语句后,我们查看了...
android.mk简介及如何直接执行C代码
Android.mk简介:Build System帮我们处理了很多细节而不需要我们再关心。例如:你不需要在Android.mk中列出头文件和外部依赖文件。Android.mk语法:首先看一个最简单的Android.mk的例子:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jni LOCAL_SRC
如果一个进程出了问题,怎么判断它是否运行?能不能重启这个进程?尝试使用守护进程来操作
可以用shell编写一个脚本来判断。能。  * 1.守护进程 守护进程的最大特点就是脱离了中断,Linux提供了一个系统调用daemon(),要想自定义实现的话,主要包括以下六个步骤: 1.第一步是使用umask函数,把所有的文件屏蔽字置0。文件屏蔽字是可以继承的,当你有相关操作时,如果你要创建一个文件,继承过来的屏蔽字可能阻止你创建相关属性的文件。比如:如果你明确的创建一个文件为组可读,组
SpringBoot 究竟是如何跑起来的?
SpringBoot 究竟是如何跑起来的? 不得不说 SpringBoot 太复杂了,我本来只想研究一下 SpringBoot 最简单的 HelloWorld 程序是如何从 main 方法一步一步跑起来的,但是这却是一个相当深的坑。你可以试着沿着调用栈代码一层一层的深入进去,如果你不打断点,你根本不知道接下来程序会往哪里流动。这个不同于我研究过去的 Go 语言、Python 语言框架,它们通常都...
C语言学习2:Windows通过命令行编译运行c程序(Hello World)及程序详解
C语言学习2:Windows通过命令行编译运行c程序(Hello World)及程序详解
简谈C语言编译运行时的栈
C语言中编译运行时的栈
C语言从源程序到可执行程序
一.0,1、文本信息和字符编码 所有的信息在计算机中都是以0、1及其组合形式存在。文本信息也不例外。 文本信息是以人类容易理解的方式来呈现信息。 计算机是在美国诞生的,英文26个字母加上其他符号只有128个,只用7个bit便可以完全表示所有符号。用8个bit,及一个byte来表示一个符号的方式就叫做ascii编码。对应的有ascii码表。 比如说要在计算机中表示"i love you"这个
C 完整的截屏源代码及注释
C 完整的截屏源代码及注释
hello world在操作系统底层的执行过程
hello world在操作系统底层的执行过程对于一个普通的hello.c程序:#include <stdio.h>int main () { printf("hello,world"); }在计算机操作系统层面的执行过程是这样的。hello程序的生命周期是从人能读懂的高级语言C程序开始,然后C语句被其他程序转化为一系列的低级机器语言指令,这些指令再按照可执行目标程序的格式打包好,并以二进制
【C】贪心算法
所谓的“贪心算法”,就是每一次面临选择时,选择最优、最先、最X的一项,反正就是突出一个“最”字。比如有1,4,3,2,让你选两个数,令选出来的数最大,你肯定按照每次选择都选择,剩余数中最大的一个数,第一次选择4,剩下还有1,3,2,这时傻子都会选择3啊,从而得出在1,4,3,2这四个数中,选出的两数和是最大的。此时,你就不知不觉地运用到了贪心算法,以最大选择为贪心。 那么,“贪心算法”真正用到编
实现一个无锁的Stack,并写一段测试代码(多线程访问),证明这个Stack是线程安全的。给出程序以及运行的截图。
实现一个无锁的Stack,并写一段测试代码(多线程访问),证明这个Stack是线程安全的。给出程序以及运行的截图。 //关键点:无锁须利用CAS类 //data static private AtomicInteger j = new AtomicInteger(0); //控制插入的指针 static private AtomicInteger
BAT某公司的一套面试题
单项选择题(共21题,限时40分钟):1. 以下函数的时间复杂度是void func( int x, int y, int z) { if (x<=0) printf(“%d,%d\n”,y,z); else { func(x-1,y+1,z); func(x-1,y,z+1); } }A: O(x*y*z)B
简单C语言程序的执行过程
程式的運行方式 在開始進行程式開發前,我們先來探討最簡單的C程式如何運作。 為了使程式足夠簡單,我們可讓CPU直接從Flash上取得指令(fetch instruction)並執行,而且程式中沒用到全域變數,因此編譯出來的目的檔(object file)中是data section長度是0,如此一來,避免了初始化RAM的步驟,因為data section是可讀寫的,如果目的檔中有dat
VC++6.0环境下调试c语言代码的方法和步骤_附图
1.C语言程序四步开发步骤 (1)编辑。可以用任何一种编辑软件将在纸上编写好的C语言程序输入计算机,并将C语言源程序文件*.c以纯文本文件形式保存在计算机的磁盘上(不能设置字体、字号等)。 (
pathon的用途
python应用领域介绍 Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用。 下面就让我们一起来看看它的强大功能: Python(派森),它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python语言的最简单的描述。 Python有一个交互式的
VC++6.0的运行C语言
转载:https://www.cnblogs.com/haore147/p/3647139.html1.C语言程序四步开发步骤 (1)编辑。可以用任何一种编辑软件将在纸上编写好的C语言程序输入计算机,并将C语言源程序文件*.c以纯文本文件形式保存在计算机的磁盘上(不能设置字体、字号等)。(2)编译。编译过程使用C语言编译程序将编辑好的源程序文件“*.c”,翻译成二进制目标代码文件“*.obj”。编...
一个C语言源程序是如何到一个可执行程序的
当我们写好一个C程序的时候,仅仅是一个.c的源程序,而我们运行完成之后就是一个.exe的可执行程序了,在这个过程中都发生了什么呢? (1).c的源程序会经过翻译环境和运行环境两个大的步骤。 其中,翻译环境包含编译和链接。 (2)而编译环境还包括三个阶段,分别是 预处理阶段,编译阶段,汇编阶段 a.预处理阶段生成*.i文件   在linux系统下可以使用gcc te
[Linux]C程序运行时环境
可能回答问题 解释main函数参数及其返回值,怎么获取main的返回值,有什么作用?printf是怎么实现传参的?然后,它是怎么去找到format格式里面对应的参数的?函数调用的堆栈映像是怎样的?int fun(){int a=1,b=1, x; x=a+b: return;}有什么结果?如果能够编译的话,会返回数值吗?返回什么数值? 参考文章 C和指针,18章(讲解非常好)
C语言源码到可执行程序一般要经过以下的处理步骤
从C语言源码到可执行程序一般要经过以下的处理步骤: 预处理 在这一阶段,源码中的所有预处理语句得到处理,例如 #include语句所包含的文件内容替换掉语句本身 所有已定义的宏被展开 根据#ifdef,#if等语句的条件是否成立取舍相应的部分 预处理之后源码中不再包含任何预处理语句。 GCC预处理阶段可以生成.i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如: gcc -E -o...
c语言中for循环的执行顺序
测试c语言中的for循环的执行顺序
c语言计算器(源代码)
/* *计算器,计算算式格式,可以存在空格,不可存在括号,等号可省略  *eg:12+12+12/2= * 12+12+12/2 * 12+12+  12*2等 *有问题希望反馈  */  #include #include #include float deal(char deal_char[]);//处理函数,将char型数字转换成float型  void add(flo
Cloud Studio腾讯云在线运行C#、C/C++等工程
      Cloud Studio 是基于浏览器的集成式开发环境,为开发者提供了一个云端工作站。支持绝大部分编程语言,包括 HTML5、PHP、Python、Java、Ruby、C/C++、.NET、小程序等等。可以任意切换开发环境,为开发者节省了配置环境的繁琐,特别适合新手学习,另外还集成了git,便于版本控制。本篇将给大家简单介绍一下如何在线运行C#、C/C++等工程。 首先,注册腾讯云开...
程序是怎么运行起来的
程序是怎么运行起来的程序是怎么运行起来的程序是怎么运行起来的程序是怎么运行起来的
C语言程序运行的步骤
C语言程序从编写到执行输出结果一般需要6个步骤:编辑(edit)、预处理(preprocess)、编译(compile)、连接(link)、装载(load)、和执行(execute)。编辑是通过编辑器书写C语言文本,该文本成为源文件,拓展名为.c(在c++系统中为.cpp)。预处理执行程序中的预处理指令(他们是为优化代码而设计的),每条预处理指令以符号#开始,结尾不带分号。例如#include #
C、CPP文件是怎样运行起来的?
C、CPP文件是怎样运行起来的? 这个问题就是编译、运行的问题,在很多面试中都会遇到。(今日头条的研发岗面试题就问到cpp文件是怎样运行起来的?) 在此,详细说明C语言的编译运行过程,CPP参考一下也就很容易明白了。 C语言是怎么运行的? 首先放一张图,说明C语言的运行过程。 C语言要想运行就要经过翻译环境,将 .c/.h 文件翻译成机器可以识别的机器码; 这个翻译过程可以分为编译...
安卓手机运行c程序
方法: 在ubuntu上利用交叉编译工具以静态库的方式编译(32位的交叉编译工具就行吧) arm-none-linux-gnueabi-gcc -o capture camera.c -static 然后将生成的capture文件拷贝到手机里(/storage/emulated/0)。 打开手机上的终端app(如Better Terminal,没有的要先下载),并通过su命令进入root用...
C语言电梯模拟程序
C语言电梯模拟程序 一直以来我对电梯很感兴趣,起初认为用C语言不可能实现电梯模拟,需要多线程的支持,因此一直以来也没有想着做。最近数据结构习题书的这道题引起了我的注意,通过几天的努力终于实现了,先将程序的实现与大家分享出来。 在这个程序关键是处理好电梯运行状态转换与乘客进出的同步进行。好在题目要求每次输入时要输入下一个乘客到来的时间,使得程序变简单了。通过一个模拟时钟,根据模拟时钟判断该运行哪
C语言,能开发什么?怎么去学习?
看招聘职位要C语言的比例真不多了,是不是C语言真的过时了? 看看很多招聘网站有关找纯粹的C语言开发的比例真的不是很多,都被Java,php,python等等语言刷屏。这对于初学正在学习C语言的小白简直就是惊天霹雳,学了没人要,学了还有啥意义。如果单从快速找工作的角度考虑这件事的确,这个观点是能站得住脚的。   前几天和一位老码农聊天,开篇就来了这么几句,换开发语言算了,现在的做底层的日子...
EditPlus编译运行C程序的示例1
EditPlus编译运行C语言程序的配置是非常简单的, 用EditPlus进行C语言的入门学习是非常方便的,特别对于不需要Debug的黑窗口程序。
mac运行第一个c程序
mac上运行c代码软件:xcode
文章热词 线性回归求解 逻辑回归求解 特征点线性求解 线性回归似然函数求解 支持向量机SVM求解实例
相关热词 c++运行c程序怎么用 dev vc2010怎么运行c++程序 c#怎么结束运行程序 区块链运行 区块链培训是指什么