c语言

C语言中static关键字的作用

 ̄綄美尐妖づ 提交于 2020-03-06 12:36:37
static用法: 在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c.该变量在本文件内从定义开始到文件结束可见。 2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下: a.该变量在全局数据区分配内存。 b.它始终驻留在全局数据区,直到程序运行结束。 c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。 # include <stdio.h> void fn ( void ) { int n = 10 ; printf ( "n=%d\n" , n ) ; n ++ ; printf ( "n++=%d\n" , n ) ; } void fn_static ( void ) { static int n = 10 ; printf ( "static n=%d\n" , n ) ; n ++ ; printf ( "n++=%d\n" , n ) ; } int main ( void ) { fn ( ) ; printf ( "--------------------\n" ) ; fn_static ( ) ; printf (

C语言之指针

社会主义新天地 提交于 2020-03-06 12:00:24
#include <stdio.h> #include <stdlib.h> void swap_t(int*a,int*b) {int p; p=*a; #借助指针,交换变量值 *a=*b; *b=p; } int main() { int a,b; a=6,b=5; #a,b的地址不变,但是经指针操作后其中的值交换 int *p,*q; #声明变量上,一般变量是被分配合法地址的,但是指针变量p是有地址的,但是p的内容可能是非法地址。 p=&a; q=&b; swap_t(p,q); #单向传递:只进不出(数值无法回传)swap函数结束后,p,q不变 printf("%d,%d",*p,*q); } 指针与数组的关系,&a[i]=(a+i),a[i]=*(a+i)#每次从a(首地址算起)即重新计算地址,p++(有规律的改变当前地址的值省去了重新计算)效率更高,但是其不够直观,数组a 不能a++的原因:a即是数组首地址是一个常量,而p对应是变量,他可以改变内部存储的地址实现p++ 区分几种形式: 0x0001 p++; //p++可以把p++看成两步,第一步返回了p的值,第二步对p自加操作有;p实现了自增 *p; //*(p+1) 0x0002 *p++ 与*(p++)//++与*同优先级,右结合性,有因为是后加加,所以第一步返回p的值,后*p,后p自增 0x0003 *(++p)

C语言第三章自述 1

烈酒焚心 提交于 2020-03-06 10:26:16
** 框架** 3.1C语句概述 (语句描述了一种行为,是向计算机发出的执行某一操作的指令) 1.表达式语句 表达式后加一个“;”构成表达式语句。 例: 加入存在变量定义: int a,b; 以下语句存在意义: a=3; //赋值表达式构成语句,赋值变量a b=a+3; //赋值表达式构成语句将a+3的结果赋给b a++; //自加表达式构成语句,执行后变量a自加 a=3,b=4; //逗号表达式构成语句,执行后变量a的值为3,b的值为4 2.流程控制语句 (1)选择结构的控制语句:if双分支选择结构,which多分枝选择结构。 (2)循环结构控制语句:while语句和for语句控制的当型循环结构,do~while控制的直到型循环结构。 (3)控制流程转换语句:又称为跳转语句,包括break,contiune,goto,return语句。 3.空语句:只有一个分号,用于完善选择结构和循环结构。 4.复合语句 以花括号“{ }”括起来的功能相对完善的程序段。 例: #include <stdio.h> int add(int x, int y) { int t; t = x + y; return (t); } void main() { int a, b, sum; scanf("%d%d", &a, &b); sum = add(a, b); printf("sum=%d\n",

C语言中全局变量与局部变量

冷暖自知 提交于 2020-03-06 08:53:44
C语言中全局变量与局部变量的区别是什么呢?我们怎么定义全局变量与局部变量呢。 一、全局变量 以下定义方法中定义的x就是被定义为了全局变量,全局变量可以被全局内的函数引用。 # include <stdio.h> int x = 123 ; int main ( ) 同时定义了全局变量x=123后任然可以再定义一个局部变量x=456。此时程序不会出错。例: # include <stdio.h> int x = 123 ; int main ( ) { int x = 456 ; printf ( "x=%d" , x ) ; return 0 ; } 运行结果: 二、局部变量 局部变量只能定义在函数内不能定义在函数外。局部变量有以下两种定义方式: # include <stdio.h> int main ( int x ) //定义局部变量x { int y = 1 ; //定义局部变量y并将y赋值为1 x = 2 ; //将x赋值为2 printf ( "x=%d,y=%d" , x , y ) ; //输出x和y的值 return 0 ; } 运行结果: 三、全局变量和局部变量的一些特性的总结 :1.全局变量因为可以被所有函数引用,所有他的生命周期长于局部变量。生命周期变长后占用内存也会更多,因为无法及时的释放。2.当全局变量和局部变量名字相同时取值取局部变量

C语言I博客作业08

杀马特。学长 韩版系。学妹 提交于 2020-03-06 04:41:34
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 C语言I博客作业08 我在这个课程的目标是 学习C语言,码代码,为后面的学习打好基础 这个作业在哪个具体方面帮助我实现目标 更加了解编程及代码题的编写 参考文献 PTA系统常见问题解答 ; C语言基础知识 ; whlie 1.PTA实验作业 1.1 jmu-c-二进制转10进制 输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input! 输入样例1: 11111111 输出样例1: 255 输入样例2: 34 输出样例2: error input! 1.1.1数据处理 数据表达:用了变量num,i,item,sum,s,其中num表示二进制字符,sum表示十进制数,s表示用于之后的输出计算;其中#include<string.h>为用字符串处理函数的头文件;其中%s为字符串型格式符。 数据处理:伪代码 include<stdio.h> include<math.h> include<string.h> 运用到了字串符头文件 int main() { 定义字符型变量num;整形变量i,item,sum,s 将新取值1赋值给s,将0赋值给sum 输入num 运用for循环 for(i=0;num[i]>0;i++) { 如果num[i] 不等于'0' 并且 num[i

