LinuxC应用开发学习笔记(一) 您所在的位置:网站首页 linux应用开发书籍 LinuxC应用开发学习笔记(一)

LinuxC应用开发学习笔记(一)

2024-01-12 03:53| 来源: 网络整理| 查看: 265

LinuxC应用开发学习笔记(一) 第一节

平台介绍:linux Ubuntu 16.04 C编译过程:C源文件–预处理–编译–汇编–连接–可执行文件 man gcc查看gcc的帮助手册

gcc -E hello.c //后缀必须为.c文件 gcc -E hello.c > hello.i //重定向为i类型文件 gcc -S hello.i //不需要指定,会自动生成hello.s文件 gcc -c hello.s //链接成 -o文件 gcc hello.o -o hello ./hello //表示处理可执行文件

使用make完成:

make hello \\gcc hello.c -o hello 会找一个hello.c的文件

在这里插入图片描述 vim的快捷方式的使用。 如果一个函数没有原型,那么返回值默认是int类型。要把gcc调节到没有警告的。

第二节

一、以hello world为例对今后的写程序的要求。 1、头文件要按质按量的包含,头文件包含非常重要。 2、以函数为单位,模块化编程思想解决问题。以加减乘除示范为例。提高代码的复用性。能独立出来的小模块就独立出来。 3、声明部分+实现部分 4、return 0; 是给父进程(创建子进程)看的,printf是有返回值的,不是随便返回的内容。 5、多用空格和换行。 6、适当的添加注释。//、 /**/、#if 0 #endif 二、算法:解决问题的方法(流程图、NS图、FSM(有限状态机) 三、程序:用某种语言实现算法。 四、进程:进程就是占用空间大小。必须要防止写越界,防止内存泄漏,谁打开谁关闭,谁申请谁释放。

在这里插入图片描述

P5-6 二、数据类型、运算符和表达式

在这里插入图片描述

1、数据类型:(基本数据类型) 2、C数据类型:

基本类型(数值类型(整型、浮点型、长整型)、浮点型(单精度、双精度)、字符类型),构造类型(数组、结构体、共用体、枚举类型),指针类型,空类型。 1)所占字节数 2)存储区别 1、(254)10 = (B 011 111 110)2 = (0376)8 = (0xFE)16、数组存储都是以补码的形式存在的,补码:正数是他本身,负数是二进制数取反再+1

2、ASCII 0 -048 A-65 a - 97

3)不同类型的数据间进行转换 隐藏式转换: int i; float f; double d; char ch;

ch + i -->i f - d -->d (ch + i) -(f-d) int - double double 显示转换(强制类型转换)。 4)特殊性: 1)布尔类型bool 2)float类型 大概范围的整数,无法真正的和一个数进行比较相等。 f == 0;=>fabs(f - 0 ) fprintf(stderr,”Input error!\n”); exit(1); } sum = num * KQ / WEIGHT; printf(“total is %e\n”,sum); }

2、终端输入三角形的三边长,求面积。 s = 1/2*(a+b+c); area = sqrt(s*(s-a)(s-b)(s-c));

static void area (void) { float a,b,c; float s,area; printf(“please input num:”); scanf(“%f%f%f”,&a&b&c); if(a+b float a,b,c; printf(“Please input:”); scanf(“%f%f%f”,&a,&b,&c); if(b*b-4*a*c water(); area (); exit(0); } 流程控制

顺序,选择,循环。 NS图,流程图,工具Dia。 简单结构和复杂结构:自然流程。 顺序:语句逐句执行。 选择:出现了一种以上的情况 循环:某个条件成立下,重复执行某个动作。

关键字: 选择 : if else switch-case 注意:else 只与离他最近的if相匹配 循环: while do-while for if-goto 辅助控制:continue break 详解:switch-case 语法格式:switch(exp) { case 常量或常量表达式: break; case 常量或常量表达式: break; … default: _exit(0);(_exit(0) 有两个选择的时候出现了3个选项大错特错)什么都不敢做了。 } 循环:while do-while for if-goto while:(最少的执行次数为0次) while(exp) { loop; } do-while:(不管条件是否成立,最少的执行次数为1次) do-while : do { loop; }while(exp); for:第一个可以省略,最后一个可以省略,第二个也可以省略。初始化条件;变化条件;终止条件。 辅助控制:break跳出的是本层循环,continue跳出的是本次循环,紧接着进行下一次条件判断。

P27 选择和循环部分的习题

1、投资问题:A以每年10%单利息投资了100美元,B以每年5%的复合利息投资了100美元。 计算多少年B的投资总额会超过A,并且显示两个人的各自资产总额。

#include "stdio.h" #include "stdlib.h" int main() { float sum_a =100; float sum_b =100; int i; while(sum_b double count_even =0.0,count_odd = 0.0; int ce = 0,co = 0; int temp; scanf("%d",&temp); while(temp != 0) { if(temp % 2 == 0) { count_even+=temp; ce++; } else { count_odd += temp; co++; } scanf("%d",&temp); } printf("count_even is %d,",ce,count_even/ce); printf("count_odd is %d",co,count_odd/co); return 0; }

3、百钱买百鸡:鸡翁一,值钱五;鸡母一,值钱三;三鸡雏,值钱一,问:鸡翁,鸡目,鸡雏各几何? x+y+z=100; 5x+3y+z/3=100;

static void test6(void) { int i,j,k; for(i= 0;i k = 100 - i - j; if(k%3 == 0 &&5*i+3*j+k == 100) printf(“%d%d%d\n”,i,j,k); for(k=0;k printf(“%d%d%d\n”,i,j,k); } } } } }

4、求出1000以内的所有的质数

static void test8(void) { int i = 2;j,mark; for(i = 2;i if(i%j == 0) { mark = 0; break; } } if(mark) printf(“%d is prime”,i); } }

5、终端输出 ABCDEF BCDEF CDEF DEF EF F

static void test9(void) { int line = 6,i,chars = 6; char ch; for(i = 0;i printf(“%c”,ch); } printf(“\n”); } }

6、输出钻石型 *

static void test10(void) { int i,j,k; for(i = 0;i for(j = 1;j sum+ = num; printf(“please enter the next integet(q to quit)”) } printf(“sum = %d\n”,sum); }

8、从半径为1开始,输出圆的面积,直到圆的面积大于100为止

static void test12(void) { int r; float area = 0; for(r=1; ;r++) { area = PI * r * r; if(area>100) break; printf("area = %f\n",area); } }

9、写出fibonacci数列的前40项。 1,1,2,3,5,8,13…

static void fibonacci(void) { int i,j,temp; int fib[10] ={1,1}; int arr[] = {1,2,3,4,5,6}; printf("%d\n",sizeof(arr)/sizeof(arr[0])); for(int i = 2;i printf("%d ",fib[i]); } printf("\n"); i = 0; j = sizeof(fib)/sizeof(fib[0])-1; while(i printf("%d ",fib[i]); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有