1.C语言(普通专升本)3.25 3.26

用于学习笔记,侵权删

第一章 C语言基础

1.编译

计算机语言:机器语言、汇编语言、高级语言。

机器语言:01序列表示的语言。

01序列每一位都是一个比特bit。

8比特bit为一个字节B。

c语言是高级语言,让计算机读取就需要编译。编译:将c语言转化为机器语言的过程。

【源程序.c】-->[编译]--》【目标文件.obj】-->[链接]-->【可执行文件.exe】

2.数制及表示

十进制  0-9

二进制 0 1   【0b】0b110110

八进制 0-7   【0】05124

十六进制  0-9 A-F  【0x】0x5D12

3.main函数

c程序的基本单位是函数。

所有的符号由英文输入法输入。int main 之间有空格。return 0 ;后面有分号表示语句结束。

main函数就是主函数。

每个c程序有且仅有一个main函数。

c程序从main函数开始执行。

return语句的作用:c程序在【main函数的】return 0;结束执行。

4.编译预处理

c语言编译预处理命令包括 文件包含(#include)、宏定义(#define)、条件编译。

文件包含是可以嵌套的。

宏定义 :#define  名称  内容(使用规则:把所有的名称替换成对应内容)

第二章  基础数据类型

1.标识符 

变量、函数、数组等的名字。

只能以字母、下划线开头;

只能使用大小字母、下划线、数字的任意组合;

大小写字母表示不同的名字;

规定的32个关键字不能作为标识符使用。

2.数据类型

字符型  char  1字节

整型  int 2字符  long(int) 4字符

实型(浮点数) float  4字符  double  8字符

sizeof():求括号里的内容占多少个字节

3.常量  

整型常量:整数1 -5;

实型常量:小数1.5 -3.12 ; 

字符型常量 :字符常量'a' '2' '!'  \n  \t \\ \' \ddd(1-3位八进制数) \xxh(1-2为16进制数)、字符串常量"a" "hello world" 每个字符串结尾都隐藏‘\0’表示字符串的结束,占一个字节

4.变量

定义:数据类型 变量名;

赋值:变量名 = 常量;

初始化:类型 变量名 = 常量;

所有变量在使用前都必须定义;

连续赋值必须保证 =等号左边 是变量。

第三章  运算符

1.运算符

括号运算符()、

算术运算符+-*/%++--、

关系运算符> >= < <= == !=、

逻辑运算符!非 &&与 ||或、

复合运算符+= -= *= /= %= 。

注意: == 表示 等于  = 表示 赋值

% 求余运算符  18/4=4......2  ==> 18%4 =2

优先级:算术>关系>逻辑

2.++,--运算符

int i;

i--;    --i;    ===>  i = i-1;

i++; ++i;    ===>  i = i+1;


j = ++i;   -->    先加1;再赋值

++i;     j = i;

j = i++;    -->   先赋值;再加1

j = i;    i++;

3.逗号运算符

从左往右开始计算,最右边的值是最终结果。

第四章 程序的输入和输出

1.printf()语句

将固定的内容输出到屏幕上。

%md:输出m位整数,整数不够,左边补空格。m的位数小于输出位,原数输出。

%.nf:小数点后保留n位小数,四舍五入;小数位不够补0。

ASCII码:空格32  ‘0‘48  ’A‘65   'a'  97

2.scanf()语句

int a;   scanf(“%d”,&a);

& + 变量名:获取变量的地址。

int a;char b;float c;

scanf("%d%c%f",&a,&b,&c);【15z3.14回车赋值】

scanf("a=%d,b=%c,c=%f",&a,&b,&c);【a=15,b=z,c=3.14回车赋值】

第五章  if...else语句,switch语句

c语言的结构:顺序结构、选择结构、循环结构

1.if...else语句

if...else允许嵌套。当if或else后面有多个语句时,用{ }把这多个语句括起来。

else 总是与其之前最近且不带else的if配对

if()...else if()...else if()...else...

getchar()从键盘获取一个字符

补全代码:

认识数学函数:#include <main.h>

例题:编写程序输出分段函数。

答案:

2.三目运算  ?:运算

A?B:C

判断A:A 为真,输出B;A为假,输出C。

例题:判断输出结果

3.switch-case语句

如果没有break语句……switch-case语句找到第一个匹配的case语句开始运行,直到break语句或整个switch-case语句结束。


第六章  循环结构(一)

1.while语句

使用规则: while(条件为真){执行操作}

作用:重复执行操作直到不满足该条件为止,执行的操作叫循环体。

例题一:编程计算并输出n!的值,其中n从键盘上输入。

提示:n! =1*2*3*...*n

分析:

答案:

例题二:编程计算1*2*3+3*4*5+5*6*7+..+99*100*101的值。

提示:可以用步长为2的循环语句实现。

答案:

例题三:输入一个正整数m,计算1-3+5-7+9-11+…的前m项之和。

答案:

sign 控制正负±

sign 初始值是1,即,是正的

后来在循环体内,赋值sign = -sign;把它赋值为负值,便于后一项控制为负数。

结果:

小总结:题目是加减运算,把结果result赋初始值为0;题目是乘法运算,把结果result赋初始值为1。

例题四:(水仙花数:水仙花数的每一位数字 的立方 之和仍然等于这个数)

答案:

2.do...while语句

do{执行操作} while(条件为真);

do-while语句的循环体至少执行一次。

第七章 循环结构(二)

1.for语句

for(初始值;条件;变量更新){执行操作;}

例题二:编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。

提示:可以用步长为2的循环语句实现。

例题三:输出100~999之间的水仙花数

提示:水仙花数的每一位数字的立方之和等于这个数

例题四:输出1~100,每行输出8个数。


2.continue和break语句

break的作用:(1)结束switch语句;(2)结束循环,直接进入后面的语句。

用法:break;

continue的作用:结束本次循环,进入下一次循环判断。

用法: continue;

例题一:******************难

编写程序,输出100以内的全部素数(只能被1和它本身整除的整数)。

分析:

mark作用:

1)如果mark==1,就是素数;如果不是素数,就能被J=2整除,并把mark赋值为0,然后跳出循环;

