2019 1 17 赵松儒

1.函数的定义:返回值类型 函数名(函数列表)

2.函数的声明:返回值类型 函数名(参数类型);

3.函数的调用:变量 = 函数名(参数的值)(在函数有返回值的时候)
     注意:若函数无返回值,返回值类型为void

4.函数的传参是从右至左的 如:printf("a:%d, b:%d, c:%d", a, b, c);先传c,再传b,再传a

5.变量分为:局部变量 全局变量
    局部变量:在函数内定义
              生存周期和作用域:从定义开始到函数结束
          主要为:函数的参数,函数内定义的变量
          初始值:未初始化值随机,存放在栈里
    全局变量:在函数体外定义
              生存周期和作用域:从定义开始到进程结束
          初始值:未初始化为0,存放在 .bss里
                  初始化存放在 .data里
          全局变量的使用:能不用就不用
                          如果一定要用,用static修饰

6.声明说明符:存储类型:auto, static, extern, register
          类型限定符:const, volatile
          类型说明符:void, char, short, int, long, float, double, signed, unsigned

7.变量的存储类型:
    auto:只对块的变量有效,它是默认的
    static:局部静态变量: 未初始化时,存放在.bss段,值为0。初始化,存放在.data段。提升生存周期,从定义开始到进程结束,并只初始化一次
            全局静态变量: 限制作用域,只能在本文件中使用。
     externa:外部声明变量
     register:寄存器变量

8.类型限定符:
    const:只读,可以访问,但无法改变值
    volatile: 易失变量,防止编译优化

9.修饰函数的关键字:
    static:限制此函数只能在本文件中调用
    inline:内联函数就是在调用的时候切换函数的地址,之间将函数体内代码替换到函数调用的位置
            是建议性关键字,只适合函数体简洁,代码量少
    extern:没有在本文件中定义的函数,声明时可使用此关键字

10.递归函数:递归点,递归终止条件

 1 /*求得两个整型数中较大的那个*/
 2
 3 #include <stdio.h>
 4
 5 int compare(int x, int y);
 6
 7 int main(void)
 8 {
 9     int x,y;
10
11     printf("请输入两个整数值x,y: ");
12     scanf("%d,%d",&x,&y);
13
14     if (x == y) {
15         printf("两个值相同\n");
16     } else {
17         printf("最大值为:%d\n",compare(x,y));
18     }
19
20     return 0;
21
22 }
23
24 int compare(int x, int y)
25 {
26     return (x > y ? x : y);
27 }
 1 /*返回给定正整数的倒数,如 给定1234,返回4321*/
 2
 3 #include <stdio.h>
 4
 5 int dao(int y);//求输入的数的逆序数
 6
 7 int main(void)
 8 {
 9     int i,n;
10
11     printf("请输入一个正整数: ");
12     scanf("%d",&i);
13
14     n = dao(i);
15
16     printf("%d的倒序数为%d\n",i,n);
17
18     return 0;
19 }
20
21 int dao(int y)
22 {
23     int j;
24     int result = 0;
25
26     for (; y > 0 ;) {
27         j = y % 10;
28         result = result * 10 + j;
29         y = y / 10;
30     }
31
32     return result;
33
34 }
 1 /*用递归求一个整型数的阶乘*/
 2
 3 #include <stdio.h>
 4
 5 int factorial(int i);
 6
 7 int main(void)
 8 {
 9     int i,j;
10
11     printf("请输入一个数: ");
12     scanf("%d",&i);
13
14     j = factorial(i);
15
16     printf("%d的阶乘为%d\n",i,j);
17
18     return 0;
19 }
20
21 int factorial(int i)
22 {
23
24     if (i > 1) {
25         return i * factorial(i - 1);
26     }
27
28 }
 1 /*判断一个整数是否在两个数之间*/
 2
 3 #include <stdio.h>
 4
 5 int judge(int x, int y, int z);
 6
 7 int main(void)
 8 {
 9     int x,y,z;
10
11     printf("请输入一个整数,和两个数,x y z: ");
12     scanf("%d%d%d",&x,&y,&z);
13
14     if (judge(x,y,z) == 1) {
15         printf("%d在%d和%d之间\n",x,y,z);
16     } else {
17         printf("%d不在%d和%d之间\n",x,y,z);
18     }
19
20
21     return 0;
22 }
23
24 int judge(int x, int y, int z)
25 {
26     if ((x > y && x < z) || (x > z && x < y)) {
27         return 1;
28     } else {
29         return 0;
30     }
31 }

