与大伙分享C语言错题笔记:
字符型的赋值要用单引号( ' ' )括起来。
sizeof是关键字, 不是函数
C语言源程序中,main函数可以在其它函数之后
函数不能嵌套定义
C语言程序不能有多个main函数
指针可以用关系运算符进行比较
指针之间相乘无意义
C标识符命名规则:
1、由字母、数字及下划线组成,其中第一个字符必须是字母或下划线;
2、不能和C关键字同名;
浮点型常量:(1)一般形式(如3.1415926);(2)指数形式:由字母E或e连接两个数组成,要求E或e的前后都有数且之后必须为整数,如1.5e-3
字符常量:用一对单引号及其所括起来的字符组成,如’A’,’a’,’9’,’$’,一些特殊字符的表示可以通过转义符’\’来实现如:"\n"(换行)
\r 回车(不换行) , \r后边的数字替代 这一行最开始的相等数目的数字
\b 退格 ,也就是电脑键盘上的backspace
\b后边有几个数字 就往前删除几个数字 并将\b后边的数字补上去,有多少补多少。
字符串常量:由双引号引起来的0到多个字符序列组成,双引号中包括任何字符,包括前面列出的转义字符。编译器自动在字符串后面加上空字符’\0’作为结束标志。
#include<stdio.h>
#include <string.h>
int main() {
char x[] = "12345", y[] = { '1','2','3','4','5' };
char str[]={'1','2','3'},str2[3]={'1','2','3'},str3[4]={'1','2','3'},str4[5]={'1','2','3'};
printf("字符型数组x的长度为:%d\n",strlen(x));
printf("字符型数组y的长度为:%d\n",strlen(y));
printf("字符型数组x的大小为:%d\n",sizeof(x));
printf("字符型数组y的大小为:%d\n",sizeof(x));
printf("字符型数组str[]的大小为:%d\n",sizeof(str));
printf("字符型数组str2[3]的大小为:%d\n",sizeof(str2));
printf("字符型数组str3[4]的大小为:%d\n",sizeof(str3));
//str3[4]实际为 {'1','2','3','\0'}末尾有个空标识符
//0在ASC||里对应的字符是'0'
printf("字符型数组str4[5]的大小为:%d\n",sizeof(str4));
//'\0'只是为了在字符串里转义。因为并没有一个具体的符号用来表示值为0的那个字符
return 0;
}
运行结果:
float精度为6-7位
double精度为15-16位
所以一般来说遇到浮点数可都用double类型名
算术运算符:
(1)/ :两整数相除结果为整数
(2)% :求余运算,要求两操作数必须为整数
条件运算符
如果a,b,c是表达式,那么:a?b:c表示当a的值不为0时表达式等于b,否则等于c,两选一,相当于一个双分支语句。
10、优先级顺序:由高到低
(1)有括号先算括号
(2)单运算符:!,++,--
(3)* / %
(4)+ -
(5)<, <= , >, >=
(6)= =, !=
(7)&&
(8)||
(9)条件运算符 ? :
(10)赋值运算符
(11)逗号运算符
C语言程序组成:
C程序有且只能有一个主函数main( ),C程序总是从main函数开始执行的,与main函数的位置无关;
switch 语句
switch(表达式)
{
case 常量表达式1:语句段1; break;
case 常量表达式2:语句段2 ; break;
....…
case 常量表达式n:语句段n ; break;
default : 语句段n+1 ; break;
}
若是无break,则会接着执行下一步,直到break,例如:
#include<iostream>
using namespace std;
int main() {
int a=2;
//cin >> a;
switch (a) {
case 1:cout << 1 << endl; break;
case 2:cout << 2 << endl;
case 3:cout << 3 << endl; break;
case 4:cout << 4 << endl; break;
case 5:cout << 5 << endl; break;
default: cout << "无该情况"; break;
}
return 0;
}
结果为:
格式控制说明 %…
输出数据类型 | 十进制 | 八进制 | 十六进制 |
int | %d | %o | %x |
long | %ld | %lo | %lx |
unsigned | %u | %o | %x |
unsigned long | %lu | %lo | %lx |
输出数据类型 | 格式符 | ||
float | %f | ||
double | %lf | ||
char | %c | ||
字符串 | %s |
常用字符的ASCII码
‘A’:65 ‘a’:97 ‘0’:48
开大数组:
//取模运算中结果的正负只取决于被除数的正负
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
cout << 5 % 2 << endl;
cout << -5 % 2 << endl;
cout << -5 % 2 << endl;//取模运算中结果的正负只取决于被除数的正负
cout << -5 % -2 << endl;
printf("%d %d", 5 % 2, -5 % 2);
return 0;
}
结果为
若要输出%号,则需要加上它的转义字符——%即
#include <stdio.h>
int main() {
int a, b,c,d;
scanf("%3d%*5d%4d %d*3d%3d", &a, &b);
//对输入的整数取前3位送给 a,再取5位不用,后面的给b,但中间不能输入空白字符
printf("a=%d,b=%d", a, b);
return 0;
}
#include <stdio.h>
int main() {
int a = 10, b = 3;
int x = (a + b - 1) / b;
printf("%d", x);//a除以3并且向上取整
return 0;
}
调用#include<math.h>中的pow(x,y)时,要注意x和y都是double类型的浮点数,pow返回的也是double的浮点数