2)后面判断的时候,就找出mark==1的数就是素数



第八章  数组和字符串

1.一维数组

定义:数据类型  数组名[元素个数];

int a[5];      数组元素:a[0] a[1] a[2] a[3] a[4]  数组元素下标从0开始。

赋值:没赋值的自动赋值为0;

例题一:从键盘中输入数字,存放在一维整型数组a[5]中,计算并输出所有元素的平均值。

分析:

答案:

运行结果:

例题二:定义数组a[6]=[10,7,15,20,3,1},求出该数组的最大值,并输出其下标

答案:

例题三:编写程序实现,用数组来产生Fibonacci数列前15项。

提示:Fibonacci数列为1,1,2,3,5,8,13,...

f(i)=f(1-1)+f(i-2),f(1)=1,f(2)=1(第一项和第二项为1,后面每一项都是前面两项之和)

答案:要先对数列赋值,规律如上a[i]=a[i-1]+a[i-2]。因为是数组,所以要用到循环赋值。然后再输出。

例题四:用冒泡排序法对给定的5个整数按递增的顺序排序。

冒泡排序法(升序):再第一趟排序中,比较所有的数,从第一个数开始两两比较;交换位置。直至最大的数放到了队尾。

N个元素,N-1趟排序。

答案:

2.二维数组

数据类型  数组名[元素个数1][元素个数2]; ===》  int  a[2][3];

未被赋值的元素会自动设置为0

例题一:

