计算机二级c语言考试复习大纲(一战到底)

1.C语言关键字

1.数据类型关键字(12个)

char(字符型)  short(短整型)    int(整型)   long(长整型)

 float(单精度浮点型)    double(双精度浮点型 )

unsigned(无符号) signed(有符号) 

struct(定义结构体)  union(定义联合体)  enum(枚举)  void(空类型)

2.控制语句关键字(12个)

if,else, switch, case, default,

for, do, while, break, continue, goto(无条件跳转语句), return

3.存储类关键字(5个)

auto(局部变量),extern(声明),register(寄存器变量),static(静态变量),const(常量定义)

4.其他关键字(3个)

sizeof,typedef(数据别名),volatile

2.数据类型

 2.1整型: int

1.整型变量的定义和输出
  • %d:输出一个有符号的10进制int类型
  • %o:输出8进制的int类型
  • %x : 输出16进制的int类型,字母以小写输出
  • %X : 输出16进制的int类型,字母以大写输出
  • %u: 输出一个10进制的无符号数

案例1:输出输出整型变量

#include<stdio.h>
int main()
{//定义变量int a = 0;unsigned int b = 10;//调用输入函数,键盘获取值赋值给ascanf("%d",&a);//打印printf("无符号数据:%u\n",b);printf("十进制输出:%d\n",a);printf("八进制输出:%o\n",a);printf("十六进制输出:%x\n",a);printf("十六进制输出:%X\n",a);return 0;
}

 2.2其他整型类型

1.一个字节八个比特位。

  • short(短整型):2字节
  • int(整型): 4个字节
  • long(长整型):Windows为4个字节
  • long long(长长整型):8个字节

2.不同操作系统所占的字节数不同,但都满足short<= int <= long。

3.注意:当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化。但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。

案例2:

#include <stdio.h>
int main()
{//短整型short a = 10;//长整型long b = 20;//长长整型long long c = 30;//输出格式printf("%hd\n",a);//10printf("%ld\n",b);//20printf("%lld\n",c);//30
}

 2.3字符型:char

占位一个字节。

ASCII码表:0:48 , A:65 ,a: 97

案例3:字母大小写切换

#include <stdio.h>int main ()
{char ch;//输入一个小写字母scanf("%c",&ch);//a//在ASCII表中,A和a相差32printf("%c",ch-32);//Areturn 0;
}

2.4实型(浮点型):float,double

实型变量也可以称为浮点型变量,浮点型变量是用来存储小数数值的。在C语言中,浮点型变量分为两种:单精度浮点数(float)、双精度浮点数(double),

但是double型变量所表示的浮点数比float型变量更精确。

  • float:占4个字节,31位有效数字
  • double:占8个字节,63~64位有效数字

案例4:

#include <stdio.h>int main(){//单精度浮点型float pi = 3.14159;//浮点型默认保留六位小数printf("%f\n",pi);//3.141590//设置保留两位小数,会四舍五入printf("%.2f\n",pi);//3.14return 0;
}

 案例5:浮点型的输入输出

#include <stdio.h>int main(){float  pi;double a = 123.456;scanf("%f",&pi);//1.2222245//保留三位小数printf("%.3f\n",pi);//1.222printf("%lf\n",a);//123.456000return 0;
}

案例6:计算圆的面积和周长

#include <stdio.h>int main(){float pi = 3.14159;//定义半径,周长,面积float r;float s;float l;scanf("%f",&r);//2s = pi * r * r;l = 2*pi*r;printf("面积为:%.2f\n",s);//面积为:12.57printf("周长为:%.2f\n",l);//周长为:12.57return 0;
}

2.5常量

1.const修饰的变量为常量

    const float pi = 3.14;

2.使用#define定义:

#define PI 3.1415

3.定义变量是可以使用auto修饰,尽管是可以省略的

2.6 C运算符的种类,运算优先级和结合性

1.常见运算符 的分类

  • 算术运算符:用于处理四则运算
  • 赋值运算符:用于将表达式的值赋给变量
  • 比较运算符: 用于表达式的比较,并返回一个真值或假值
  • 逻辑运算符: 用于根据表达式的值返回真值或假值

