精华内容
下载资源
问答
  • 1.2 简单的C语言程序 从下一节开始将详细讨论C语言的各种结构,以及程序设计各方面的问题。本节先通过两个简单的例子,让读者了解C语言程序的概貌。 1.2.1 两个简单的C程序例子 【例1-1】 输出行文本。 1 /*...

    1.2 简单的C语言程序

    从下一节开始将详细讨论C语言的各种结构,以及程序设计各方面的问题。本节先通过两个简单的例子,让读者了解C语言程序的概貌。

    1.2.1 两个简单的C程序例子

    【例1-1】 输出一行文本。

    1    /*程序名:prg1-1.c*/
    2    /*功能:在屏幕上输出一行文本*/
    3    #include<stdio.h>
    4      
    5    int main()                                           /*主函数*/
    6    {
    7       printf("This is my first program in C/C++.\n");    /*在屏幕上输出一行信息*/
    8     
    9       return 0;
    10    }
    

    程序的运行结果为:

    This is my first program in C/C++.
    

    下面对该程序进行分析(为方便讲解,在每行前增加了行号):
    第1、2行中/……/符号里的内容为注释语句,用来对程序进行说明。程序员插入注释语句可以提高程序的可读性,帮助人们阅读和理解该程序。实际运行程序时编译系统会忽略这些注释,即对注释不进行编译。在每个程序前加上注释是一种良好的程序设计习惯。
    第3行是一条预处理指令,通知预处理器把标准输入/输出头文件stdio.h中的内容包含进程序中。头文件stdio.h包含了编译器在编译标准输入/输出函数时要用到的信息,每个使用标准输入/输出函数的程序中都要加上该命令。
    第5~9行是每个程序都必须有的主函数,主函数以main()来标识。C语言程序可以有一个或多个函数,其中一个必须是main()函数,每个程序都从main()函数开始执行,也结束于main()的最后一个花括号。main()前面的int表示整型,说明主函数返回值为一个整数值。接下来的一对花括号是main()函数的函数体,函数体中定义了要执行的一系列操作。其中第7行调用了C的标准输出函数printf(),把双引号之间的字符串原样输出到屏幕上,其中“n”是一个转义字符,它使输出屏幕上的光标定位到下一行开始位置,是一个不可见字符,输出时屏幕上看不到。
    【例1-2】 计算两个整数的和。

    1   /*程序名:prg1-2.c */
    2   /*功能:计算两个整数的和并输出结果*/
    3   #include<stdio.h>
    4
    5   int main()                                          /*主函数*/
    6   {
    7       int  i1, i2, sum;                              /*变量定义*/
    8
    9       i1 = 3;                                      /*输入数据*/
    10      i2 = 5;
    11      sum = i1 + i2;                                 /*计算i1、i2的和*/
    12
    13      printf("sum=%d\n", sum);                     /*输出sum的值*/
    14  
    15      return 0;
    16   }
    

    程序运行结果为:

    sum = 8
    

    程序中第7行为变量定义语句,定义了三个整型(int)变量i1、i2和sum,分别存放一个整数。第9、10行分别给变量i1、i2赋值。第11行计算两个变量的和并送入变量sum中。第13行负责打印出字符串“sum=”,以十进制整数格式(%d)输出变量sum的值。

    1.2.2 C程序概貌

    从上一小节中的两个简单例子,大致可以了解C程序的框架:

    /*注释:说明程序功能、目的、编写者、编写时间等信息*/
    #include<stdio.h>                                /*编译预处理命令*/
    int main()                                       /*主函数*/
    {
          ……                                        /*程序内容*/
          printf("…");                               /*输出结果*/
    }
    

    在该框架下,可以根据不同的问题填写不同的内容。C程序的基本概貌如下:
    1)在C的结构化程序框架中,函数是程序的基本组成单元。程序的主体通常由若干函数构成。函数是程序中完成一定功能的模块,其中有且仅有一个主函数,即main()函数。main()函数告诉计算机开始执行程序的地方。正是因为main()函数通过调用其他函数来执行相应的功能,所以main()函数有时也称为驱动函数。不管main()函数放在程序的什么位置,程序总是从main()函数开始运行。
    2)所有程序的内容都必须用一对花括号{}括起来,称为函数体。左侧花括号可以放在下一行的行首,也可以放在行尾。例如,上面的main()函数还可以写成:

    int main(){
          ……
          printf("…");
    }
    

    3)程序中可以有注释,放在“/”和“/”之间,主要是对程序进行简要的说明,包括程序的名称、完成的功能、编写人及最后修改时间等内容,系统不对该部分进行编译和运行,但它却是非常重要的部分,可以增强程序的可读性。
    4)以“#”开头的为预处理命令。要调用系统函数,就应该把描述函数所在的头文件包含进来,如使用输入/输出函数,要加上#include,使用数学函数,应该加上#include等。预处理命令一般写在程序头部。
    5)函数体由若干语句组成,包括声明部分和执行部分。声明部分如变量定义int i1, i2, sum,所有用到的变量都要先定义类型然后才能使用。执行部分包括函数的调用(如printf)和一般的运算等(如sum = i1+i2)。C语言的每条语句都必须以分号结束。
    6)C程序书写格式自由,一行可以写几条语句,一条语句也可以分在几行上。但是这样写程序一是不方便对语句进行注释,二是如果程序稍长一点,或是程序中出现了选择结构和循环结构等控制结构,程序就很难阅读和理解了。因此在编写较长的程序时,为了便于阅读程序,突出程序的功能结构,函数体应采用缩进和对齐格式书写,使程序结构清晰、易于阅读。

    1.2.3 C程序的处理和执行

    C语言属于高级语言,用C语言写出的程序通常称为源程序(文件扩展名为.c),人们对其非常容易编写和阅读,但计算机不能直接执行。要保证C语言程序能被任何计算机执行,需要有一个编译器,把C语言程序翻译成能被计算机理解的二进制形式。不同的计算机系统有不同的编译器,由它们来完成这个翻译过程。由编译器对源程序文件进行分析和处理,生成相应的机器语言目标模块,保存到目标文件里(文件扩展名为.obj)。目标文件还不能执行,还需要连接器把编译得到的目标模块与其他必要部分(如函数库模块等)连接起来,生成可执行程序(文件扩展名为.exe)。运行该程序就会看到程序执行的效果。
    如上所述,开发一个高级语言程序需要经过用编辑器生成源程序、用编译器生成目标程序、用连接器生成可执行文件以及运行已经生成的可执行文件四个步骤。为使程序的开发更加方便,四个步骤中需要的编辑器、编译器、连接器等软件功能通常被集成到一个程序中,形成集成开发环境(Integrated Development Environment,IDE)。集成开发环境是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。C/C++的集成开发环境有很多,主要包括微软的Visual Studio系列、Borland的C++ Builder等。

    展开全文
  • MATLAB在数值运算、图像处理、实时仿真方面具有很大得优势,但它得运行速度远远不及C语言或C++,为了解决这问题,MATLAB提供了和C/C++混合编程接口,以此讲MATLAB对运算、图形处理得优点和c语言运行速度快得特点...

    MATLAB在数值运算、图像处理、实时仿真方面具有很大得优势,但它得运行速度远远不及C语言或C++,为了解决这一问题,MATLAB提供了和C/C++混合编程的接口,以此讲MATLAB对运算、图形处理得优点和c语言运行速度快得特点想结合。
    混合编程的一般步骤:MATLAB 函数使用MATLAB格式数据 —>C/C++程序首先解析MATLAB数据 —>解析后运行C/C++程序,得到结果 —>C/C++程序最后要把上述结果数据打包成MATLAB格式输出给MATLAB中的主调程序。MATLAB是不能直接调用c语言的函数的,需要将c语言代码编译乘mex文件才可以调用,其中会用到一些辅助函数,本文以一个加法的例子介绍一下MATLAB与C混合编程的方法。

    第一步 创建一个C文件

    文件命名为add.c。
    在这里插入图片描述

    第二步 添加头文件“mex.h”

    这一项是必须的,mex.h中包含了编译中用到的接口变量,函数等。
    在这里插入图片描述

    第三步 定义c语言的功能函数

    void add(double *x,double *y,double *z)
    {  
        *z=*x+*y;
    }
    

    这里我们全部用指针的方式传递输入输出参数,实现z=x+y的功能。

    第四步 定义MexFunction函数

    这也是最关键的一步,MexFunction是c语言和MATLAB的接口函数,完成文章开头所叙述的操作。

    void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[])
    {
      
      double *x, *y;             /*被加数和加数*/
      double *z;                /*和*/
    
      ///判断输入输出参数的维度
       if(nrhs!=2) {
            mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nrhs","Two inputs required.");
        }
        if(nlhs!=1) {
            mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs","One outputs required.");
        } 
    
    
      x=mxGetPr(prhs[0]);//获取第一个输入参数的指针
      y=mxGetPr(prhs[1]); //获取第二个输入参数的指针
      plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); //创建输出矩阵
      z = mxGetPr(plhs[0]);//获取第一个输出参数的指针
      add(x,y,z);调用add函数
        
    }
    

    代码中有详细的注释,这里对四个输入参数简单的介绍:
    nlhs说明调用语句左手面(lhs-left hand side)有几个变量,输出数据个数
    nrhs说明调用语句右手面(rhs-right hand side)有几个变量,输入数据个数。
    *plhs是一个数组,其内容为指针,该指针指向数据类型mxArray。代表左手边数据,也就是输出数据。
    *prhs同上,代表输入数据

    第五步 编译

    需要提前安装好MinGW-w64工具箱,一般安装MATLAB的时候默认是不安装的,安装方法很简单,主页-附加功能->搜索“MinGW-w64”。
    在这里插入图片描述
    搜索MinGW-w64
    在这里插入图片描述
    点进去之后在右侧回看到下载和下载并安装,直接下载安装就可以了。需要注意的是这个附加功能仅支持2017b以上的版本。
    在这里插入图片描述
    然后就可以在命令行编译,直接输入以下命令即可:
    mex add.c
    编译成功后会在当前文件夹生成一个mexw64文件(32位系统的话就是mexw32)。
    在这里插入图片描述

    第六步 MATLAB调用

    直接在脚本文件或者命令行调用即可。
    a=add(1,2);
    要保证输入有两个参数,输出一个参数,这里不能省略输出参数,因为我们在MexFunction中编写了判断输入输出参数的代码,如果没有输出参数的话,就会报错:
    在这里插入图片描述

    展开全文
  • 第一步:先在linux下运用#vi char.c建立一个.c的文本。在char.c中编写你要实现的功能。我这里用一个简单的例子做说明。 #include#includemain(){char str[]=123c@#FDsP[e?;int i;for(i=0 ; str[i]!

    第一步:先在linux下运用#vi char.c建立一个.c的文本。

    在char.c中编写你要实现的功能。我这里用一个最简单的例子做说明。

     #include<stdio.h>

    #include<ctype.h>

    main()

    {

    char str[]=123c@#FDsP[e?;

    int i;

    for(i=0 ; str[i]!=0; i++)

    {

    if(isalnum(str[i]))

    {

    printf("%c is an alphanumeric character\n", str[i]);

    }

    else

    {

    printf('%c is  not an alphanumeric character\n",str[i];

    }

    }

    }

    保成char.c文本。

    第二步:在char.c同目录中运用#vi Makefile命今建立一个Makefile文件

    在Makefile文本中输入如下命令:

    CROSS= arm-linux-

    all: char

    led:char.c

           $(CROSS)gcc  -o char char.c

           $(CROSS)strip char

    clean:

            @rm -vf char *.o *~

    保存Makefile文件。

    第三步:运行#make all命令后在同目录下生成char文件。

    第四步:把char下载到目标板上。输入#./char

                   如果出现“-/bin/sh: .char: permission denied”错误可能是没有执行char的权限

                    输入#chmod 777 char

                   再输入一次#./char运行char程序。

                       

    展开全文
  • 时磊忖呎 时磊忖呎 经典C语言程序设计100例 1.数字排列 37.对10个数进行排序 70.计算一个字符串长度 2.奖金分配问题 38.求3*3矩阵对角线元素之和 71.编写输入/输岀函数 3.已知条件求解整数 72.创建链表 4.输入日期...
  • 计算一个字符串长度 2.奖金分配问题 38.求 3*3 矩阵对角线元素之和 71.编写输入/ 输出函数 3. 已知条件求解整数 72.创建链表 4.输入日期判断第几天 39.数字插入数组重新排序 40.将 73.反向输出链表 5.输入整数进行...
  • 首先给大家一个简单的例子,让读者有个整体的认识,代码如下: #include int main() { puts(软件开发网); return 0; } 函数的概念 先来看第4行代码,这行代码会在显示器上输出“软件开发网”。前面我们已经讲过,...
  • 对于一个C语言程序而言,内存空间主要由五个部分组成代码段(.text)、数据段(.data)、BSS段(.bss),堆和栈组成,其中代码段,数据段和BSS段是编译时候由编译器分配,而堆和 栈是程序运行时候由系统分配。...
  • MATLAB在数值运算、图像处理、实时仿真方面具有很大优势,但它运行速度远远不及C语言或C++,为了解决这问题,MATLAB提供了和C/C++混合编程接口,以此将MATLAB对运算、图形处理优点和c语言运行速度快特点...

    f6e2dc62a05efec3f7145e82447404d0.png

    MATLAB在数值运算、图像处理、实时仿真方面具有很大的优势,但它的运行速度远远不及C语言或C++,为了解决这一问题,MATLAB提供了和C/C++混合编程的接口,以此将MATLAB对运算、图形处理的优点和c语言运行速度快的特点想结合。

    混合编程的一般步骤:MATLAB 函数使用MATLAB格式数据 —>C/C++程序首先解析MATLAB数据 —>解析后运行C/C++程序,得到结果 —>C/C++程序最后要把上述结果数据打包成MATLAB格式输出给MATLAB中的主调程序。MATLAB是不能直接调用c语言的函数的,需要将c语言代码编译乘mex文件才可以调用,其中会用到一些辅助函数,本文以一个加法的例子介绍一下MATLAB与C混合编程的方法。

    第一步 创建一个C文件

    文件命名为add.c。

    2d1ed0dc9788e4550421129a95690070.png

    第二步 添加头文件“mex.h”

    这一项是必须的,mex.h中包含了编译中用到的接口变量,函数等。

    e35e362691cc659970d7992b90a5f626.png

    第三步 定义c语言的功能函数

    void add(double *x,double *y,double *z)

    {

    *z=*x+*y;

    }

    这里我们全部用指针的方式传递输入输出参数,实现z=x+y的功能。

    第四步 定义MexFunction函数

    这也是最关键的一步,MexFunction是c语言和MATLAB的接口函数,完成文章开头所叙述的操作。

    void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[])

    {

    double *x, *y; /*被加数和加数*/

    double *z; /*和*/

    ///判断输入输出参数的维度

    if(nrhs!=2) {

    mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nrhs","Two inputs required.");

    }

    if(nlhs!=1) {

    mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs","One outputs required.");

    }

    x=mxGetPr(prhs[0]);//获取第一个输入参数的指针

    y=mxGetPr(prhs[1]); //获取第二个输入参数的指针

    plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); //创建输出矩阵

    z = mxGetPr(plhs[0]);//获取第一个输出参数的指针

    add(x,y,z);调用add函数

    }

    代码中有详细的注释,这里对四个输入参数简单的介绍:

    nlhs说明调用语句左手面(lhs-left hand side)有几个变量,输出数据个数

    nrhs说明调用语句右手面(rhs-right hand side)有几个变量,输入数据个数。

    *plhs是一个数组,其内容为指针,该指针指向数据类型mxArray。代表左手边数据,也就是输出数据。

    *prhs同上,代表输入数据

    第五步 编译

    需要提前安装好MinGW-w64工具箱,一般安装MATLAB的时候默认是不安装的,安装方法很简单,主页-附加功能->搜索“MinGW-w64”。

    30b995525b9a6b391fc7ab902b970700.png

    搜索MinGW-w64

    af0da1664369af2ceb5e7639e2bd2510.png

    点进去之后在右侧回看到下载和下载并安装,直接下载安装就可以了。需要注意的是这个附加功能仅支持2017b以上的版本。

    0aa9bce3df062bb8e5469f799a3f4f27.png

    然后就可以在命令行编译,直接输入以下命令即可:

    mex add.c

    编译成功后会在当前文件夹生成一个mexw64文件(32位系统的话就是mexw32)。

    163303bd3057755178c65c0b98113f09.png

    第六步 MATLAB调用

    直接在脚本文件或者命令行调用即可。

    a=add(1,2);

    要保证输入有两个参数,输出一个参数,这里不能省略输出参数,因为我们在MexFunction中编写了判断输入输出参数的代码,如果没有输出参数的话,就会报错:

    260249af380689511075a574473e8880.png

    到这里就结束了,希望这个简单的例子能够帮到大家,也希望平台的各位大佬们多多指教。

    展开全文
  • 今天我在写二叉树程序时遇到一个让我郁闷整晚的例子,现在终于想通了,特撰此博文,告诫自己及广大同道今后勿犯此错误! 我写了一个将字符串中括号去除的程序: #include char *RidBracket(char*); void main() {  ...
  • c语言简单的例子

    千次阅读 2018-10-31 16:36:05
    程序需求说明如下:输入第1个字符必须是 + 或 -,第2个字符必须是一个数字,在此情况下进行文件修改;如果第1个字符不是 + 或 -,则给出信息N;如果第2个字符不是数字,则给出信息M。 #include&lt;stdio.h&...
  • C语言简单实用的程序-if else 嵌套式使用例子--一个约数--计算用电账目 例子1 //使用嵌套式 if显示一个约数 #include #include int main() {  unsigned long num; //要检查数  unsigned long...
  • 本文作者在开发Dynym项目,这是一个动态语言通用运行时。在开发时,作者以其他语言运行速度作为基础比较语言运行速度,因此发现了一些小秘密。迭代计算斐波那契数列是测试各种语言执行速度常见方法。作者以...
  • 某天,王尼玛写了段C程序: 1 #include <stdio.h> 2 3 void input() 4 { 5 int i; 6 int array[20]; 7 for(i = 0; i < 20; i++) 8 { 9 array[i] = i; 10 } ...
  • 在信息化、智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: ... intmain(void)/*一个简单的C程序*/ { ...
  • 在Ubuntu里写的第一个C语言程序,Hello world,用简单例子来熟悉ubuntu系统下的C语言编译流程。 1.先安装gcc,C语言的编译和运行需要使用gcc 1.Ctrl+Alt+t 打开终端控制台; 2.输入 sudo apt install gcc 然后回车,...
  • 四几个简单的C语言例子 ;分析几个问题 头文件 C语言的基本单位函数 程序=数据结构+算法 变量定义 语句 输出printf的格式 ;四几个简单的C语言例子;void main) { int x,y,ma; scanf%d%d&x&y; ma=add(x,y; printf"th
  • 现在,我们用Dev-C++编写第一个C语言程序。我们还是用这个最简单的例子:#include int main(){ printf("Welcome to the world of C."); return 0;}程序开发的步骤是:第1步:打开Dev-C++,出现下面的界面:第2步:...
  • C语言的一个模拟定时器程序

    千次阅读 2019-05-08 11:09:41
    简单的C语言模拟定时器,循环时间+绝对时间,根据《精通UNIX下C语言编程与项目实践》书上的例子搬过来的,挺好的,可能以后有用 #include<stdio.h> #include<time.h> #define MAXTIMER 20 typedef ...
  • C语言实现的一个交互小程序(一)

    千次阅读 2019-03-30 10:14:53
    关于C语言如何有效正确学习,我写了一个专栏:你可以这样学习C语言,有兴趣小伙伴可以来看看哦,希望能对你有收获!本文例子需要源码可以关注我后私信我。 这几天我用C语言自己写了一个交互小程序。这个交互...
  • C语言程序的结构认识用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。例1:计算两个整数之和的c程序:#include main() { int a,b,sum; /*定义变量a...
  • C语言程序的结构基本认识

    千次阅读 2018-12-27 13:45:45
    一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。 例1:计算两个整数之和的c程序: #include main() { int a,b,sum; /定义变量a,b,sum为整型变量/ a=20; /把...
  • 遗传算法的C语言程序案例 一说明 1本程序演示的是用简单遗传算法随机一个种群然后根据所给的交叉率变异率世代数计算最大适应度所在的代数 2演示程序以用户和计算机的对话方式执行即在计算机终端上显示提示信息之后由...
  • 伯乐在线导读:本文作者在开发Dynym项目,这是一个动态语言通用运行时。在开发时,作者以其他语言运行速度作为基础比较语言运行速度,因此发现了一些小秘密。迭代计算斐波那契数列是测试各种语言执行速度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 745
精华内容 298
关键字:

一个简单的c语言程序例子

c语言 订阅