C语言教程

C语言教程

C语言结构

#include<stdio.h>                 /*引入头文件*/
int main(void)                  /*一个简单的C程序*/
{
   
    int number;             /*定义个名字叫做number的变量*/
    number=2014;                /*给number赋一个值*/
    printf("Hello ! I am dotcpp.com\n");    /*像屏幕打印一句话*/
    printf("This year is %d\n",number);
    return 0;
}

预处理语句+主函数

预处理语句

预处理语句主要有三类构成,分别是宏定义(#define),文件包含(#include)和条件编译(#if)。

宏定义(#define

宏定义相当于定义了一个全局变量,用全局变量来代替变量或者表达式。宏定义包含有参宏和无参宏。

宏定义
#define M (y*y+3*y);//无参宏,作用是指定标识符 M 来代替表达式(y*y+3*y)。
#define M(y) (y*y+3*y);//有参宏
宏调用
#define M(y) (y*y+3*y);//有参宏
int main(){
   
	M(4);//输出的是4*4+3*4
}
文件包含(include)

(1)另外文件包含后面可以接<>或者“”,里面来包含要引入的文件(以下两种方式都是可以的),文件包含的作用是引入指定文件的所有内容。

#include "stdio.h"
#include <stdio.h>

尖括号表示在包含文件目录中去查找,而双引号则表示首先在当前的源文件目录中查找, 若未找到才到包含目录中去查找。

(2)一个 include 命令只能指定一个被包含文件,若有多个文件要包含,则需用多个 include 命令。

(3)文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。

条件编译(#if

条件编译存在3种形式

第一种形式:

#ifdef 标识符 
程序段 1 
#else 
程序段 2 
#endif 

如果标识符被预定义过,则执行程序段1,否则执行程序段2。如果程序段2为空,则else可以不写。

#ifdef 标识符 
程序段 
#endif 

第三种形式:

#ifndef 标识符 
程序段 1 #else 
程序段 2 #endif 

如果标识符没有被预定义过,则执行程序段1,否则执行程序段2。

第三种形式:

#if 常量表达式 
程序段 1 #else 
程序段 2 #endif 

如果常量表达式为真,则执行程序段1,否则执行程序段2。

其它预处理指令

1.#error:强制停止编译。

2.# error-message:遇到#error 指令时,显示错误信息和作者预先定义的其它内容。

3.# line:改变__LINE____FILE__的内容,__LINE____FILE__都是编译程序中预定义的标识符。

4.# pragma:允许由此向编译程序传入各种指令。

C语言的数据类型

基本数据类型

C语言的基本数据类型为:整型、字符型、浮点型。分别是:shortintlongcharfloatdouble 等的有符号和无符号类型,有符号一般包含正负数,而无符号一般指的是正数。

下面列出了在32位操作系统下 常见编译器下的数据类型大小及表示的数据范围:

在这里插入图片描述

关键字

为了实现相应的功能,c语言中提供了一些关键字,在定义变量的时候注意不要和这些关键字重名,以下是c语言中的32个关键字。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWdnzkmQ-1624429938542)(C:\Users\y\AppData\Roaming\Typora\typora-user-images\image-20210617194016077.png)]

C语言中的基本输入和输出

字符输出函数putchar

putchar函数是字符输出函数,其功能是在终端(显示器)输出单个字符。

int putchar(int ch);

ch表示要输出的字符内容,返回值作用为:如果输出成功返回一个字符的ASC码,失败则返回EOF即-1。

putchar(‘A’); /*输出大写字母A */putchar(x);  /*输出字符变量x的值*/putchar(‘\n’); /*换行*/
字符输入函数 getchar

getchar函数的功能是接收用户从键盘上输入的一个字符。

char c;  /*定义字符变量c*/c=getchar(); /*将读取的字符赋值给字符变量c*/
格式化输出函数printf

printf函数叫做格式输出函数,其功能是按照用户指定的格式输出内容。printf函数的格式为:

printf(“格式控制字符串”,输出表项); 

格式控制字符串有两种:格式字符串和非格式字符串。非格式字符串在输出的时候原样打印;格式字符串是以%打头的字符串,在”%”后面跟不同格式字符,用来说明输出数据的类型、形式、长度、小数位数等。

格式字符串的形式为: % [输出最小宽度] [.精度] [长度] 类型

以下是格式字符串的类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oJ7491oJ-1624429938543)(C:\Users\y\AppData\Roaming\Typora\typora-user-images\image-20210618093532155.png)]

printf中的修饰符*,它的作用是由程序来控制宽度。

/*使用可变宽度输出字段*/#include<stdio.h>int main(void){    unsigned width,precision;    int number = 256;    double weight = 25.5;    printf("Please input number's width:\n");    scanf("%d",&width);    printf("The number is: %*d\n",width,number);    printf("Then please input width and precision:\n");    scanf("%d %d",&width,&precision);    printf("Weight = %*.*f\n",width,precision,weight);    return 0;}
格式化输入函数scanf

scanf函数称为格式输入函数,即将输入的内容格式化。scanf函数的调用的一般形式为:

scanf(“格式控制字符串”,输入项地址列表); 

输入项地址列表由地址运算符&后跟变量名组成。

scanf 函数中格式字符串的构成与printf函数基本相同,但使用时有几点不同.

(1) 格式说明符中,可以指定数据的宽度,但不能指定数据的精度。例:

float a;scanf(%10f”,&a);  //正确scanf(“%10.2f”,&a); //错误

(2) 输入long类型数据时必须使用%ld,输入double数据必须使用%lf%le

scanf()函数所用的转换说明符与printf()所用的几乎完全相同。主要区别在于printf()%f、%e、%E、%g、%G同时用于float类型和double类型,而scanf()只是把他们用于float类型,而用于double类型时要求使用l(字母l)修饰符。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-98aGwWkG-1624429938545)(C:\Users\y\AppData\Roaming\Typora\typora-user-images\image-20210618094724252.png)]

修饰符*在scanf中()的用法是使函数跳过相应的输入项目。

/*用*跳过scanf接收的数字*/#include<stdio.h>int main(void){        int num;        printf("Please enter three number:\n");        scanf("%*d %*d %d",&num);        printf("The last number is %d\n",num);        return 0;}

scanf()的返回值,scanf() 函数返回成功读入的字符的个数,如果没有读取字符,则返回0

运算符和表达式

基本运算符

赋值运算符

数学匀速符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uL6ngc4F-1624429938546)(C:\Users\y\AppData\Roaming\Typora\typora-user-images\image-20210618095435041.png)]

#
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值