与(&&), 或(||),  非(!)

  • 位运算符: 用于处理数据的位运算
  • sizeof运算符: 用于求字节数长度

2.运算符优先级

优先级运算符
1[]   ()  .(成员选择) -> 
2-(负号)  ~  ++  --  *(指针变量)  &  !  (类型)  sizeof  
3

/  * %  

4+  - (减法) 
5<<  >> 
6>  >=  <  <= 
7==   !=
8&(按位与)
9^(按位异或)
10|  (按位或)
11&& (逻辑与)
12|| (逻辑或)
13?(条件运算符)
14=  /=  *=  %=  +=  -=  <<=  >>=  &=  ^=  |=  
15,(逗号运算符)

 2.7不同数据类型之间的转换

案例1:隐式转换

#include <stdio.h>int main(){int a = 1;float b = 1.233;double c;//隐式转换c = a* b;printf("%lf",c);//1.233000return 0;
}

案例2:强制转换

#include <stdio.h>int main(){int a;double b = 1.222;a = (int)b;//强制转换 不会四舍五入printf("%d\n",a);//1return 0;
}

3.输入输出函数的调用

1.print函数:

打印格式对应数据类型·含义
%dint接受整数值并将它表示为有符号的十进制整数。
%hdshort int短整数
%huunsigned short 无符号短整数
%ounsigned int无符号8进制整数。例如:0123
%uunsigned int无符号10进制整数。
%x,%Xunsigned int无符号16进制整数,x是小写,X对应的是大写
%ffloat单精度浮点数
%lfdouble双精度浮点数
%cchar字符型:可以把输入的数字按照ASCII码相应转换为对应的字符
%%%输出一个百分号

2.scanf函数

&符号表示取地址。

scanf("%d",&a);

4.选择结构程序设计

1.if语句的演示:

#include <stdio.h>int main(){int score;scanf("%d",&score);if(score > 700){printf("我要上清华\n");} else if(score > 680){printf("我要上北大\n");}else{printf("我要上蓝翔\n");}return 0;
}

 2.switch语句:

#include <stdio.h>int main(){int a;scanf("%d",&a);//当switch遇到break表示结束switch (a) {case 1:printf("您输入的值是: 1\n");break;case 2:printf("您输入的值是: 2\n");break;default:printf("输入未知\n");break;}return 0;
}

3.三目运算符

#include <stdio.h>int main(){int a,b;scanf("%d%d",&a,&b);//三目运算符,表达式为真输出a,反之输出bprintf("最大值为: %d",a > b ? a : b);return 0;
}

5.循环结构程序设计 

1.for循环:

案例1:计算数字之和

#include <stdio.h>int main ()
{int sum = 0;for(int i = 0; i<= 100;i++){sum += i;}printf("100以内的数字和为: %d",sum);return  0;
}

案例2:找出所有与7有关的数字

#include <stdio.h>int main() {for (int i = 1; i < 100; i++) {if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {printf("敲桌子\n");} else {printf("%d\n", i);}}return 0;
}
 2.while循环

案例1:100到999之间的水仙花数

#include <stdio.h>int main(){int i =100;int a ,b,c;while (i<1000){//百位a = i/100;//十位b = i /10%10;//个位c = i%10;if (a*a*a + b*b*b + c*c*c == i){printf("水仙花数: %d\n",i);}i++;}return 0;
}
3. do while循环

案例1:调用函数库并实现水仙花数

#include <stdio.h>
#include <math.h>
int main(){int i =100;int a,b,c;do {a = i/100;b = i /10 %10;c = i %10;//调用math的函数库if (pow(a,3) + b*b*b + c*c*c == i){printf("水仙花数为: %d",i);//水仙花数为: 153水仙花数为: 370水仙花数为: 371水仙花数为: 407}i++;} while (i<1000);return 0;
}
4. break和continue语句
  • break语句在循环当中,作用是跳出当前内循环语句,执行后面的代码。
  • continue语句:立即终止本次循环,并执行下一次循环。

案例1:九九乘法表

#include <stdio.h>int main() {for (int i = 1; i < 10; i++) {for (int j = 1; j <i+1; j++) {printf("%d * %d = %d ", j, i, i * j);}printf("\n");}return 0;
}

 6.数组的定义和引用

