常犯错误:
(1)符号需要用英文,如:(){}""''\//;<>,. 部分中英文形态相似难以辨别。且空按Shift会切换中英文
(2)语句要以;结束
其他:
(1).-4.0e3=-4.0*10^3
多种函数:
常用头文件(令printf可使用)(其他作用不太清楚) standard input output
#include <stdio.h>
main函数
大部分操作在主函数内使用,有且只有一个
main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行声明或包含其被调用函数的头文件。
int表示main函数返回整型
int main(void)无参数 ()可写参数
int main()
{}
return
return 0; 返回0,主函数结尾使用(看见部分代码不使用也可以)(作用不清晰)
return z ; 返回z,一般用于定义函数
int main()
{
return 0;
}
int add(intx,inty)
{
int z = x + y;
return z;
}
printf函数
printf("");输出 print format
插入符:
如果有n个占位符,printf()的参数就应该有n+1个(前面的字符串)
小数点算一位
%d (有符号)整型 %d+字符=ASCII码值 %5d,右对齐至少五个占位
123--->__123 123456--->123456 %-5d,左对齐至少五个占位
%+5d 显示正号
%u无符号整型 unsigned int
%ul无符号整型 unsigned int long
%ull无符号整型 unsigned int long long
以上三者均可使用size_t由计算机判断,使用%zd
%c 字符 %c+ASCII码值=字符
%s字符串 %2s,输出部分字符串
%f浮点型 小数点后默认6位 %12f同%5d %.2f小数点后两位,四舍五入
%12.2f,12.345 == %*.*f,12,2,12.345
赋值忽略符* %*c
double--%lf
int main()
{
printf("hello world");
printf("a%c",'a');
printf("1%d",1);
printf("abc%s","abc");
printf("1.1%f",1.1);
return 0;
}
编译器不自动补0
在float型小数的插入符%f
中百分号%
的后面加上一个“小数点 + 小数位数”,例如%.2f
int main()
{
printf("1.11%2.f",1.11);
return 0;
}
转义字符
\n 换行
\0结束
int main()
{
printf("hello world\n");
return 0;
}
注释
便于查看,不影响程序执行
//
/* */
int main()
{
//printf("hello world");
/*printf("a%c",a);
printf("1%d",1);*/
printf("abc%s","abc");
return 0;
}
数据类型
char //字符数据类型
整型
short //短整型
int //整型
long //长整型
long long //更长的整型
浮点数
float //单精度浮点数
double //双精度浮点数
int main()
{
char a = 'c';
printf("a%c",a);
int b = 1;
printf("1%d",b);
float c = 1.1;
printf("1.1%f",c);
}
sizeof函数
计算数据所占用的比特
sizeof()数据元素个数 可以用int n = sizeof(arr1)/sizeof(arr[0])-1(计入\0故-1)
sizeof()数据数组下标可以用int n = sizeof(arr1)/sizeof(arr[0])-2
sizeof内部表达式不计算,且类型上short=int+int最终为short
int arr[]={1,2,3,4,5,6,8,9,10,11}
// 下标 0 1 2 3 4 5 6 7 8 9
//arr[]自动适应为10
计算每种类型大小
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}
strlen函数
#include <string.h> //令strlen可使用
strlen计算字符个数(遇到\0停止且忽视\0) string length
#include <string.h> //令strlen可使用
内存
1byte=8bite,1kb=1024byte,1mb=1024kb,1gb=1024mb,1tb=1024gb,1pb=1024tb
scanf函数
输入函数,在vs2022中需要#define _CRT_SECURE_NO_WARNINGS 1
&为取地址 %s无需&
scanf数组接收多少输入多少--->输入超出[],报错 %5s,输入前五位
scanf("%d %d", &num1, &num2);
字符串
1.printf("abc")与printf("%s","abc")效果相同
2.单个字符用''单引号
3."abc"默认末尾有\0作为结束标志
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c'};
char arr3[] = {'a', 'b', 'c', '\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
运算符(操作符)
加+,减-,乘*,除/ 整型的除法如果不能整除的话,小数部分会舍去
整型和浮点型的混合运算结果是一个浮点型 a+=5 == a=a+5 b=a++先使用,后+1
赋值= 判断相等== 判断不相等!=
#四则运算的4个符号
1 + 1
2.0 - 1.0
3 * 4
10 / 5
布尔类型
需要头文件#include <stdbool.h>
_Bool/bool 输出true/false 对应1(非0)/0
bool a = true
[signed]和unsigned
如[signed]short和unsigned short
修饰字符型和整型 signed带正负号,unsigned 0和正数
int = signed int char != signed char(取决于编译器,大部分=)
逻辑
&&与(and) ||或(or) !非(not)
短路
&&自左向右遇见false终止结算 ||自左向右遇见true终止结算
数组
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", a[4]);//分别对应0123456789,4对应5
int i = 0;
while (i < 10)
{
printf("%d\n", a[i]);
i++;
}
char b[3] = {'a','b','c'};
float c[2] = { 1.1 };
return 0;
}
选择语句
if else
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int input = 0;
printf("是否");
scanf("%d", &input);
if (input == 1)
printf("好");
else
printf("buhao");
return 0;
}
if else if
if(表达式)
执行语句;
else if(表达式1)
执行语句1;
......(很多的else if)
else
switch
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
char grade = 'B';
switch(grade)
{
case 'A' ://进入
printf("很棒!\n" );
break;//跳出
case 'B' :
case 'C' :
printf("做得好\n" );
break;
case 'D' :
printf("您通过了\n" );
break;
case 'F' :
printf("最好再试一下\n" );
break;
default ://均不是
printf("无效的成绩\n" );
}
printf("您的成绩是 %c\n", grade );
return 0;
}
条件操作符
三目操作符 exp1?exp2:exp3 a=(b>c?b:c)取大值
循环语句
while
while (1.条件成立)
{
2.执行;
3.执行; //while循环
}
do while
do
{
1.进行;
2.进行;
}
while (3.满足则循环);//do while 循环
for(;;)
for (1.赋值;2.条件; 4.进行)
{
3.进行;//for循环
//即使break,依然进行4
}
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
printf("输入操作数:>");
scanf("%d", &n );
int a = n;
/*while (a>1)
{
a--;
n = n * a; //while循环
}*/
/*for (a=a-1;0<a; a--)
{
n = n * a;//for循环
}*/
do
{
a--;
n = a * n;
}
while (1<a);//do while 循环
printf("%d", n);
return 0;
}