初识C语言——C语言中的基础知识

  • main函数

  每一个C语言程序都是由main函数开始执行的,main函数是程序的入口,也被叫做:主函数。

int main ()

{

        ...

        return 0;

  前面的int表示main函数执行结束后返回一个整型类型的值。所以最后的return 0;与之呼应。

  但要注意:main 函数有且只有一个;哪怕一个项目中有多个.c文件,但是只能存在一个main函      数。

  • printf函数

  printf是一个库函数,它能实现在屏幕上打印信息。下面是使用printf函数打印数据的方式。

  1. int n=1;
  2. printf("%d\n",n);                                       //printf打印整型
  3. printf("%c\n",'a');                                      //printf打印字符
  4. printf("%lf\n",1.23);                                  //printf打印双精度浮点型
  5. printf("%s\n","hello")  or  printf("hello")    //printf打印字符串

 但要记得包含头文件 stdio.h 

#include<stdio.h>

  • 关键字

  C语言的32个关键字
auto   break   case   char   const   continue   default   do   double   else   enum   ex   float   for goto   if   int   long   register   return   short   signed   sizeof   struct   switch   typedef   union unsigned   void   volatile   while
  • 自己创建标识符时不能与关键字重复
  • 关键字不能自己创造
  • 字符串和\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;
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值