1.数组的定义

格式:数据类型 数组名[元素个数];

例如:

指定长度,默认填充为0。

    int arr1[10];

指定长度和赋值。 

    //定义数组时赋值int arr2[10] = {1,2,3,4,5,6,7,8,9,10};

可以不定义数组长度,直接赋值 。

    int arr3[] = {1,2,3,4,5,6,7,8,9,10};

案例1:

#include <stdio.h>int main(){int arr1[10];//定义数组时赋值int arr2[10] = {1,2,3,4,5,6,7,8,9,10};for (int i = 0; i < 10; i++) {printf("%d\n",arr2[i]);}return 0;
}
2.数组常见问题
  • c语言不支持动态数组,数组必须在编译时定义长度。
  • 长度支持常量定义。

案例1:冒泡排序

#include <stdio.h>int main(){int arr[10] = {22,33,55,11,565,78,1,43,8,9};int temp;for(int i = 0; i < 9; i++) {for (int j = i+1; j < 10; j++) {if (arr[i]>arr[j]){temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}for (int i = 0; i < 10; i++){printf("%d ",arr[i]);}
}
3.二维数组的定义和使用

格式:  数据类型 数组名[行][列]

案例1:

#include <stdio.h>int main(){//数据类型 数组名[行][列]int arr[2][3] ={{10,20,30},{40,50,60}};for (int i = 0; i < 2; ++i){for (int j = 0; j < 3; ++j){printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

6.1 字符串和字符数组

1.创建字符串:

在定义字符串时,末尾会添加字符串结束标志\0

所以在创建字符串时,要多设置一个数组长度。

    char arr2[12] = "hello world";//创建字符串

 注意:字符串和字符创建的区别

    char ch = 'a';//创建字符

字符串的打印方式:

%s是一个占位符表示输出一个字符串遇到 \0 表示输出停止。

    //定义字符串char arr2[12] = "hello world";printf("%s",arr2);·

2.创建字符数组:
    char arr1[10] = {'h','e','l','l','o','w','o','r','l','d'};//字符数组

字符串数组的打印方式:

    //定义字符串数组char arr1[10] = {'h','e','l','l','o','w','o','r','l','d',};for(char c : arr1){printf("%c ",c);}
