-
main函数
每一个C语言程序都是由main函数开始执行的,main函数是程序的入口,也被叫做:主函数。
int main ()
{
...
return 0;
}
前面的int表示main函数执行结束后返回一个整型类型的值。所以最后的return 0;与之呼应。
但要注意:main 函数有且只有一个;哪怕一个项目中有多个.c文件,但是只能存在一个main函 数。
-
printf函数
printf是一个库函数,它能实现在屏幕上打印信息。下面是使用printf函数打印数据的方式。
- int n=1;
- printf("%d\n",n); //printf打印整型
- printf("%c\n",'a'); //printf打印字符
- printf("%lf\n",1.23); //printf打印双精度浮点型
- printf("%s\n","hello") or printf("hello") //printf打印字符串
但要记得包含头文件 stdio.h
#include<stdio.h>
-
关键字
- 自己创建标识符时不能与关键字重复
- 关键字不能自己创造
-
字符串和\0结束符
使用双引号括起来的一串字符成为字符串,打印格式可以使用 %s 来指定(见上文printf函数的使用)。
在字符串的末尾隐藏放着一个\0字符,作为字符串的结束标志。当使用printf()打印字符串或者strlen()计算字符串长度的时候,遇到 \0 时自动停止。
-
转义字符
\? :连续多个问号时使用,防止被解析成三字母词;
\' :表示字符常量';
\" :表示一个字符串内部的双引号;
\\ :表示一个反斜杠,防止被解释成一个转义序列符;
\a :警报;
\b :退格键,光标回退一个字符但不将其删除;
\n :换行符;
\r :回车符;
\t :制表符;
\ddd :d d d表示一个1~3个八进制数字;
\xdd :d d表示2个十六进制数字;
\0 :null字符,代表没有内容,用于字符串的结束标志,其ASCLL码值是0;
-
数据类型
字符型:
char //character
[signed] char //有符号的
unsigned char //无符号的
signed 和 unsigned
signed 关键字,表示一个类型带有正负号,包含负值
unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数
整型:
//短整型
short [int]
//整型
int
//长整型
long [int]
//更长的整型
long long [int]
浮点型
float
double
long double
布尔类型
_Bool
!注意:使用布尔类型必须包含头文件 <stdbool.h>
取值是 true 或者 false
sizeof操作符
sizeof(类型)
sizeof 表达式
如果sizeof的操作数不是类型而是表达式,可以省略后面的括号;
sizeof 后面的表达式不真实参与运算,而是根据表达式的类型来得出大小;
sizeof 的计算结果是 size_t 类型。
数据类型的长度
char 1个字节
_Bool 1个字节
short 2个字节
int 4个字节
long 4个字节
long long 8个字节
float 4个字节
double 8个字节
long double 8个字节
-
单目操作符:++、--
前置++
先+1,后使用
后置++
先使用,后+1
前置--、后置--
与++同理
-
占位符
#include<stdio.h>
int main(0
{
printf("There are %d apples\n",3);
return 0;
}
上面的例子中,%d就是占位符,表示这个位置需要用其他值来替换。
printf()的第二个参数就是替换占位符的值。并且输出文本里面可以使用多个占位符,后面的参数与占位符是一一对应关系
-
输出格式
printf()允许限定占位符的最小宽度
#include<stdio.h>
int main()
{
printf("%6d\n",123); //输出为“ 123”
return 0;
}
上面例子中%5d表示这个占位符的宽度至少为5位,默认右对齐
如果希望改成左对齐,则在 % 后面插入一个 - 号。
总是显示正负号
默认情况,printf()不对正数显示 + 号,只对负数显示 - 号,如果想让正数输出+号,则在占位符的 % 后面加一个 + 。
限定小数位数
e.g.希望小数点后面输出3位,占位符就要写成 %.3f
这种写法可以和限定宽度占位符结合使用。
输出部分字符串
e.g.用占位符 %.5s 表示只输出字符串的前5个字符
-
scanf()函数
这个函数用于读取用户的键盘输入。
用户输入数据、按下回车键后,scanf()就会处理用户的输入,将其存入变量
语法与 printf() 类似
scanf()的第一个参数是一个格式字符串,里面放占位符,第二个参数传递变量的地址。
返回值是一个整数,表示成功读取的变量个数。如果没有读到任何项或匹配失败,则返回 0 。如果在成功读取任何数据之前,发生了读取错误或者读取到文件结尾,则返回常量EOF。
- 分支语句
if (表达式)
语句
表达式为真,则语句执行;反之则不执行。0为假,非0为真
一组的if 后面可以跟无数个 else if ,但只能有一个else。
如果 if 中包含多条语句,则需要使用 { }将代码包含进去。
-
条件操作符
exp1 ? exp2 : exp3
如果 exp1 为真,则 exp2 计算,反之则 exp3 计算。
-
逻辑操作符
!:取反运算符
&&:与运算符,并且的意思(两侧都为真才为真)
||:或运算符,或者的意思(两侧至少有一个为真,则为真,否则为假)
-
闰年的判断
1. 能被4整除并且不能被100整除
2. 能被400整除
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdbool.h>
int main()
{
int year = 0;
while (scanf("%d", &year))
{
bool flag = false;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
flag = true;
}
if (flag)
{
printf("%d 是闰年", year);
}
}
return 0;
}
-
switch语句
switch (表达式)
{
case (表达式的可能值1):(语句)
case (表达式的可能值2):(语句)
default: (语句)
}
每一个 case 的语句最后一定要加 break;
如果 switch 后的表达式中的值都不匹配case语句时,要不就不做处理,要不就加入 default 语句来执行。
-
while 循环
while(表达式)
语句;
如果表达式为真则执行接下来的语句,若有多条语句,则使用 { }。
-
for 循环
for(表达式1;表达式2;表达式3)
语句;
表达式1——循环变量初始化
表达式2——循环结束条件的判断
表达式3——循环变量的调整
-
do-while 循环
do
{
语句;
}while(表达式);
先直接进入循环体执行 do 后的语句,然后判断 while 的表达式,若为真,则进行下一次循环,反之则不再继续循环。
break
在遇到 break 的时候终止执行语句,跳出break存在的这一层循环。
continue
跳过本次循环中 continue 后面的代码,进行下一次循环的判断。
-
goto 语句
for(...)
{
for(...)
{
for(...)
{
if(表达式)
{
goto point;
}
}
}
}
point:
//语句...
在 for 循环中一个 break 只能跳出一层 for 循环,这个时候使用 goto 语句就会更快跳出语句
-
猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<time.h> void game() { int r = rand() % 100 + 1; int guess = 0; while (1) { scanf("%d", &guess); if (guess < r) { printf("猜小了\n"); } else if (guess > r) { printf("猜大了\n"); } else { printf("恭喜你 猜对了!\n"); break; } } } void menu() { printf("**********************\n"); printf("******* 1.play *******\n"); printf("******* 0.exit *******\n"); printf("**********************\n"); } int main() { int input = 1; srand((unsigned int)time(NULL)); while (input) { menu(); printf("请选择->\n"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("游戏结束\n"); break; default: printf("选择错误 请重新选择\n"); break; } } return 0; }
1040

被折叠的 条评论
为什么被折叠?