原文地址:https://www.cnblogs.com/frank-zhao19/p/10284367.html

时间: 2024-08-30 16:03:52

2019 1 17 赵松儒的相关文章

2019 1 21 赵松儒

1 //strlen - calculate the length of a string// 2 3 #include <stdio.h> 4 5 int strlens(const char *s); 6 char strcats(char *dest, const char *src); 7 8 #define NUM 100 9 10 int main(void) 11 { 12 char c[NUM]; 13 char *s; 14 s = c; 15 16 printf("

解题报告 smoj 2019初二创新班(2019.3.17)

目录 解题报告 smoj 2019初二创新班(2019.3.17) T1:找玩具 题目描述 题意转化 分析 代码 优化(代码复杂度) T2:闯关游戏 题目描述 分析 代码 T3:子数组有主元素 题目描述 分析 代码(\(O(nm\log n)\)) 优化 代码(\(O(nm)\)) 解题报告 smoj 2019初二创新班(2019.3.17) 时间:2019.3.21 T1:找玩具 题目描述 在游戏开始之前,游戏大师在房间的某些地方隐藏了N个玩具.玩具编号为1到N.您的任务是尽可能多地找到这些玩

2019.12.17 面向对象习题

/** * TimeTraveler.java * com.DuiXiang * * Function: TODO * * ver date author * ────────────────────────────────── * 2019年12月17日 17671 * * Copyright (c) 2019, TNT All Rights Reserved.*/ package com.DuiXiang; /** * ClassName:TimeTraveler Function: TOD

2019年17道高频React面试题及详解

以下面试题来源于github项目前端面试指南,那里有超过200道高频前端面试题及答案,目前拥有1400star. 为什么选择使用框架而不是原生?框架的好处: 组件化: 其中以 React 的组件化最为彻底,甚至可以到函数级别的原子组件,高度的组件化可以是我们的工程易于维护.易于组合拓展.天然分层: JQuery 时代的代码大部分情况下是面条代码,耦合严重,现代框架不管是 MVC.MVP还是MVVM 模式都能帮助我们进行分层,代码解耦更易于读写.生态: 现在主流前端框架都自带生态,不管是数据流管理

2019/9/17 校内练习赛 解题报告

比赛详情 本次练习赛已收录至2019/9/22 本周总结 tree 给定一棵无根树,求使得所有节点深度和最大的根节点. 思路 考虑先令\(1\)为根,\(tot\)为此时所有节点深度和,预处理\(size(x)\)表示\(x\)子树的大小.设\(u\)为\(1\)的某个儿子,显然从\(1\)走到\(u\)时,有: \[tot=tot+(n-size[u])-size[u]\] 将结论推广到所有节点,扫描整棵树得到答案,时间复杂度\(O(n)\). 代码 #include<bits/stdc++.

算法1~2019.2.17

//非数值计算常用的经典算法/* 穷举也称"枚举法",极可能出现每一种情况--测试,判断是否满足条件,一般采用循环来实现.例子1:用穷举法输出所有的水仙花数(三位整数:其每数位上的数字的立方和与该数相等,比如"1**3+5**3+3**3=153)*//*    #include<stdio.h>    #include<math.h>    int main()    {        //方一        int x,g,s,b;        

PAT 甲级 A1083 (2019/02/17)

#include<cstdio> #include<cstring> #include<algorithm> // STL using namespace std; //使用sort()函数必须加上 const int MAXN = 50; struct Student{ char name[15]; char id[15]; int score; }stu[MAXN]; bool cmp(Student a, Student b){ return a.score &g

PAT 甲级 A1025 (2019/02/17)

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 30010; struct Student{ char id[15]; int score; int local_number; int local_rank; }stu[maxn]; bool cmp(Student a, Student b){ if(a.score != b.sco

PAT 甲级 A1028 (2019/02/17)

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN = 100010; struct Student{ int id; char name[10]; int score; }stu[MAXN]; bool cmp1(Student a, Student b) { return a.id < b.id; //从小到大 } bool cmp