3.字符串 和字符数组区别
  • c语言中没有字符串这种数据类型,可以通过char的数组来替代。
  • 字符串一定是一个char的数组,但char的数组未必是字符串。
  • 数字0(和字符‘\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组。

(即:字符数组可以手动添加一个\0,使之转换为字符串。)

案例1:常见字符串的使用

    //静态字符串打印char arr[] = "hello world \n";printf("%s", arr);//不支持动态字符串打印char str[100] = {0};//scanf函数在接收数据时遇到空格或者换行表示结束scanf("%s",str);//hello worldprintf("%s",str);//helloreturn 0;

案例2:判断两个字符串是否相同

    char arr1[] = "hello world";char arr2[] = "hello world";int i =0;while (arr1[i] == arr2[i]){//判断是否到字符串尾if (arr1[i] == '\0'){printf("两个字符串相同。");return 0;}i++;}printf("两个字符串不同!");return 0;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27793.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——单例模式

单例模式 定义 确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 即保证一个类只有一个实例&#xff0c;并且提供一个全局访问点 优缺点、应用场景 优点 单例对象在内存中只有一个实例&#xff0c;减少了内存的开支。尤其对于一个频繁创建…

UE学习记录02----UMG创建控件模板+事件分发器

官网4.27&#xff1a; 创建控件模板 | 虚幻引擎文档 (unrealengine.com) 使用UMG创建的每个 控件蓝图 都被视为 用户控件&#xff0c;其可在其他控件蓝图中重复使用和放置。 其视觉效果和脚本功能都将延续到该蓝图中。 利用某些蓝图脚本&#xff0c;可创建UI控件的运行方式或…

TCP/IP详解

目录 一、OSI参考模型 1.图示 2.OSI七层模型各自作用 3.七层通信过程 二、IP协议 1.IPv4首部 2.IPv6首部 三、TCP协议 1.tcp首部格式 2.握手挥手图示 3.握手流程 4.为什么要三次握手&#xff1f; 5.四次挥手流程 6.为什么要四次分手&#xff1f; 7.为什么要等待…

使用 Pytest 运行 yaml 文件来驱动 Appium 自动化测试

目录 前言&#xff1a; 获取 yaml 文件 YamlTest 测试类 Appium 初始化 Pytest 测试类 自定义 runtest demo&#xff1a; 自定义错误输出 Yaml 使用方式规则 前言&#xff1a; 使用Pytest来运行yaml文件来驱动Appium自动化测试是一种方便且灵活的方法。通过将测试数据…

uniapp:针对与富文本解析的几种方法

第一章、富文本的解析方法 1.1 uniapp自带组件&#xff1a;rich-text <rich-text :nodes"nodes"></rich-text> 1.2 v-html <view v-html"item.content"></view> 1.3 uview组件&#xff1a;u-parse <u-parse :content&quo…

Linux·从 URL 输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前&#xff0c;背后到底发生了什么&#xff1f;经历怎么样的一个过程&#xff1f;先给大家来张总体流程图&#xff0c;具体步骤请看下文分解&#xff01; 总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接&#xff1a…

Zoho Projects:Jira的理想替代品,让项目管理更高效

在软件开发生命周期中&#xff0c;项目管理一直是一个非常重要的环节。为了更好地协作、追踪项目的进程和管理任务&#xff0c;许多公司选择了Jira这款著名的项目管理工具&#xff0c;它是个非常强大的工具&#xff0c;但同时也有非常明显的缺点。今天&#xff0c;我们将向大家…

ChatGLM-6B+LangChain实战

目标&#xff1a;原始使用ChatGLM-6B可接受的文字长度有限&#xff0c;打算结合LangChain实现长文本生成摘要. 方法&#xff1a; step1&#xff1a;自定义一个GLM继承LangChain中的langchain.llms.base.LLM&#xff0c;load自己的模型. step2&#xff1a;使用LangChain的mapred…

帆软 FineReport/FineBI channel反序列化漏洞分析

事件背景 热点漏洞 漏洞说明 1. 漏洞原理&#xff1a;FineReport/FineBI channel接口能接受序列化数据并对其进行反序列化。配合帆软内置CB链会导致任意代码执行。 2. 组件描述&#xff1a;FineReport是一款企业级报表设计和数据分析工具&#xff0c;它提供了丰富多样的组件…

Vue+axios 使用CancelToken多次发送请求取消前面所有正在pendding的请求

需求&#xff1a; 项目中 折线图数据是循环调用的&#xff0c;此时勾选一个设备&#xff0c; 会出现多条线。 原因 折线图数据一进来接口循环在调用&#xff0c;勾选设备时&#xff0c;循环调用的接口有的处于pedding状态 &#xff0c;有的还在加载中&#xff0c;这就导致勾…

Maven 继承、聚合、属性

文章目录 一、继承1.1. 概念1.2. 语法1.3. 示例1.4. 其他常见使用 二、聚合2.1. 概念2.2. 示例 三、属性3.1. Java 系统属性3.2.系统环境变量属性3.3.Maven 内置属性 一、继承 1.1. 概念 当项目较大&#xff0c;为了便于开发和管理&#xff0c;经常需要将工程划分成多个 Maven…

奇迹MU架设教程:SQL Server 2008数据库的安装教程

不管是搭建什么游戏&#xff0c;都是有数据库的&#xff0c;奇迹MU用的是SQL 数据库&#xff0c;根据服务器系统选择SQL server版本&#xff0c;我比较喜欢用Windows server 2008R2系统&#xff0c;所以我安装的是SQL server 2008。作为架设奇迹很重要的数据库程序&#xff0c;…