精华内容
下载资源
问答
  • 21实际C语言教程-3 (转)[@more@]第三章 让c执行运算 上一章的例子其实很傻,就是用C了一行有用的代码,...这样的程序有什么用?呵呵,只有让你看看这点用处了,大了就不能作为第一个例子了。这一章就要给出一个至...
    21实际C语言教程-3 (转)[@more@]

    第三章 让c执行运算


    上一章的例子其实很傻,就是用C了一行有用的代码,输出一句话。这样的程序有什么用?呵呵,只有让你看看这点用处了,大了就不能作为第一个例子了。这一章就要给出一个至少可以作点运算的程序,虽然没有输入只有输出,虽然只是很简单的乘法。但是,足够了。
    程序就是让两个数相乘,然后输出结果。输出的方式和上一章一样,在一个黑糊糊的窗口中。
    #include
    main()
    {
    int l, r, res;
    l=404;
    r=505;
    res=l*r;
    printf(“the result is %d”, res);
    }
    运行结果就是在屏幕上显示了the result is 204020。下面来看看是如何让C进行运算并且输出结果的。
    程序的框架和上次的是差不多的。都是先用#include ,这一行使得你可以使用printf。而且程序主体在main(){……}之中。没一句用分号结束。是的,差不多。只是多了几行未见过的代码。
    3.1变量
    变量不是一个计算机中才有的概念,数学中早就有了自变量,因变量。而且计算机(编程)中的变量的概念是源自那儿的,但是也不完全相同。比如说变量有变量类型。 int l, r, res;就声明了三个变量。何为声明何为变量呢?我们可以理解这句话给了你三个名字为l, r, res的容器给你装数值,而数值的类型已经被限定了,就是int类型,也是就整数(integer)。(注释一)
    3.2给变量赋值
    l=404;是干什么的我想应该能理解了吧。就是把404这个整数放入名为l的这个容器中。个过程就叫作赋值。 那么r=505;也是类似的。那么res=l*r;呢?就是把l乘以r然后把结果赋给res。*就是乘号(注释二)。所以运行到这里,res的值为多少就显而易见了。
    3.3输出一个整数型变量的值
    printf在上次已经用过了。但是用法不一样。至少上次只给了printf一个参数(注释三)。其实这里也是很显然的。Res作为第二个参数,用意就是输出乘法的结果。%d是关键,%d表示这里应该是一个整数型的变量,然后res的值就会放到这里替换%d。

    注释一:把变量叫做容器很常见。比如《电脑报》曾经报道过的易语言中就把变量称为容器,很形象。详细请见www.eyuyan.com
    int类型其实并不是确切的整数,因为它只能表示一个范围的整数。这个范围在不同机器上的大小是不一样的。常见的32位机就是2的32次方。
    注释二:这个符号在c中出现多次,而且表示的意义不一样。这里只是一种表示乘法。另外可以和/以及组成注释的标记。表示指针类型,表示取消引用等。
    注释三:何为参数。把printf看成函数,然后就有单变量函数,多变量函数。()中的就是参数。


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-998339/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10752043/viewspace-998339/

    展开全文
  • 21实际C语言教程-3

    千次阅读 2003-01-24 09:42:00
    这样的程序有什么用?呵呵,只有让你看看这点用处了,大了就不能作为第一个例子了。这一章就要给出一个至少可以作点运算的程序,虽然没有输入只有输出,虽然只是很简单的乘法。但是,足够了。程序就是让两个数相乘,...

    第三章 让c执行运算


    上一章的例子其实很傻,就是用C了一行有用的代码,输出一句话。这样的程序有什么用?呵呵,只有让你看看这点用处了,大了就不能作为第一个例子了。这一章就要给出一个至少可以作点运算的程序,虽然没有输入只有输出,虽然只是很简单的乘法。但是,足够了。
    程序就是让两个数相乘,然后输出结果。输出的方式和上一章一样,在一个黑糊糊的窗口中。
    #include <stdio.h>
    main()
    {
    int l, r, res;
    l=404;
    r=505;
    res=l*r;
    printf(“the result is %d”, res);
    }
    运行结果就是在屏幕上显示了the result is 204020。下面来看看是如何让C进行运算并且输出结果的。
    程序的框架和上次的是差不多的。都是先用#include <stdio.h>,这一行使得你可以使用printf。而且程序主体在main(){……}之中。没一句用分号结束。是的,差不多。只是多了几行未见过的代码。
    3.1变量
    变量不是一个计算机中才有的概念,数学中早就有了自变量,因变量。而且计算机(编程)中的变量的概念是源自那儿的,但是也不完全相同。比如说变量有变量类型。 int l, r, res;就声明了三个变量。何为声明何为变量呢?我们可以理解这句话给了你三个名字为l, r, res的容器给你装数值,而数值的类型已经被限定了,就是int类型,也是就整数(integer)。(注释一)
    3.2给变量赋值
    l=404;是干什么的我想应该能理解了吧。就是把404这个整数放入名为l的这个容器中。个过程就叫作赋值。 那么r=505;也是类似的。那么res=l*r;呢?就是把l乘以r然后把结果赋给res。*就是乘号(注释二)。所以运行到这里,res的值为多少就显而易见了。
    3.3输出一个整数型变量的值
    printf在上次已经用过了。但是用法不一样。至少上次只给了printf一个参数(注释三)。其实这里也是很显然的。Res作为第二个参数,用意就是输出乘法的结果。%d是关键,%d表示这里应该是一个整数型的变量,然后res的值就会放到这里替换%d。

    注释一:把变量叫做容器很常见。比如《电脑报》曾经报道过的易语言中就把变量称为容器,很形象。详细请见www.eyuyan.com
    int类型其实并不是确切的整数,因为它只能表示一个范围的整数。这个范围在不同机器上的大小是不一样的。常见的32位机就是2的32次方。
    注释二:这个符号在c中出现多次,而且表示的意义不一样。这里只是一种表示乘法。另外可以和/以及/组成注释的标记。表示指针类型,表示取消引用等。
    注释三:何为参数。把printf看成函数,然后就有单变量函数,多变量函数。()中的就是参数。

    展开全文
  • c语言的单片机delay延时函数详解

    千次阅读 2021-04-07 11:32:15
    延时函数,作为一种常用函数,在不同的领域不同的用处。而在嵌入式以及C语言的编写中,我们常常遇到需要自己来编写延时函数的情况,这种情况之下,了解其原理就显得必要。 1、是什么 简单来说,延时函数的目的就...

    环境

    开发环境:NY-IDE
    单片机 :NY8B062D

    延时函数

    延时函数,作为一种常用函数,在不同的领域有不同的用处。而在嵌入式以及C语言的编写中,我们常常遇到需要自己来编写延时函数的情况,这种情况之下,了解其原理就显得必要。

    一、是什么

    简单来说,延时函数的目的就在于等,实际上就是要等一段时间再来执行接下来的代码。而这种简单的等,又可以采用多种方法来实现。例如:

    名称 描述
    循环 采用for或者while循环,让计算机跑无用的代码,从而达到延时的目的
    定时器 通过定时器的计时功能,来达到延时的目的
    系统调用 该功能其实还是通过以上的两种方式来实现,当时这种功能出现在有系统的程序里面,执行系统延时的情况下,单片机可以去执行别的函数,直到系统时间到,从而回来接着执行该代码,这实际上也提高了效率

    二、为什么

    为什么要延时?
    我们有时候要等,但是又不能等太久。这就是延时函数的作用。简单来说,就是和上课铃一样,上课要上45分钟,我们就要延时。

    三、用在哪里?

    1. 按键、io防抖动
    2. 计时
    3. 任务调度

    四、怎么做

    1、循环延时

    首先我认为,要搞懂的东西就是几个周期的区别,这一篇文章有明确的介绍
    链接: 关于时钟,指令,机器周期的详解

    搞懂了周期的概念之后,来看看函数,这就是一个典型的例子

    //延时函数
    void delay(int count)
    {
    	int i;
    	for(i=1;i<=count;i++)
    	;
    }
    

    计算公式

    时钟周期 = 1/时钟频率
    机器周期 = 完成一个基本操作所需要的时间 = 时钟周期*n(n取决于单片的不同而不同)
    指令周期 = 完成一次指令所需的时间           = 一或者两个机器周期 
    
    而我们的计算公式则是:
    (count(次数)*指令周期所需的时钟周期数(例如c51就是12)*循环中的指令数)/时钟频率
    

    例如:

    时钟频率:8Mhz
    机器周期:2个时钟周期
    指令周期:6个机器周期 = 12个时钟周期
    
    delay(50);
    void delay(int count)
    {
    	int i;
    	for(i=1;i<=count;i++)
    	;
    }
    
    延时 = (1/8M)*12*50*2(计数)  =  0.000075 s= 75us
    

    链接: for循环详解.

    2、定时器延时

    有些时候,特别是当延时时间比较长的时候,for循环就显得十分的不现实了,这时候定时器就显得十分重要了。实际上,我们换个模式来思考问题,定时器就是一个可以自己跑的for循环。
    思路:我们设置好一个定时器的循环时间,然后每次循环完成标志位加一,然后在自己的任务里面,判断标志位的大小,当数据达到的时候,就来处理对应的事件,这有利于单片机效率的提高

    初始化定时器:

    /****************************************************************************
    * 函数名   : user_timer1_init()
    * 功  能   : 初始化timer1定时器
    * 输 入    : 
    * 全局变量 : 
    * 输    出 : 
    *****************************************************************************/
    void user_timer1_init(void)
    {
    	//;Initial Timer1	
    	TMRH = 0;
    	TMR1 = 0xFF;								// Load 0xFF to TMR1 (Initial Timer1 register)
    	T1CR1 = C_TMR1_Reload | C_TMR1_En;      	// Enable Timer1, Initial value reloaded from TMR1, Non-stop mode 
    	T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div256;	// Enable Prescaler1, Prescaler1 dividing rate = 1:256, Timer1 clock source is instruction clock
    	
    	//;Setting Interrupt Enable Register	
    	INTE = C_INT_TMR1;							// Enable Timer1
    	ENI();										// Enable all unmasked interrupts			
    }
    
    中断中设置事件
    /****************************************************************************
    * 函数名   : __interrupt()
    * 功  能   : 中断函数
    * 输 入    : 
    * 全局变量 : 
    * 输    出 : 
    *****************************************************************************/
    void _isr(void) __interrupt(0)
    {
    	static unsigned int timer_count   = 0;//作计数使用
    	
    	/*timer1 中断函数*/
    	if(INTFbits.T0IF)
    	{
    		if(timer_count <32)
    		{
    			timer_count++;
    		}
    		else if(timer_count == 32)
    		{
    			delay_10s = 1;	//延时十秒成功
    			timer_count=0;
    		}
    		INTF= (unsigned char)~(C_INT_TMR0);	// Clear T0IF
    	}
    }
    最后在while里面处理
    
       while(1)
        {
        	if(delay_10s  == 1)
        	{
        	/*这里就表示我们延时十秒成功了*/
    		}
        }
    
    
    展开全文
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    6.12 既然数组引用会退化为指针,如果array是数组,那么array和&array又有什么区别呢? 6.13 如何声明一个数组的指针? 动态数组分配 6.14 如何在运行时设定数组的大小?怎样才能避免固定大小的数组? 6.15 ...
  • o 7.9 既然数组引用会蜕化为指针, 如果 arr 是数组, 那么 arr 和 &arr 又有什么区别呢 ? o 7.10 我如何声明一个数组指针 ? o 7.11 我如何在运行期设定数组的大小 ? 我怎样才能避免固定大小的数组 ? o 7.12 ...
  • C语言求实数的绝对值

    千次阅读 2012-09-06 23:41:00
    中的fabs()函数来实现,比较简单,偶就帮他写了一个(ps:说实话这种玩具程序实际上没什么太大用处,现在的程序设计这门课的教育模式真该改革下了。),代码如下,本程序在gcc下编译通过。不足之处欢迎指教: 1 #...

    近日有个学弟问我如何用C语言求一个数的绝对值,这里主要调用了C中<math.h>中的fabs()函数来实现,比较简单,偶就帮他写了一个(ps:说实话这种玩具程序实际上没什么太大用处,现在的程序设计这门课的教育模式真该改革下了。),代码如下,本程序在gcc下编译通过。不足之处欢迎指教:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <math.h>
     4 
     5 /* Function: absolute_value
     6  * Usage: absolute_value();
     7  * -------------------
     8  * This function was used for comput absolute value.(计算一个实数的绝对值,精确到小数点后两位。)
     9  */
    10 
    11 int absolute_value()
    12 {
    13     float x,y;
    14     printf("本程序用于计算绝对值.\n");
    15     printf("请您输入一个数字:");
    16     scanf("%f,%f",&x,&y);
    17     y = fabs(-x);
    18     printf("y的绝对值是:|y|=%.2f\n",fabs(-x));
    19     return 0;
    20 }

     

     

     

    转载于:https://www.cnblogs.com/kevinji/archive/2012/09/06/2674366.html

    展开全文
  • 第一部分介绍C语言基础,在介绍C基础时会结合嵌入式中的应用加以介绍,将重点介绍在项目开发中有用的内容,对于过分追求技术但又没有什么实际用处的内容不做过多的介绍,对于这些内容最多会提一下,让读者知道这种...
  • 第一部分介绍C语言基础,在介绍C基础时会结合嵌入式中的应用加以介绍,将重点介绍在项目开发中有用的内容,对于过分追求技术但又没有什么实际用处的内容不做过多的介绍,对于这些内容最多会提一下,让读者知道这种...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.20 const char *p、char const *p和char *const p有什么区别? 10 复杂的声明 11 1.21 怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 11  1.22 如何声明...
  • 函数指针是非常重要的概念,后来的对象概念都依赖与函数指针的概念,比如C++对象的虚函数指针表,比如Java的接口,...虽然C语言的函数指针可能带类型信息,但是这个类型信息没有什么很大用处实际上整个C语言都没有
  • 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?char *p; *p=malloc(10); 4 声明风格 4 1.7 怎样声明和...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    2.16 枚举和一组预处理的#define 有什么不同? . . . . . . . . . . . . 10 2.17 有什么容易的显示枚举值符号的方法? . . . . . . . . . . . . . . . 11 3 表达式13 3.1 为什么这样的代码: a[i] = i++; 不能工作? ...
  • 原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。  在本书中,作者...
  • runtime认识及其用处

    2015-09-02 08:51:00
    1、什么是运行时(runtime): 1> runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数) 2> 实际上,平时我们编写的OC代码,底层都是基于runtime实现的 * 也就是说,平时我们编写的...
  • 好处: 1、你能巩固你的C语言编程知识 这样做如果你还是个学生 建议参与一些实际的项目 不能把真正的需求转变为程序 但是你不知道有什么用处 一般还需要和数据库、硬件结合使用 而且纯粹的C语言项目很少 工作中也许...
  • 编程语言基础

    2016-10-11 18:51:07
    学了C语言,Java,最近又学了js,发现这些编程语言的基础知识差不多,干脆就自己总结一下(不一定有什么实际用处)。
  • C预处理器

    2019-09-21 17:23:51
    然而事实上是,技术无论好坏高低,能有效且快速解决各种实际问题的才会最终留到最后,C语言的预处理器就属于这种看起来low,但是实际用处非常大的一种功能。 预处理器不仅仅是做了符号替换,还可以根据要求包含...
  • 构建之法阅读笔记01

    2016-04-04 18:52:00
    第一章概论 这一章的开始就给我们讲了“程序=数据结构+算法”,而自从我们大一开始...但是这个程序有什么实际用处呢?在Java和其他一些语言中,似乎没有指针,那我可以不必了解二叉树了吗?有很多算法都已经被别...
  • 被黑客们使用的代码混淆技术

    万次阅读 多人点赞 2012-04-18 14:34:35
    长久以来,代码混淆技术一直都被认为是不能登大雅之堂的奇巧淫技,没有哪个学者会拿正眼瞧它一眼。国际C语言混乱代码大赛(International ...这个很有意思,不过对实际工作有什么用处吗?”当时C语言还被认为是写这类程
  • 本节主要讲述了客户并不会C语言和UML等语言,客户只是有实际需求的普通人,对如何编写程序不了解,对编程语言的用法更加不明白,所以不要期待你的客户能用编程语言来描述他的需求,且现在的咨询公司也并没有什么用处...
  • 还有,一般光仿真器是不行,还得一个实际的电路,即学习板,如图,即为,单片机最小系统。 学习板以强大的接口为主,单片机的学习分两方面,一方面是单片机的原理及内部结构,另一方面是单片机的接口技术。这些...
  • 代码语法错误分析工具pclint8.0

    热门讨论 2010-06-29 07:00:09
    我的机器上,VC产生0 errors 0 warnings, 而lint程序产生了如下8条警告信息,有些还是很有用处的提示,这里就不一一分析了. test.cpp(12): error 783: (Info -- Line does not end with new-line) test.cpp(7): ...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。 -t vfstype:显示被加载文件系统的类型。 -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

c语言有什么实际用处

c语言 订阅