C语言I博客作业08

这一生的挚爱 提交于 2020-03-06 04:40:51
这个作业属于哪个课程? C语言程序设计II 这个作业的要求在哪里? https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9979 我在这个课程的目标是? 熟练掌握C语言的使用技巧和C语言相关工具的使用 这个作业在哪个具体方面帮助我实现目标? 深入了解和使用while语句和do-while语句/DIV> 参考文献 网页表格的制作方法,CSDN,《C Primer Plus》,Make down语法 1.PTA实验作业 1.1求整数的位数及各位数字之和 对于给定的正整数N,求它的位数及其各位数字之和。 数据表达:用了N,a,b三个变量,N直接输入,a,b计算可得,且都是整型。 数据处理:通过这三个语句a←a+N%10;N←N/10;b++;计算a,b,用到while语句组成的循环结构。 1.1.2实验代码截图 1.1.3 造测试数据 输入数据 位数 各位数字之和 100 3 1 20001023 8 8 00000 0 0 来源: https://www.cnblogs.com/1224311807QQ/p/11870633.html

C语言I博客作业08

人盡茶涼 提交于 2020-03-06 04:40:41
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/9978 我在这个课程的目标是 很好的编写程序,提高自己的准确率和速度 这个作业在那个具体方面帮助我实现目标 通过PTA上的代码作业让我发现自己的错误并不断改正 参考文献 《C语言程序设计》,CSDN编程社区,《提问的智慧》 一、PTA实验作业 我的排名 1.1 求整数的位数及各位数字之和 对于给定的正整数N,求它的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10 ​9 ​​的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321 输出样例: 3 6 1.1.1数据处理 数据表达:变量“N,number,count,a,i”;变量值的来源“赋值运算,算术运算”;变量类型“都是整型变量int” 数据处理:表达式“N=N/10,count++;numer+=a%10,a=a/10,i++”;流程结构“分支结构,循环结构” 1.1.2实验代码截图 1.1.3造测试数据 输入 输出 说明 321 3 6 检验代码可运行输出正确答案 53186961 8 39 这组数据的位数为8位数,其各位数字之和为39 101012400000 12 9

C语言I博客作业08

半腔热情 提交于 2020-03-06 04:40:32
问题 回答 这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977 我在这个课程的目标是 掌握并熟悉C语言的运用 这个作业在哪个具体方面帮助我实现目标 对代码编译更加熟悉,学习到了while语句,还有进制数的理解 参考文献 《C primer Plus》《C语言程序设计》《CSDN》《百度》《伪代码的写法》 1. PTA实验作业 1.1 jmu-c-二进制转10进制 题目内容 输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input! 1.1.1 数据处理 数据表达:定义两个整型变量n,s,其中n代表一个判断条件,初始赋值为0,s表示转化出的十进制,定义了字符型变量ch,表示输入的二进制数的每个位数 数据处理:while循环当ch不等于回车时执行,回车时跳出while语句,while中输入字符,用switch语句,当ch为0和1时,都执行同一条语句s=s 2+ch-'0';由于是一个字符一个字符的输入,所以得出s后跳出switch但不跳出while,当二进制所有位数输完,按回车跳出while执行下一条,其他情况下,就比如有除0,1外的数字时,赋值n=1,就跳出switch,然后再回车跳出while

【C语言】PAT (Basic Level) 1004 读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

拈花ヽ惹草 提交于 2020-03-06 00:43:10
输入格式: 每个测试输入包含 1 个测试用例,格式为: 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的姓名 学号 成绩 … … … 第 n+1 行:第 n 个学生的姓名 学号 成绩 其中 姓名 和 学号 均为不超过 10 个字符 的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。 【注意:】不超过十个字符,则需要留十一个以存储’\0’ 输出格式: 对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。 输入样例: 3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95 输出样例: Mike CS991301 Joe Math990112 #include<stdio.h> #include<string.h> void main() { int n;//学生人数 char name[11],maxn[11],minn[11];// 姓名 最高姓名 最低姓名 char number[11],max[11],min[11];// 学号 最高学号 最低学号 int score[1];//成绩 int i; int maxs=0,mins=100;/

C语言-多文件编译

限于喜欢 提交于 2020-03-05 23:18:44
1.构造add函数将两个数字进行相加 06main.c #include <stdio.h> #include "06add.h" int main() { int val = add(3, 5); printf("val是%d\n", val); return 0; } 06add.c int add(int val, int val1) { return val + val1; } 06add.h #ifndef __06ADD_H__ #define __06ADD_H__ int add(int, int); #endif //__06ADD_H__ 编译方式 gcc 06main.c 06add.c 2. 编译get函数使得用户从键盘中获得输入,为了不被主函数调用,不在.h文件里做声明 07main.c /* 调用获取主函数 */ #include <stdio.h> #include "07get.h" int main() { get(); printf("获得的数是%d\n", result); return 0; } 07get.c /* 获得一个整数 */ #include <stdio.h> #include "07get.h" static int result = 0; //加上了static其他文件不能使用 int sc(){ int val = 0;