关于c语言的知识点不足的地方
在最近的一次c语言考试之前,查找资料做题总结
关于代码的自动对齐,dev c++ CTRL+shift+A/a
关于运算顺序的csdn上有,常考的有/ %等 上地址
https://blog.csdn.net/qq_28518147/article/details/101079884
float是C语言提供的合法数据类型关键字。 常量不能再等号左面 逗号表达式只看最后一项
在C语言中,要求参加运算的数必须 是 整数的运算符是%
逗号表达式,从左到右计算,最右边的表达式的值作为整个括号表达式的值
c语言的基本控制结构:顺序结构、选择(判断)结构、循环结构
#o是以八进制来输出
#x是以十六进制进行输出
一个实型变量的值肯定是精确的 错误的× 因为 指针只是指向一块地址。是当引用指针指向的变量时,由于出现类型转换,会出现精度损失。
Int main()
{ int y= 456 ;
printf( “ y=%7o \n ” ,y); // 710(前面有4个空格)
printf( “ * y=% -7o* \n ” ,y); //-通俗一点就是从左往右排,然后就是710 *(空格依旧是4个)
printf( “ * y=% 07o* \n ” ,y); //这个的意思是空位用0来表示,所以会有0000710*
}
A ascii 65
a ascii 97
在定义二维数组时可省略行数,但是列数必须指出
在C语言中,字符串以'\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。
'\0’在c语言中是终止的符号,出现这个,后面的别看了(只是说在下面的这种例子。。)
例子:
数组的长度是固定的,而其中元素的数据类型必须相同
选C aa是数组名的同时也是这个数组首元素的首地址,也就是aa=&aa[0] 找aa[1]的地址就是首地址偏移一个整形位,所以A D 对 B就是对元素aa[1]取地址 所以ABD对 C中&小于后置++的优先级所以&aa[0]++等价于 &(aa[0]++)所以先对aa[0]中的元素值加1后,在对aa[0]取址,结果还是aa[0]的地址 故C错
本题考核的知识点是函数gets()的应用。函数gets()的调用形式为gets(str_adr);str_adr是存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。换行符读入后,不作为字符串的内容。本题中定义一个长度为10的字符数组和一个指针变量b,并且通过赋值让它指向数组a。选项A)、选项B)、选:C)和选项D)中只有选项B)中gets函数的参数a[0]不能表示数组a的首地址,故选项B)不正确。所以,4个选项中选项B)符合题意。
[命题目的] 考查continue和break语句的使用。 [解题要点] continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句, exit,return等语句也能直接跳出多层循环。 [考点链接] continue和break语句在while语句中的作用。
在 if 语句中又包含一个或多个 if 语句称为嵌套if语句
关于从从后向前排序
for(i=0;i<n/3;i++)
{
s=a[i];
a[i]=a[n-1-k];
a[n-1-k]=s;
}
关于从小到大排序
for{j=0;j<n-1;j++}
{ if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。
C语言中,int型数据在内存中的存储形式是 补码
在C语言中,字符型数据在内存中以 ASCII码形式存在
"\'abc\376"
第1个\告诉其后的\有效,第3个\告诉其后的'有效,后面abc都有效,这总共是5个字符;第4个\后跟 着一个3位数字,就被解释成了以8进制表示的ASCII码,8进制376是16进制0xFE,它是个小黑方 块,所以共有6个有效字符。而C/C++在字符串的最后要自动放一个结束符'\0',因此最后需要7个字 节来存放这个字符串。
宏替换时先求出实参表达式的值,然后代入形参运算求值。 (× )
用%s 格式符输出字符串时,输出字符不包括结束符 ’\0’。 (√)
c 语言中函数定义不允许嵌套,但调用可嵌套。 (√)
函数可以调用自己。 (√ )
在一个源程序中, main 函数的位置必须在最开始。 (× )
所有变量在声明时都必须给定一个类型。 (√ )
一个C程序由若干个源程序文件组成,而一个这样的文件可以有若干个函数和预处理命令以及全局变量声明部分组成
C 源程序的基本单位是 函数 。
运行 C 程序的步骤是:编辑源程序 →编译,得到 目标 程序→连接,得 到 可执行 程序→运行,得到结果。
算法的确定性是指:算法中的每一个步骤都应当是确定的
已知梯形的上底为 a,下底为 b,高为 h,用 C 语言写的正确的面积公式 是B 1.0/2(a+b)h
putchar函数可以向终端输出一个 字符或字符型变量值
、一个 C 语言程序是由.函数组成
在宏定义 #define PI 3.14159中,用宏名 PI 代替一个 字符串
C 语言程序从 main() 函数开始执行,所以这个函数要写在 程序文件的任何位置
构成数组的所有元素的数据类型必须是相同的
用指针法引用数组元素允许数组元素的下标越界
定义数组时的长度可以是整型常量表达式
fun(float x) {float y; y=3*x-4; return y; }
关于这个函数,返回值为int
答案是int,这是因为函数fun(float x)的类型没有明确申明。而C语言规定,缺省类型说明的函数, 其默认类型为int。
C语言是一门高级语言
C 语言源程序文件经过编译后,生成目标文件的后缀是 obj
算法的特点:有穷性,确定性,有零个或多个输入,有一个或多个输出,有效性
转义字符的理解
“"对于这类字符的开始,首先要确定这是几进制,然后转化成10进制,对照ascii码即可
算法有:自然语言,流程图,伪代码
%u是十进制
字符串 "china" 在内存中占据的存储空间是 5 个字节。这个是错误答案,是6个字节,因为有\0结束的字符的存在(注意,只要是语句字串,这样的"",都会有以\0存在的结束标志,它也占一个字符。(再次拓展,字符"\0"是字符串的结束标记,其 ASCII 码值为 0。)
还有存在这样的也需要注意
char a[]="abcd";char b[]={'a','b','c','d'}; 则 a 和 b 两数组长度不相同。a的字节是5,b的字节是4.。上面已经说了,至于b,因为是单个字符组成的数组,没有终止的\0来作为结束的标志
C语言源程序文件经过编译后,生成目标文件的后缀是 .obj
C语言程序从 main()函数开始执行,所以这个函数要写在程序文件的任何位置(只要可以被调用就行了,写哪里都行,c语言的规则是当声明函说是为了调用函数知道在哪,然后去执行。)
构成数组的所有元素的数据类型必须是相同的
用指针法引用数组元素允许数组元素的下标越界
定义数组时的长度可以是整型常量表达式
补充:上面说的是字节,也就是sizeof函数,而strlen是用来计算字符串内容长度。sizeof也是储存长度,也是用sizeof, char a[]={"wocao"} sizeof(a)的返回值为6 ,而strlen(a) 的返回值则为5,为什么是6?因为后面有一个\0来作为终止,和上面说过的一样为什么是5?因为只计算当前的内容长度,通常在写程序时比较常用,例如数组。。。
关于第四章,最后一节
在C语言程序中,函数的定义不能嵌套,函数的调用可以嵌套
C程序是函数的集合,包括标准库函数和用户自定义函数
在C语言程序中,被调用的函数必须在main函数中定义 这句话是错误的 因为调用的函数在调用之前必须进行声明,因为所有程序执行是从main()开始的,所以建议声明在main()之前,而不是在main()中声明。
一个完整的c源程序是由一个且仅由一个主函数和零个以上的非主函数构成
在一个C程序中,main函数可以在任何地方出现
实参可以是常量、变量、表达式、函数等。 错误 形参只能是变量,在被定义的函数中,必须指定形参的类型。
函数未被调用时,系统将不为形参分配内存单元
实参与形参的个数应相等,且实参与形参的类型必须对应一致
当形参是变量时,实参可以是常量、变量或表达式
函数调用时,当实参和形参都是基础类型变量时,他们之间数据传递的过程是实参将其值传递给形参,调用结束时形参并不将其值回传给实参。
函数的形参和实参分别占用不同的存储单元
实参与其对应的形参占用相同的存储空间,是占用不同的储存空间。
C语言中函数返回值的类型是由定义函数时所指定的函数类型决定
C语言规定,程序中各函数之间 既允许直接递归调用也允许间接递归调用 函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。
C语言中,凡未指定存储类别的局部变量的隐含存储类别是 auto
在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是 static