C:复试
C语言程序设计基础知识
C语言特点
1、是一种兼有高级语言和汇编语言优点的语言
2、是一种结构化程序设计语言
3、数据类型丰富
4、具有丰富的运算符
5、具有预处理功能
合理算法的特点
1、有输入
2、有输出
3、有穷性
4、确定性
5、高效性
C语言程序的特点
1、对大小写是有区分的
2、不存在行概念
3、充分利用注解
4、把程序中的语句根据其功能和嵌套关系进行缩进编排,使程序的模块和复合关系都变得明显
5、一对花括号标志一个程序功能模块的开始与结束
6、在程序适当使用空格和空行会是程序变得更加清晰
程序结构
C语言程序为函数模块结构,每一个C语言程序都是由一个或多个函数组成,其中至少一个main函数,程序从main函数开始执行,在执行过程中可以调出有编译系统提供的各种彼岸准库函数和自定义函数
基本形式:
类型定义符 函数名(形式参数)
{
数据说明部分;
语句部分;
}
基本语法单位
1、字符集
2、标识符 :只能由数字、下划线和数字组成,且第一个字符必须是字母或下划线
3、关键字
存储类型关键字:auto、extern、register、static
4、运算符和分隔符
5、常量和变量
基本数据类型及运算
数据类型
基本数据类型
整型、字符型、单精度浮点型、双精度浮点型
常量
1、整型常量:十进制整常量、八进制整常量、十六进制整常量、无符号型后缀(U)、长型后缀(L)
2、浮点型常量:十进制数形式、指数形式
3、字符型常量:【单括号括起】 简单转义字符、八进制转义字符、十六进制转义字符
4、字符串常量:【双括号括起、后自动加上 '\0'】
5、符号常量:宏定义【#define】 、const类型定义符
变量
参考:链接
运算符与表达式
1、算术运算符和算术表达式
结合方向:自左向右
2、赋值运算符和赋值表达式
结合方向:自右向右左
3、关系运算符和关系表达式
结合方向:自左向右
4、逻辑运算符和逻辑表达式
结合方向:自左向右
5、位运算符和位表达式
结合方向:自左向右
6、条件运算符和条件表达式
三目运算符:
7、逗号运算符和逗号表达式
逗号用途:运算符【优先级最低】、分隔符
运算的优先级与结合性
数据的输入输出
参考:链接
控制语句
程序的三种基本结构
顺序
分支
循环
循环嵌套
循环嵌套时内层循环必须完全包含在外层循环内,不允许循环结构交叉
数组和结构
一维数组
1、常量表达式中不允许包含变量
int n = ;
int score[n];
2、数组先定义【即分配存储空间】后使用
二维数组
1、可以省略第一维的长度,不能省略第二维的长度
字符数组
1、单个字符赋初值
2、字符串赋初值:自动在后加上一个终止符,即数组长度加一
3、输入和输出
(1)逐个字符输出和输入
由循环次数控制字符长度,不检测字符串结束标志
(2)字符串整体输入输出
或者:
gets(字符数组名)
puts(字符数组名)
字符串处理函数
参考:链接
结构
结构数组
指针
参考:链接
函数
模块化程序设计方法
在求解一个问题时,采样逐步求解、分而治之的方法,就是把一个大问题分解成若干比较好求的小问题,然后分别求解。
在处理一个复杂的应用程序也是如此,把整个程序划分为若干功能较为单一的程序模块。然后分别寄予实现,最后爱吧所有的程序模块像搭积木似的一起装配起来。
函数参数
1、传值调用
把实参的值传递给形参,而被调用函数中形参的改变对调用函数的实参没有影响,这相当于把实参赋值一份给形参,然后调用内存回收。
int sum(int x,int y){
return x+y;
}
int mian(){
int result=sum(,);//通过直接对sum传递参数
printf("%d",result);
return ;
}
2、传址调用
地址传递与按值传递的不同在于,它把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此,被调函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。
#include<stdio.h> int sum(int *x,int *y){ return *x+*y;//表示获取x中的内容+y中内容 } int main(){ int a,b; a=;b=; int result=sum(&a,&b);//通过地址对sum传递参数 printf("%d\n",result); return ; }
3.引用传递
以引用为参数,则既可以使得对形参的任何操作都能改变相应的数据,又使得函数调用显得方便,自然。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。引用相当于实参的别名,他和实参是同一个变量或数值,它的改变就是实参的改变。
int sum(int &x,int &y){ //定义引用类型 return x+y; } int main(){ int a,b; a=;b=; int result=sum(a,b);//通过引用对sum传递参数 printf("%d\n",result); return ; }
例题:
在调用函数时,如果形参和实参分别是下列情况,则相应的调用方式是什么?(5分) 【见2012年笔试题2.3】
(1) 实参和形参都是数组元素 //传值调用(值传递)
(2) 形参是指针 //传地址调用(地址传递)
(3) 实参和实参都是数组 //传地址调用(地址传递)
函数与数组
数组元素作函数实参,数组名作为函数参数
函数与指针
1、返回指针的函数
举例:
#include <stdio.h>
#include <stdlib.h>
int count;
int main()
{
char s[],ch,*p,*match(); gets(s);
ch = getchar();
p = match(ch,s);
if(p)
printf("%s %d\n",p,(count + ));
else
printf("no match found\n");
return ;
} char *match(c,s)
char c, *s;
{
count = ;
while(c != s[count] && s[count] != '\0')
{
count++;
}
if(s[count])
return (&s[count]);
return ();
}
2、指向函数的指针
例子:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> int main()
{
int strcmp(),numcmp();
char s1[],s2[]; printf("请输入两个字符串:\n");
gets(s1);
gets(s2);
if(isalpha(*s1)) // isalpha(*s1)用于检测数组s1中是否是字符串,
check(s1,s2,strcmp); // strcmp()字符串比较库函数
else // 若是数字字符串
check(s1,s2,numcmp); // numcmp() 使用库函数atoi(),把以字符串的方式输入的数字转换为整型数
} check(a,b,cmp)
char *a,*b;
int (*cmp)();
{
printf("检测结果为:\n");
if(!(*cmp)(a,b)) //返回不为0时
printf("相同!\n");
else
printf("不相同!\n");
} numcmp(a,b)
char *a,*b;
{
if(atoi(a) == atoi(b))
return ;
else
return ;
}
递归函数
参考:链接
预处理功能
宏定义
1、简单地字符替换
2、带参数的宏定义和宏调用
文件包含
条件编译
令源程序中其中一部分内容安装在满足一定条件时才进行编译,这就是条件编译
#if条件编译
#ifdef条件编译
#ifndef 条件编译
变量的存储类型
内部变量
又叫“局部变量”
外部变量
又叫“全局变量”
总结:
静态变量
举例:
寄存器变量
变量的初始化
动态内存分配函数
动态内存分配的优点:
1、在程序执行过程中,同一内存空间能用于几个不同的目的,即在程序晕死那个的不同阶段,同一内存能为程序的不同部分服务,这个内存区域就是堆区
2、允许建立链表
1、malloc()
使用原理:在调用该函数时,它将在内存中分配size个字节的存储空间,返回指向分配的存储区起始地址的指针;若不能获得需要的存储空间,则返回null。
由于malloc()的返回值是无类型void的指针,即返回的地址值可以指向任何合法的数据类型,因此将返回值赋予一定数据类的指针变量时,应该对返回值实行强制类型转换
2、free()
输入、输出及文件管理
流和文件
流
1、文本流
一行行的字符,换行符表示结束
2、二进制流
由一系列字节组成的
文件
通常指存放在外部存储器上的一批数据的集合,如:磁盘文件,磁带文件等,外部设备也被成为文件,因此,文件表示从磁盘、光盘文件到所有的外部设备
C语言的文件系统:
1、缓冲型文件
提供的函数叫做“流式I/O函数”,采用缓冲存储区域
2、非缓冲型文件
提供的函数叫做“低级I/O函数”,直接调用系统的输入输出功能
字符输入输出:getchar、putchar
字符串输入输出:gets、puts
参考:链接
文件管理
参考:链接
C程序应用
排序算法
参考:链接
递归算法
参考:链接
文件相关算法
线性链表算法
图的基本算法
树的基本算法
C:复试的更多相关文章
- 硕士研究生入学考试复试试卷答案.tex
%该模板用于数学答题 \documentclass[UTF8]{ctexart}%[中文编码 UTF8] \usepackage{fancyhdr}%{页眉页脚页码} \pagestyle{fancy ...
- Twin Prime Conjecture(浙大计算机研究生保研复试上机考试-2011年)
Twin Prime Conjecture Time Limit: 2000/1000 MS (Java/Othe ...
- 九度OJ1486 /POJ 1029/2012北京大学研究生复试上机
wa到死!wa到死!这是一个看着简单,坑及其多的题! 坑一:POJ上是单组输入,九度上是多组输入,妈蛋要是研究生复试遇到这种大坑肯定死掉啊!而且对于codeforces比较习惯的 同学肯定会觉得巨坑无 ...
- 应用留数定理计算实积分 $\dps{I(x)=\int_{-1}^1\frac{\rd t}{\sqrt{1-t^2}(t-x)}\ (|x|>1,x\in\bbR)}$ [华中师范大学2010年复变函数复试试题]
应用留数定理计算实积分 $\dps{I(x)=\int_{-1}^1\frac{\rd t}{\sqrt{1-t^2}(t-x)}\ (|x|>1,x\in\bbR)}$ [华中师范大学2010 ...
- HDU 1234 (浙大计算机研究生复试上机考试-2005年) 开门人和关门人 (水)
开门人和关门人 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- GCT英语口语复试中的常见问题总汇
英语口语复试中常见的问题: 1. Where do you come from? 2. What kind of landscape surrounds your hometown? 3. What ...
- ZOJ问题(2010浙江大学研究生复试上机题目[找规律] hdoj 3788)
ZOJ问题 pid=3788">点击打开链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 大厂面试题:今天复试百度PHP工程师
今天下午来到北京百度科技园进行复试PHP工程师岗位. 面试官问了很多问题,我大概整理回忆下: 1.Redis秒杀实现? redis队列解决抢购高并发的原理: 在程序跟数据库之前呢我们可以利用redis ...
- HDU 1874 畅通工程续 2008浙大研究生复试热身赛(2)
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 计算机考研复试 A+B
题目描述 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B ...
随机推荐
- alfred workflow 开发
alfred python demo
- 机器学习5- 对数几率回归+Python实现
目录 1. 对数几率回归 1.1 求解 ω 和 b 2. 对数几率回归进行垃圾邮件分类 2.1 垃圾邮件分类 2.2 模型评估 混淆举证 精度 交叉验证精度 准确率召回率 F1 度量 ROC AUC ...
- Java 自定义注解及注解读取解析--模拟框架生成SQL语句
假设们使用一张简单的表,结构如下: 定义注解: 表注解: package com.xzlf.annotation; import java.lang.annotation.ElementType; i ...
- 关于“xxx”object is not callable的异常
参考博文:https://blog.csdn.net/yitiaodashu/article/details/79016671 所谓callable对象是指一个后边可以加()的对象,比如函数, 所以这 ...
- Python自学从入门到就业之函数基础(小白必看)
函数介绍 <1>什么是函数 请看如下代码: print(" _ooOoo_ ") print(" o8888888o ") print(" ...
- 9、flink的状态与容错
1.理解State(状态) 1.1.State 对象的状态 Flink中的状态:一般指一个具体的task/operator某时刻在内存中的状态(例如某属性的值) 注意:State和Checkpoint ...
- Linux系统管理第二次作业 目录和文件管理 rpm安装 创建yum仓库
chapter02 - 03 作业 1.分别用cat \tac\nl三个命令查看文件/etc/ssh/sshd_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? [ ...
- 疫情之下微软收入猛增15%!远程办公产品Teams日活达7500万
当地时间 2020 年 4 月 29 日,微软公布了截止 2020 年 3 月 31 日的 2020 财年第三季度财报. 这是微软首次在财报中显示新冠疫情的影响——疫情之下,远程办公.远程教育和游戏场 ...
- 【Linux常见命令】tee命令
tee - read from standard input and write to standard output and files tee命令用于读取标准输入的数据,并将其内容输出成文件. t ...
- mycat入门部署安装
mycat是一种比较简单的中间件产品,可以帮助mysql进行分库,同时统一在一个逻辑库. 硬件环境:系统:centos 7.6数据库版本:5.7.19mycat:1.6..6.1 github上下载m ...