若定义X[3]={1,2,3,4,5,6,7;则数组中行的大小是()。

A 4    B 3   C 2   D 无法确定。 

B

例题二:读程序题目

例题

答案:输出  i=3,s=15

3.字符串数组

定义:char 字符数组名[元素个数];       char  s[20];

char str1[20]="abc123";   等价于  char str1[20] = {'a','b','c','1','2','3','\0'};

char str1[]="abc123";   等价于   char str1[] = {'a','b','c','1','2','3','\0'};

热身题

注意:计算时,以"\0'为字符串结束标志。

strcmp(str1,str2)    比较str1和str2的大小。

strcpy(str1,str2)    把str2复制(copy)到str1中。

strcat(str1,str2)    把str2连接到str1后面。

strlen(str)            计算str中的非\0'字符个数。

( 使用时加上#include <string.h> )

⭐例题一  

C

A  由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

B.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

C在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3  √

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

注意: char s[3]={a;b;c'};的初始化方式会使strlen()失效。因为固定了字符数组的长度,系统无法在后面加上结束字符'\0'。


例题二 编写程序,输入一串字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。

分析:所需的知识点

gets(字符数组名);从键盘上输入字符串。scanf(“%s",字符数组名);

puts(字符数组名);把字符串输出到屏幕上。printf("%s",字符数组名);

使用时要加上#include<string.h>

答案:

第九章  函数

1.函数的定义和声明

定义:返回类型   函数名(数据类型  形式参数,.…){  }


函数可以定义在main函数的前面,也可以定义在main函数的后面;

只有被main函数调用时,函数才会执行;

形式参数和实际参数必须是同个数据类型。

在C程序中,若对函数类型未加说明,则函数的隐含类型为()。 int

形式参数和实际参数之间是单向值传递;

在函数内对形参的任何修改都不会影响main函数内的实参;

函数返回类型为void(空)时,函数没有return语句;

函数内定义的变量只在本函数中有效。

函数中的形式参数是局部变量。

static的作用:在函数执行完后保持变量a的值;下一次执行函数时,a的值为上次保存的值。

例题一:输出100以内的全部素数

提示:(只能被1和它本身整除的整数)。

分析:

答案:

?问题:怎么判断是否是素数,第一步为什么要使用循环?

素数:只能被1和它本身整除的整数

(1)分别将【这个数】取余%【小于这个数的数(多个)】,如果区域结果是0,证明可以整除,则不是素数;如果是1,证明不能整除,不是素数。

例如:  i = 2;【4】要分别取余%【 2  、3 】 这两个数。

4%2  4%3

(2)能被其他小于它的数整除时,就不是素数,所以需要使用循环

函数的定义不允许嵌套;函数的调用可以嵌套;main函数不能被其他函数调用

一个函数的返回值由【被调用函数定义的返回类型】确定。


2.函数的递归

函数调用自己本身。

用递归函数求Fibonacci数列。

斐波那契数列 :  f(1) = f(2) = 1

分析

第十章  指针(在函数中属于地址传递)

1.指针的定义

指针 = &变量

*变量 = 指针指向变量的值

先定义指针,再把指针与变量想关联(图左边);或者直接定义指针的同时把指针与变量相关联(图右边)。如下图:

指针赋值给指针(地址)  p1=p2;  (改变了指针的指向)

变量的地址赋值给指针  p1=&a;   

int a[5];    p1 = a;   p1 = &a[0];

指针与变量相关联。

若有定义:int x=1,*p=&x;则语句 printf("%d\n".*p);的输出结果是()。

A.1   B.p 的地址   C.x 的地址  D.0

答案:A


2.指针做函数参数

⭐函数自变量是指针类型时,函数调用时,写 (&变量名,&变量名)【下图第三点】

交换变量值

3.指针与数组

数组与指针(指针指向数组的写法)

1.指针=数组名;

2指针进行加减运算时,p+1指向p之后的一个变量。

3.t[i]  等价于  p[i]  等价于  *(t+i)   等价于  *(p+i)

4.&t[i]   等价于  t+i   等价于  p+i

例题一:若定义char t[10],*p=t;则在下面表达式中表示t[1]的地址的是()。

A p+1   B.*(p+1)   C.*p+1   D.&p+1

A

例题二:若已定义: int a[]={0,1,2,3,4,5,6,7,8,9], *p=a,i;其中0<i≤9,则对a数组元素不正确的引用是()。

分析:

A选项 因为p=a,  所以p-a =0;  a[p-a] = a[0]

B选项 *和&是一对逆运算。所以是 a[i]

D 数组下标超出范围

*和&是一对逆运算。

例题三:编写函数int ff(str,ch),其功能是统计并返回字符ch在字符串str中出现的次数。

提示:例如:调用ff("every"e')后返回2,因为在字符串"every"中字符'e'出现了2次。

已知:主函数内容

分析:字符串str,字符ch,出现次数count;用循环比较每个字符str[i]与字符ch是否相等,如果相等,count++

答案:第一点:作函数的自变量时,指针和数组是等价的。

注意:字符串结尾是'\0'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容