C语言基础习题50例(九)41-45

习题41

学习static定义静态变量的用法。

实现思路: 用static声明和未用static声明变量进行对比,即可得出static的作用。

代码如下:

1#include <stdio.h> 2 3int main(){ 4 void func(); 5 int i; 6 for(i = 0;i < 10; i++){ 7 func(); 8 } 9 10 return 0; 11} 12 13void func(){ 14 int i = 0; 15 static int num = 0; 16 printf("In func:i = %d, num = %d\n", i, num); 17 i++; 18 num++; 19}

打印:

1In func:i = 0, num = 0 2In func:i = 0, num = 1 3In func:i = 0, num = 2 4In func:i = 0, num = 3 5In func:i = 0, num = 4 6In func:i = 0, num = 5 7In func:i = 0, num = 6 8In func:i = 0, num = 7 9In func:i = 0, num = 8 10In func:i = 0, num = 9 11

习题42

学习使用定义自动变量的用法。

实现思路: 自动变量用auto关键字声明,函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量)都属于自动变量,默认不用关键字修饰即为自动变量,可进行对比分析。

代码如下:

1#include <stdio.h> 2 3int main(){ 4 int i, m = 0, n = 0; 5 for(i = 0;i < 10; i++){ 6 printf("In main: m = %d, n = %d. ", m, n); 7 { 8 auto int n = 10; 9 printf("In block: m = %d, n = %d\n", m, n); 10 } 11 m++; 12 n++; 13 } 14 15 return 0; 16}

打印:

1In main: m = 0, n = 0. In block: m = 0, n = 10 2In main: m = 1, n = 1. In block: m = 1, n = 10 3In main: m = 2, n = 2. In block: m = 2, n = 10 4In main: m = 3, n = 3. In block: m = 3, n = 10 5In main: m = 4, n = 4. In block: m = 4, n = 10 6In main: m = 5, n = 5. In block: m = 5, n = 10 7In main: m = 6, n = 6. In block: m = 6, n = 10 8In main: m = 7, n = 7. In block: m = 7, n = 10 9In main: m = 8, n = 8. In block: m = 8, n = 10 10In main: m = 9, n = 9. In block: m = 9, n = 10 11

习题43

学习使用static的另一用法。 

实现思路: static在单独的代码块中也可以实现在一次函数执行结束后变量未被销毁、保留当前的值,下次调用函数时即使用保留在内存中的变量值,直到运行期间结束才释放该变量。

代码如下:

1#include <stdio.h> 2 3int main(){ 4 int i, m = 0, n = 0; 5 for(i = 0;i < 10; i++){ 6 printf("In main: m = %d, n = %d. ", m, n); 7 { 8 static int n = 10; 9 printf("In block: m = %d, n = %d\n", m, n); 10 n--; 11 } 12 m++; 13 n++; 14 } 15 16 return 0; 17}

打印:

1In main: m = 0, n = 0. In block: m = 0, n = 10 2In main: m = 1, n = 1. In block: m = 1, n = 9 3In main: m = 2, n = 2. In block: m = 2, n = 8 4In main: m = 3, n = 3. In block: m = 3, n = 7 5In main: m = 4, n = 4. In block: m = 4, n = 6 6In main: m = 5, n = 5. In block: m = 5, n = 5 7In main: m = 6, n = 6. In block: m = 6, n = 4 8In main: m = 7, n = 7. In block: m = 7, n = 3 9In main: m = 8, n = 8. In block: m = 8, n = 2 10In main: m = 9, n = 9. In block: m = 9, n = 1 11

习题44

学习使用external的用法。

实现思路: 用extern来声明外部变量,以扩展外部变量的作用城,从变量的定义处开始,到本程序文件的末尾。

代码如下:

1#include <stdio.h> 2 3int main(){ 4 int max(int a, int b); 5 extern A, B; 6 printf("Max = %d\n", max(A, B)); 7 8 return 0; 9} 10 11int max(int a, int b){ 12 return a > b ? a : b; 13} 14 15int A = 12, B = 20;

习题45

学习使用register定义变量的方法。

实现思路: C语言允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取,从而提高执行效率,这种变量叫做寄存器变量,用关键字register声明。

代码如下:

1#include <stdio.h> 2 3int main(){ 4 long fact(int n); 5 int i; 6 for(i = 1; i <= 10; i++){ 7 printf("%2d! = %d\n", i, fact(i)); 8 } 9 10 return 0; 11} 12 13long fact(int n){ 14 register long f = 1; 15 int i; 16 for(i = 1; i <= n; i++){ 17 f *= i; 18 } 19 20 return f; 21} 22

打印:

1 1! = 1 2 2! = 2 3 3! = 6 4 4! = 24 5 5! = 120 6 6! = 720 7 7! = 5040 8 8! = 40320 9 9! = 362880 1010! = 3628800 11

本文原文首发来自博客专栏C语言实战,由本人转发至https://www.helloworld.net/p/gyDha3hzOF2P,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/106824367查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )