当前位置:文档之家› 二级C语言各章的知识点

二级C语言各章的知识点

二级C语言各章的知识点
二级C语言各章的知识点

二级C语言知识点

第二章C程序基础知识

1 简单的C语言程序的构成

(1)一个C程序只有一个main()----称为主函数,main要小写,程序的执行是从主函数开始并在主函数中结束,一个完整的C程序是由一个主函数和若干个子函数构成的。

(2)函数内部称为函数体,由一对大括号{}括起来,在{}里,前面必须是定义各种所需的变量,后面才是各种语句,二者不能颠倒,并且一个语句结束必须有分号;

下面是例子:

#include”stdio.h”/* 或写成#include

嵌入头文件,注意前面要有#号,后面没有;号,所以它不是语句

*/

main()

{int a,b,c; /* 定义三个整型变量*/

a=2; /*以下三句是赋值语句,注意每个语句都有分号;*/

b=3;

c=a+b;

printf(“%d”,c); /* 把变量C的值在电脑屏幕上显示---称为输出语句*/

}

把这个程序领着学生在VC6里演示一下,让学生会运行程序,并且会看输出结果。

2 关于/* ...........*/------称为注释,它不运行

(1)把从/*开始到*/结束的语句行都作为注释(记住—注释是不运行的)-----老师在投影上举一例说明。

(2)不能嵌套注释,如:/*/*........*/*/

3 关于给变量起名的问题,也就是变量名的命名规则

(1)由字母a~z、A~Z、0~9、_(下划线)组成

(2)由字母或下划线开头

(3)大、小写的字母是不同的变量

(4)不能使用C语言的关键字(关键字是小写的)

老师在此可以举例说明

4 在C语言中经常可以用到哪些类型的变量和常量的问题

(1)若有f(x)=2x2 +5 ,其中X是变量,5是常量,那么X的取值范围是什么呢?是有符号整型?

无符号整型?短整型?长整型?单精度浮点型?双精度浮点型等等,这个问题在C语言的程序设计中对变量X的取值范围规定的比较清楚。下面就介绍一下在C语言中对变量X 是如何规定它的取值范围的。呵呵!!!

①int x(signed int x或signed x)------称为普通整型,它规定了X的取值范围是下列类型(注意:这里的变量X 是用4个字节来存放的)

十进制的-----正整数、负整数、0,如:25、-36等

八进制的-----正整数,如:065等,-065(不允许)

十六进制的----正整数,如:0x2c,0Xa6等,-0xa1(不允许)

②short int x(short x)------称为短整型,它规定的X的取值范围和int x基本一样,只不过取的数要比int x要小而已,因为它是用两个字节来存放X的(-32768~+32767)。而上面的是用四个字节来存放X的。

③long int x(long x)-----称为长整型,其规定的X取值范围和int x一样,也是用四个字节来存放X的(输入时要用%ld、%Ld)。

④unsigned int x(unsigned x)------称为无符号整型,它规定了X只能取正整数,也是用四个字节来存放X的。

⑤unsigned short int x------称为无符号短整形,其十进制的取值范围喂0~65535

义字符等

如:’a’、’3’、’\n’等

分析:’a’、’A’、‘2’、 2 、‘ab’、‘\123’

⑦float x------单精度浮点型,小数点后默认保留6位小数

如:0.123、.123、123.等

1.23e+2、1.23e2、1.23E2、.123e-2等(指数形式)

用指数形式表示浮点数要注意三点:ⅰ、e或E前后必须有数ⅱ、e或E后面必须是整数ⅲ、e或E的前后以及数字之间不得插入空格

⑧double x------双精度浮点型(输入时要用%lf或%Lf,输出可用%f、%lf、%Lf)

(2)关于常量(整数、小数、字符型数据)

5------可以认为是int型、short int、unsigned int都可以

5L或5l------是long int型

5h或5H------是short int型

1.23------是double型

‘a’-----97

‘A’-----65

‘2’------50

‘\123’---

(3)关于类型的强制转换问题------即把一个类型强制转换成其他类型

如:#include”stdio.h”

main()

{int x=5; /* 给变量X初始化*/

float y,z;

z=2.56; /*给变量Z赋值*/

y=(float)x; /*对变量X的值进行强制转换,而X的类型和值都不改变*/

printf(“%d,%f\n”,x,y); /*5,5.000000 */

x=(int)z; (或写成x=z)/* 对变量Z的值进行强制转换,且不进行四舍五入*/

printf(“%d”,x); /* 2 */

}

分析:a=(float)b+c;和a=(float)(b+c);有什么区别?

关于强制转换要注意两点:一是待转换的类型一定要用小括号括起来;二是对后面变量的值进行转换,不改变原来变量的类型和值,并且不进行四舍五入。

5 常用的算术运算符

+、-、*、/、%、+=、-=、*=、/=、++、--、,等

下面把需要特殊注意的运算符加以说明:

①/------除号,ⅰ若分子和分母都是整型,其结果也是整型(不进行四舍五入)ⅱ若分子或分母至少有一个是浮点型,其结果就是浮点型。

%------取余,注意%的前后都必须是整型的,且结果的符号与被除数相同.

举例:把两个两位的正整数按要求组成一个新数

a=45,b=32,要求组成一个新数C=4325

#include”stdio.h”

main()

{int a=45,b=32,c;

c=a/10*1000+b/10*100+b%10*10+a%10;

printf(“%d”,c);

}

分析:如何取出1234的每个位上的数?(使用算术符%和/)

②+=、-=、*=、/=------称为复合运算符(注意:两个符号不能分开)

a+=b-c 和a-=b+c可以写成什么呢?(由学生来回答)

a+=a-=a+a (假设a=9),最后a=?(-18)(由老师来讲解)

③++、--称为自增自减运算符(单目的),很重要

如:a++ 先用a,然后再把a加1

++a 先把a加1,然后再用a

a-- 先用a,然后再把a减1

--a 先把a减1,然后再用a

举例:见如下程序

#include”stdio.h”

main()

{int a=3,b=6,c,d,e,f;

c=b+a++;

d=a+(--b);

e=-a++;

f=a+b+c;

printf(“a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n”,a,b,c,d,e,f);

}

答案:a=5,b=5,c=9,d=9,e=-4,f=19

④, 逗号---称为逗号运算符,由逗号运算符构成逗号表达式,逗号表达式最后一项的值就是逗号表达式的值,逗号运算符的优先级最低。

如:a=3,b=4,c=5;

x=(a,b,c); 问:x=?(5),逗号表达式的值=?(5)

x=a,b,c; 问:x=?(3),逗号表达式的值=?(5)

x=(a++,--b,a+b); 问:x=?(7),逗号表达式的值=?(7)

x=a++,--b,a+b; 问:x=?(3),逗号表达式的值=?(7)

x=(a++,--b,a+b+c++); 问:x=?(12),逗号表达式的值=?(12)

6 关于数据溢出问题,看下面例子:

int a=-3;

unsigned short x;

x=a; 问:x=?(65533)

7 分析:int a=b=c=1;对不?

领学生做书后的习题

第三章顺序结构程序设计

1 关于输出函数的使用

使用的格式:

ⅰprintf(“各种字符及汉字等”);/*printf要小写*/

这种使用就是在屏幕上显示双引号中的内容

ⅱprintf(“输出格式控制”,待输出的变量列表);

这种使用就是在屏幕上以何种形式输出变量的值

要重点掌握输出格式控制都有哪些?

① 格式符:

%d 以普通整型输出(不可以写成%D)

%md 以普通整型输出,数据占m位,右对齐

%+md 以普通整型输出,数据占m位,右对齐(正数的前面有+号)

%-md 以普通整型输出,数据占m位,左对齐

%hd 以短整型输出

%ld(或%Ld) 以长整型输出

%u 以无符号整型输出

%o 以八进制形势输出

%x(或%X) 以十六进制形势输出

%f 以单精度小数形势输出,点后6位小数

%lf(或%Lf或%f) 以双精度小数形势输出,

%±m.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入

%.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入

%c 以字符形式输出

%s 以字符串形式输出

说明:以上的常用格式符必须和后面的变量一一对应,并且后面的变量是什么类型前面就必须用相应的格式符

例:int a=-2;

unsigned int b=30;

float c=3.1456;

printf(“%d%u%5.2f”,a,b,c); 问:输出结果是什么?(-230 3.15)

②普通字符

普通字符原样输出,它不控制变量的输出。

printf(“a=%d,b=%u,c=%5.2f”,a,b,c); 问:输出结果是什么?

③转义字符

\n 回车且换行

\r 回车但不换行

\b 退一个字符

\t 走一个制表位(8个字符)

\\ 转译成\

\’转译成’

\”转译成”

%% 转译成%

\ddd 转译成1~3位八进制所对应的ascii码值所代表的字符

\xdd 转译成1~2位十六进制所对应的ascii码值所代表的字符

老师举例子说明

如:printf(“a=%d,b=%u,c=%5.2f\n”,a,b,c);

printf(“%c\n%c\n”,’\56’,’\x2a’);

答案:

int a=1,b=3;

printf(“%d”,a,b);输出结果是什么?(1)

printf(“%d”,(a,b)); 输出结果是什么?(3)

2 关于输入函数的使用

格式:scanf(“输入格式控制”,变量地址列表);

重点掌握都有哪些输入格式?(有格式符和普通字符,没有转义字符)

① 格式符:

%d 以普通整型输入

%ld(%Ld) 以长整型输入

%hd 以短整形输入

%md 取整型的m位

%u 以无符号型输入

%o 以八进制输入

%x(%X) 以十六进制输入

%f 以单精度小数输入

%lf(%Lf) 以双精度小数输入

%mf 以单精度小数输入

(但是不能规定它的精度。如:%5.2f )

%c 以字符型输入

%s 以字符串型输入

如:int a;

float b;

double c;

long d;

scanf(“%d%f%lf%ld”,&a,&b,&c,&d);

假设让a=23,b=2.6,c=12.66,d=12345

问:在键盘上应如何输入?

②普通字符

普通字符不影响输入,只是在输入时原样打上就行

如:把上例改为:

scanf(a=%d,b=%f,c=%lf,d=%ld);那么应该如何输入?

③关于混合输入问题

如:假设让a=23,b=’k’,c=12.5,d=’p’

scanf(“%d%c%f%c”,&a,&b,&c,&d);问:如何输入?

(23k 12.5p或23k12.5p)

④关于跳过某个输入项的问题

如:scanf(“%d%*d%f”,&x,&y);

假设输入如下:20 30 2.5回车

问:x=? (20) y=?(2.5)

⑤按照给定的长度输入

如:scanf(“%3d%2d”,&x,&y);

假设输入如下:2345678回车

问:x=? (234) y=?(56)

下面举三个综合的例子:(让学生自己写写看行不???)

例1:从键盘输入两个两位的正整数,第一个数的十位作为千位,个位作为十位;第二个数的十位

#include”stdio.h”

main()

{int a,b,c;

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

c=a/10*1000+b/10*100+a%10*10+b%10;

printf(“\nc=%d”,c);

}

例2:从键盘输入两个数,然后把这两个数交换并输出

#include”stdio.h”

main()

{int a,b,t;

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

t=a;a=b;b=t;;

printf(“\n%d,%d”,a,b);

}

例3:输入一个double型数,保留两位小数,第三位小数进行四舍五入,然后输出。#include”stdio.h”

main()

{double x,y;

scanf(“%lf”,&x);

y=(int)(x*100+0.5)/100.0;

printf(“\ny=%.2f”,y);

}

最后领学生做做书后习题

第四章 选择(分支)结构程序设计

1 在C 语言中真和假的概念

真-----若一个表达式成立则称为真;若值为非0也称为真。

2关系运算符和关系表达式

C 语言提供六种关系运算符:

> < >= <=

== (等于) !=(不等于)

注意几点:

● 由两个符号组成的关系运算符不能分开

● 前四个运算符优先级相同且高于后两个

● 关系符低于算术运算符,但高于赋值运算符(=)

如:a+b==c 相当于(a+b)==c

● 关系表达式的值:一个是真(用1来表示);另一个是假(用0来表示)

● 注意“=“和”==“的区别

● 0

3逻辑运算符和逻辑表达式

C 语言提供三种逻辑运算符:

!(逻辑非) &&(并且) ||(或者)

他们之间的优先级由高到底是:! && ||

注意几点:

● !高于算术运算符,!、&&、||都高于赋值运算符。

● 逻辑表达式值的问题:真和假

● 逻辑表达式的短路问题:

如:a=0,b=0

问下列逻辑表达式的值是什么? a=? b=?

a++&&b++

答案:逻辑表达式的值为假(也就是0),a=1,b=0

若改为:a++||b++呢?情况会如何呢?

总结:六个关系符和 三个逻辑符的 优先级都高于赋值(=);除了!之外都低于算术运算符 4 用C 语言程序来完成下列的分段函数

y=??

???<<+=-<<-)100......(1)0......(1)05........(x x x x x x #include ”stdio.h ”

main()

{int x,y; /* 定义两个整型变量*/

scanf(“%d ”,&x); /* 从键盘输入一个整数X */

if(x>-5&&x<0)

y=x;

if(x==0) /* 注意x==0 与x=0的区别 */

y=x-1;

if(x>0&&x<10)

y=x+1;

printf(“y=%d\n ”,y); /* 把结果输出到屏幕上 */

}

说明:在C 语言中可以用if 语句和switch 语句来实现程序的分支。

(1) 用if 语句实现分支

{语句1}

即:条件为真,执行语句1、

②if(条件) /* if 和else是关键字,要小写*/

{语句1}

else {语句2}

即:条件为真,执行语句1,否则执行语句2

注意以下几点:

①if 后面的条件可以是如下类型:

●关系表达式,如x>y

●逻辑表达式,如x>y&&y>z

●算术表达式,如x+y

●赋值表达式,如x=y

●变量,如x

●常量,如-5

●++ 或—出现在条件里,如x++>y

②如果语句1或语句2是一条语句,则{}一对花括号可以省略

③if….else 是一条语句,else 不能单独出现,要注意else 与if的搭配问题(既:else与

其上面最近的且没使用的if搭配)

下面举几个例子来说明:

例1:从键盘输入一个整数,判断其是奇数还是偶数?

#include”stdio.h”

main()

{int x,y;

scanf(“%d”,&x);

if(x%2==0)

printf(“偶数”);

else printf(“奇数”);

}

例2:下面程序的输出结果是什么?

#include”stdio.h”

main()

{int a=2,b=-1,c=2;

if(a

if(b<0) c=0;

else c+=1;

printf(“%d”,c);

}

答案:2

例3:下面程序的输出结果是什么?

#include”stdio.h”

main()

{int a=2,b=-1,c=2;

if(a

{if(b<0) c=0;}

else c+=1;

printf(“%d”,c);

}

答案:3

#include”stdio.h”

main()

{int a=2,b=-1,c=2;

if(a++

if(b<0) c=0;

else c+=1;

printf(“%d,%d”,c,a);

}

答案:2,3

分析:可以把条件a++

第一步:先判断a

第二步:把a加1,既a=a+1

第三步:根据第一步的判断情况来决定程序的执行方向

请同学们考虑:若改为++a

例5:下面程序的输出结果是什么?

#include”stdio.h”

main()

{int a=2,b=-1,c=2;

if(a=b)

if(b<0) c=0;

else c+=1;

printf(“%d”,c);

}

答案:0

?关于三目运算符

格式:表达式1?表达式2:表达式3

既:如果表达式1为真,则取表达式2的值,否则取表达式3的值

看下面例子:

int a=1,b=2,c=3,y;

y=a>b?a:b; 问:y=?(2)

y=a>b?a:a>c?c:a; 问:y=?(1)

?用switch开关语句来实现程序的分支

格式:switch()

{case 常量表达式1:语句;

case 常量表达式2:语句;

case 常量表达式3:语句;

default :语句

}

注意以下几点:

◆switch和case是关键字,要小写

◆switch后面括号里可以是以下内容:

整型常量或变量、字符常量或变量、关系表达式、

逻辑表达式、整型的算术表达式,总之是整数

◆case要和后面的常量表达式用空格分开,且这个常量表达式必须是整型常量或字符常量,

不是变量。

可以用break 语句跳出switch

举几个例子:

例1:程序输出结果是什么?

#include”stdio.h”

main()

{int x=0,y=2,z=3;

switch(x)

{ case 0:printf(“*”);

case 1:printf(“#”);break;

default: printf(“!”);

}

}

答案:*#

例2:程序输出结果是什么?

#include”stdio.h”

main()

{int x=0,y=2,z=3;

switch(x)

{ case 0:switch(y==2)

{case 1: printf(“*”);break

case 2:printf(“%”);break;

}

case 1:printf(“#”);break;

default: printf(“!”);

}

}

答案:*#

领学生做书后习题

第五章循环结构程序设计

如何计算1+2+3+4+。。。。。。+100???

这就需要用到循环,C语言有三种循环结构,

既:while()、do{}while;、for()

#include”stdio.h”

main()

{int i,sum=0; /* 定义所需的变量,并给变量sum初始化为0 */

i=1;

while(i<=100)

{sum+=i;

i++;

}

printf(“%d”,sum);

}

(1)while()循环

格式:while(循环条件)

{

循环体

}

既:若循环条件为真,则执行循环体中的语句,执行完后再去判断循环条件,若还为真,则继续执行循环体,否则退出循环。

注意以下几点:

①while是关键字,要小写

②while后面的循环条件和if后面的条件一样

③对于任何循环,只要掌握两点内容:一是循环条件是什么?二是循环体是谁?

④若循环体只是一条语句,则一对花括号{}可以省略

⑤如何结束循环,一般是两种方式:

一是正常结束(既不满足循环条件了)

二是中途结束(用break语句)

现在再返回上面的程序看一看,能否找到循环条件是什么?循环体是谁?

while(x>0)

或写成while(x>0);请说出循环条件和循环体???

(2)do…while()循环

格式:do{

循环体

}while(循环条件);

既:先执行循环体中的语句,执行完后再去判断循环条件,若为真,则继续执行循环体,否则退出循环。

注意以下几点:

①do和 while是关键字,都要小写

②循环至少执行一次

③while()后面要有分号;

(3)for循环

格式:for(表达式1;表达式2;表达式3)

{

循环体

}

环,再执行表达式3,然后再去判断表达式2是否为真?,若为真则继续执行循环体,再执行表达式3……,直到表达式2为假

注意以下几点:

①三个表达式可有可无,但分号;必须有

②三个表达式的含义如下:

表达式1:一般是给变量赋值的

表达式2:是循环条件

表达式3:是变量的变化

③重点弄明白循环条件是什么?循环体是谁?

④如何结束循环,两种方式:

一是正常结束(既不满足循环条件了)

二是中途结束(用break语句)

用do…while()循环和for()循环来改写上面的例子:

1 用do…while()循环

#include”stdio.h”

main()

{int i,sum=0; /* 定义所需的变量,并给变量sum初始化为0 */

i=1;

do{sum+=i;

i++;

}

while(i<100); /* 注意后面的分号一定要有*/

printf(“%d”,sum);

}

2 用for()循环

#include”stdio.h”

main()

{int i,sum=0; /* 定义所需的变量,并给变量sum初始化为0 */

for(i=1;i<=100;i++)

sum+=i;

printf(“%d”,sum);

}

大家比较一下哪种循环更简练???

若把for(i=1;i<=100;i++)改成如下形式,其余的语句不动会是什么结果呢?

for(i=1;i<=100;i++);

下面由学生来写两个程序:

用for循环求1—100之间奇数的和

用while循环求1—100之间能同时被2和3整除的数。

下面再举几个例子:

例1:从键盘输入一个正整数,把它转换成二进制输出

#include”stdio.h”

main()

{int x,y;

scanf(“%d”,&x);

while(x>0)

{y=x%2;

printf(“%2d,”,y);

x/=2;

}

上面程序用for()循环怎么改?

例2:用4 =1-31+51-7

1+……公式求 ∏的近似值,直到最后一项的绝对值小于10-6为止 #include ”stdio.h ”

#include ”math.h ”

main()

{

float n,t,pi;

int s;

s=1; /* 用变量s 来改变正和负 */

n=1.0; /* 用n 代表分母 */

t=1.0; /* 用t 代表公式中的某一项 */

pi=0; /* 用pi 代表各项的和*/

while(fabs(t)>=1e-6) /* fabs(t)就是t 的绝对值 */

{ pi+=t;

n+=2;

s=-s;

t=s/n;

}

pi=pi*4;

printf(“pi=%f\n ”,pi);

}

(4)break 语句和 continue 语句的含义

如果遇到break 语句,则无条件退出循环

如果遇到continue 语句,其含义是结束本次循环,继续下一次循环。

下面再举几个例子:

例1:从键盘输入一个正整数,判断它是否为素数(质数)?

(用两种算法来写)

判断一个正整数x 是素数的三种方法:

① x 被2 ~x-1来除,若都除不开,则x 就是素数

② x 被2 ~x/2来除,若都除不开,则x 就是素数

③ x 被2 ~x 来除,若都除不开,则x 就是素数

解法1:(标志变量法)

#include ”stdio.h ”

main()

{int x,i,f=1; /* f 是标志变量 */

scanf(“%d ”,&x);

for(i=2;i

if(x%i==0) {f=0;break;}

if(f==1) printf(“是素数”);

else printf(“不是素数”);

}

解法2:(判断循环是如何退出的办法)

#include ”stdio.h ”

main()

{int x,i;

for(i=2;i

if(x%i==0) break;

if(i==x) printf(“是素数”);/* 如果i等于x的话,说明循环是正常退出的 */ else printf(“不是素数”);

}

例2:输出2~100以内的所有素数(1即不是素数,也不是非素数)

#include”stdio.h”

main()

{int x,i;

for(x=2;x<=100;x++)

{for(i=2;i

if(x%i==0) break;

if(i==x) printf(“%d,”,x);

}

}

思考:用另一种判断素数的算法怎么改写上面的程序???

参考答案:

#include”stdio.h”

main()

{int x,i,k;

for(x=2;x<=100;x++)

{k=1;

for(i=2;i

if(x%i==0) {k=0;break;}

if(k==1) printf(“%d,”,x);

}

}

由学生来完成:求出大于整数K(K由键盘输入),且紧靠K的5个素数

参考答案:

#include”stdio.h”

main()

{int k,m,i,n=0;

scanf(“%d”,&k);

for(m=k+1;n<5;m++)

{for(i=2;i

if(m%i==0) break;

if(i==m) {printf(“%d,”,m);n++;}

}

}

例3:编程找出1000以内所有完数(例如:6的因子为1、2、3,而6=1+2+3)?#include”stdio.h”

main()

{int i,x,sum;

for(x=1;x<=1000;x++)

{ sum=0;

for(i=1;i

if(x%i==0) sum+=i;

}

}

例4:求两个正整数的最大公约数和最小公倍数

(用两种算法)

解法1:

#include ”stdio.h ”

main()

{int a,b,c,max,min;/* 用max 来放最大公约数,用 min 放最小公倍数 */

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

/* 求最大公约数max */

if(a>b) c=b; /* 用变量c 放a 和b 小的数 */

else c=a;

while(a%c!=0||b%c!=0)

c--;

max=c;

/* 求最小公倍数 */

if(a>b) c=a; /* 用c 来放 a 和b 大的数 */

else c=b;

while(c%a!=0||c%b!=0)

c++;

min=c;

/* 输出最大公约数和最小公倍数 */

printf(“max=%d,min=%d\n ”,max,min);

}

解法2(辗转相除法):

#include ”stdio.h ”

main()

{int a,b,c,t,m,max,min;/* 用max 来放最大公约数,用 min 放最小公倍数 */

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

t=a*b; /* 把a 和b 的乘积放在变量t 中 */

if(a

c=a%b;

while(c!=0)

{a=b;

b=c;

c=a%b;

}

max=b;/* b 的值就是最大公约数 */

min=t/max;

printf(“max=%d,min=%d\n ”,max,min);

}

例5:编写程序求e 的值

e ≈1+!11+!21+!

31+…… (1)用for 循环计算前50项的和

(2)用while 循环,要求直到最后一项的值小于10-6

解1:

#include ”stdio.h ”

{double sum=1,t=1;/* 定义sum变量为和,t为某项 */

int k;

for(k=1;k<50;k++)

{t/=k;

sum+=t;

}

printf(“%f”,sum);

}

解2:

#include”stdio.h”

#include”math.h”

main()

{double sum=1,t=1;/* 定义sum变量为和,t为某项 */

int k=1;

while(t>=1e-6)

{sum+=t;

k++;

t/=k;

}

printf(“%f”,sum);

}

分析:若把t/=k;放到sum+=t;的前面会如何?(结果就不对了)例6:下面程序的输出结果是什么?

#include”stdio.h”

main()

{int i;

for(i=1;i<=5;i++)

{if(i%2) printf(“*”);

else continue;

printf(“#”);

}

printf(“$\n”);

}

答案:*#*#*#$

例7:下面程序的输出结果是什么?

#include”stdio.h”

main()

{int x=3;

do

{

printf(“%3d”,x-=2);

}while(!(--x));

}

答案:1 -2

例8:输出如下图形

例9:把一个正整数进行重新组合如:逆序、偶数位上的数组成新数、奇数位上的数组成新数等如:从低位开始取出长整形S中奇数位上的数,构成新数放在T中,如:S中的数是654321,则T 中的数就是642

#include ”stdio.h”

main() Array {long s,t,sl=10;

scanf(“%ld”,&s);

s/=10;

t=s%10;

while(s>0)

{s/=100;

t=s%10*sl+t;

sl*=10;

}

printf(“%ld”,t);

}

说明:若是求偶数位上的呢?(531)

若是把S逆过来呢?

#include "stdio.h"

main()

{long s,t;

scanf("%ld",&s);

t=s%10;

while(s>10)

{s/=10;

t=t*10+s%10;

}

printf("%ld",t);

}

第六章字符型数据

1 什么是字符型数据和字符串型数据?

‘a’---就是字符型数据,它的值就是a的ASCII值97,而’abc’是非法的.

‘3’---也是字符型数据,它的值就是字符3的ASCII值51

注意:3与’3’的区别;’3’-‘0’=3;3+’0’=’3’;

也就是说用一对单引号括起来的必须是一个字符

那么一起来分析一下’\n’呢???

由于\n是转义字符,记住转义字符就是一个字符,但看起来象两个或多个字符.

‘\123’---看起来象4个字符,其实这也是转义字符,那么它到底转义成了什么字符呢?

‘\x2a’呢?又会是什么情况呢?

“a12”---就是字符串型数据,它没有值

“a”---也是字符串型数据

注意:’a’与”a”的区别

既:用一对双引号括起来的就是字符串型数据.

2 什么是字符型变量

定义一个变量,用这个变量来存放字符型数据.

格式:char c,d=’1’;

c=’a’; /* 或写成c=97; */

字符型和int型在一定范围内的通用问题:如果int型的数据在0-255范围内则char 与int通用。(既在一个字节范围内通用)

如:int k=321;

char ch;

ch=k;

printf(“%d,%c”,ch,ch);/* 输出结果是:65,A */

3 如何在屏幕上输出字符?

char c=’a’;

printf(“%c,%d”,c,c); /* 或putchar(c); */

4 如何从键盘输入一个字符给某个字符型变量?

char c;

scanf(“%c”,&c);/* 或c=getchar(); */

注意混合输入的问题:如:

int a1,a2;

char c1,c2;

scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);

假设使a1=20,a2=30,c1=’d’,c2=’c’应如何如输入数据?

(20d 30c或20d30c)

5 综合举例

例1:从键盘输入任意字符,统计其中字母、数字、空格的个数,以#结束输入

#include”stdio.h”

main()

char c;

whiel((c=getchar())!=’#); /* 注意写法 */

{if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)

n1++;

if(c>=’0’&&c<=’9’)

n2++;

if(c==’‘)

n3++;

}

printf(“%d,%d,%d\n”,n1,n2,n3);

}

例2:从键盘输入一串数字字符,把它变成相应的整数,如“-1234”变成-1234 #include”stdio.h”

main()

{char ch;

int i,f=1;

long sum=0;

while((ch=getchar())!=’\n’)

{if(ch==’-‘) {f=-1;continue;}

sum=sum*10+ch-‘0’;

}

printf(“%ld”,f*sum);}

第七章函数

1 在C语言中”函数”的概念

所谓”函数”就是一段程序,它完成一定的功能,包括库函数和用户自己定义的函数,函数的基本特征就是函数名后面紧跟一对().如:printf();就是C语言函数库中的一个函数,printf是函数的名字,它的功能就是在屏幕上输出信息.

2 用户如何自己定义一个函数(称为子函数)

格式:函数的存储类别函数返回值的类型函数名(形式参数1,形式参数2……)

{定义变量部分

语句部分

}

如:

#include”stdio.h”

extern int max(int a,int b) /*子函数首部 */

{ int c; /* 定义所需变量 */

c=(a>b)?a:b; /* 以下是语句部分 */

return c; /* 把变量c的值返回给调用者 */

}

main()

{int x,y,z;

scanf(“%d,%d”,&x,&y);

z=max(x,y);

printf(“z=%d\n”,z);

}

说明以下几点:

①子函数可以放在主函数(main)的上面和下面,但不可以放在主函数或其他函数的内部.

②函数的存储类别可以是extern(开放型的) 和static(封闭型的),若不写,则默认是extern

③函数返回值的类型很多,它可以是C语言的所有数据类型,若不写,则默认是int型.

④形式参数的类型和个数必须和调用者一致,而且多个形式参数必须分别定义.不能写成int a,b

⑤用return 表达式; 或return (表达式);语句返回一个值给调用者(只能返回一个值,分析一下:

return c,d;是什么含义?若写成return c;return d;又是什么含义?),如果写成return ;则函数返回一个不确定的值.如果return语句后面要返回值的类型和函数首部的”函数返回值的类型”不一致时,以”函数返回值的类型”为主.如果”函数返回值的类型”和调用者所要求的返回值的类型不一致时,以调用者为主.

⑥如果不需要返回值时,则”函数返回值的类型”用void,这是就不能有return语句了.

⑦关于参数的传递:单向值传递,而且是由调用者传给子函数,调用者的参数称为实参,子函数的参

数称为形参,并且主函数和子函数中的变量可以同名(虽然同名但不是同一个变量),子函数中的变量只有在被调用时才建立,并且调用结束后子函数中的变量也不存在了(除了静态局部变量和全局变量---后面会讲到)

⑧如何调用子函数:直接写子函数的名字就行.(直接喊名)

⑨子函数的声明:如果子函数在主函数的下面,则需要对其下面的子函数作个基本介绍(声明),假

如上面的例子中,子函数max()是在主函数的下面,可用如下的声明语句,这个语句可以放在主函数的上面,也可以放在主函数的内部,int max(int a,int b);或int max(int ,int);

⑩子函数的调用过程讲解(由老师结合上面的例子演示)

下面举几个例子:

例1:在主函数中输入一个正整数,然后在子函数中求出各个位上的数字之和,然后在主函数里输出

#include”stdio.h”

int aa(int x) /* 定义子函数 */

大学c语言必背基础知识_c语言基础知识大全

大学c语言必背基础知识_c语言基础知识大全 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格123 printf(“f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为1.250000 printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位) printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入) 第三节数据输入1、scanf(“a=%d,b=%d”,">2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!scanf(“%d,%d”,注意写成这样才可以! 3、特别注意指针在scanf的考察例如:int x=2;int *p=scanf(“%d”,x); 错误scanf(“%d”,p);正确scanf(“%d”,错误scanf(“%d”,*p)错误 4、指定输入的长度(考试重点)终端输入:1234567scanf(“-M%d”,x为12,y为3456,z为7终端输入:1 234567 由于1和2中间有空格,所以只有1位给xscanf(“-M%d”,x 为1,y为2345,z为67 5、字符和整型是近亲:int x=97;printf(“%d”,x); 结果为97printf(“%c”,x); 结果为a 6、输入时候字符和整数的区别(考试超级重点) scanf(“%d”,这个时候输入1,特别注意表示的是整数1 scanf(“%c”,这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。 补充说明: 1)scanf函数的格式考察: 注意该函数的第二个部分是scanf(“%d%d%*d%d”,跳过输入的第三个数据。 2)putchar ,getchar 函数的考查:

2017全国计算机等级考试二级C语言知识点超全整(打印版).docx

全国计算机等级考试

目录 第-部分公共基础知识 第1章算法与数据结构 (1) 考点1算法........................... I 考点2数据结构.. (1) 考点3线性表及英顺序存储结构 (1) 考点4栈和队列 (1) 考点5线性链表 (2) 考点6树与二叉树 (2) 考点7查找技术 (3) 考点8排序技术 (3) 第2章程序设计基础 (4) 考点I程序设计方法与风格 (4) 考点2结构化程序设计 (5) 考点3面向对象的程序设计 (5) 第3章软件工程基础 (5) 考点1软件工程基本概念 (5) 考点2软件分析方法 (6) 考点3结构化设计方法 (7) 考点4软件测试 (8) 考点5程用的调试 (9) 笫4帝数据库设计基础 (9) 考点1数据库系统的基本概念 (9) 考点2数据带系统的基木概念 (10) 考点3关系代数 (12) 考点4数据库设计与管理 (12) 第二部分二级C语言 笫1章程序设汁基本概念 (14) 考点1程序设计 (14) 考点2 C程序的结构和格式 (14) 考点3常鱼和变蛍 (14) 考点4算术表达式 (15) 考点5赋值表达式 (16) 考点6自加.口减和逗号运算 (16) 第2章顺疗结构 (17) 考点1字符型常屋与变虽 (17) 考点 2 putchar 与gclchar 函数 (17) 考点3 printf函数 (17) 考点4 scanf函数 (18) 考点5位运算的含义和应用 (18) 第3章选择结构 (19) 考点1关系运算符和关系表达式 (19) 考点2逻轉运算符和逻辑表达式 (19) 考点3 if语句及其构成的选择结构 (19) 考点4 switch语句与break语句 (20) 第4章循环结构 (20) 考点1 while循环结构 (20) 考点2 do-while循环结构 (21) 考点3 for循环结构 (21) 考点4嵌套循环语句 (21) 第5章函数 (21) 考点I库函数 (21) 考点2函数的调用 (22) 考点3参数传递 (22) 考点4函数的递归调用 (23) 考点5局部、全局变量和存储分类 (23) 第6章地址与指针 (23) 考点1变量的地址和指针 (23) 考点2抬针变量的操作 (24) 考点3函数之间地址的传递 (24) 第7章数组 (24) 考点1 一维数组的定义及元素的引用??24 考点2函数对-维数组及元素的引用??25 考点3二维数组的定义 (25) 考点4二维数组和指针 (25) 考点5二维数组名和指针数组作为实参???26 第8章字符串 (26) 考点|用-?维字符数组存放字符出? (26) 考点2使指针指向字符串 (26) 考点3字符串的输入和输出 (26) 考点4字符串数组 (27) 考点5用于字符串处理的函数 (27) 第9章编译预处理和动态存储分配 (27) 考点I編译预处理 (27) 考点2宏替换 (27) 考点3文件包含处理 (28) 考点4动态存储分配 (28) 第10章结构体.共用体和用戸定义类型28考点1结构体 (28) 考点2共用体 (29) 考点3用户定义类型 (29) 第11章文件 (29) 考点1文件指针 (29) 考点2文件的读写 (30)

谭浩强C语言知识点总结

谭浩强C语言知识点总 结 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI ; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---?.obj---?.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

大学c语言考试基础知识复习

C 语言最重要的知识点复习资料总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从()入口, 然后从最上面顺序往下读(碰到循环做循环, 碰到选择做选择),有且只有一个函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)是位是指为0 或者1 。是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以数值存放在文本文件中。 2、 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、可用于循环结构和语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C 语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个函数,是程序运行的起点。第二节、熟悉 1、是软件,用来运行写的C语言程序。 2、每个C 语言程序写完后,都是先编译,后链接,最后运行。()这个过程中注意和文件时无法运行的,只有文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。有其它元 素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。都不是关键字。迷惑你的地方是 可以做为用户标识符。因为中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。二进制、八进制、十六进制转换 成十进制。 第五节:整数与实数 1)C 语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次) a 、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有 8 的,逢8 进1。 b 、C语言中的十六进制规定要以Ox开头。 2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

贵州大学2012-2013C语言考试A卷 附 重要考点复习资料

贵州大学2012-20103学年第一学期考试试卷 A C语言程序设计 满分100分,考试时间为120分钟。 一、单项选择题(选出一个正确答案,每小题2分,共20分) 1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ) A.连接、编译 B. 连接、运行 C. 编译、运行 D. 编译、连接 2.下列说法正确的是() A.一个c语言程序并非总是从主函数位置开始执行的 B.一个c语言程序有且只有一个主函数 C.函数可以嵌套定义,不可以嵌套调用 D.程序函数的位置不可以任意 3.下面是合法C语言标识符的是() A. 2A_K; B. _M+N; C. –M3; D. AC_2; 4.下列格式符中,可以用于控制字符输出的是( ) A. %d B. %f C. %o D. %c 5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( ) A. 4; B. 16; C. 30; D. 50; 6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( ) A. 10,5 B. 15,6 C. 15,5 D. 10,6 7.若有定义 int x,*p;,则以下正确的赋值表达式是( ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x; 8.以下对结构体类型变量的定义中,不正确的是( ) A. typedef struct aa B. #define AA struct aa { int n; AA { int n; float m; float m; }AA; } stud; AA stud; C. struct D. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud; 9.有如下函数调用语句: func(rec1,rec2+rec3,(rec4+rec5)); 函数调用语句中,含有的实参个数是( ) A. 3 B. 4 C. 5 D. 以上均不是 10.对于以下宏定义: #define SQ(x) x*x #define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( ) A.25 B.11 C.43 D.以上均不是

C语言知识点总结 完美版

PS这个文档是我从百度文库找的,其中存在一些错误在我能力范围之内的已被纠正过来了,并且有些内容我做了适当的修改。来不及复习的同学如果觉得书太多懒得看,可以看看这个,已经复习的同学也可以查漏补缺哈。复习的话建议书本加网上作业。预祝大家考试过过过! C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址. 4)bit是位是指为0或者1。byte是指字节,一个字节=八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI3.1415926;这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。(但能嵌套调用) 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。(continue不能用于switch语句) 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。

大学c语言学习心得感悟

大学c语言学习心得感悟 通过这次大学c语言计算机实习学习,我们了解了一些关于c 语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。下面是WTTWTT为大家收集整理的大学c语言学习心得感悟,欢迎大家阅读。 大学c语言学习心得感悟篇1 林林总总的计算机语言,林林总总的计算机技术,林林总总的计算机书籍让我们初入计算机的菜鸟一次就吓的没有勇气。迷茫和徘徊让我们丧失了时间和信心。没有诀窍吗?有的,看你怎么把握了,接下来我就以C语言为例子,讲一下有关学习的方法和技巧,同时也分享一下我学C的感想。 许多人第一次接触C语言都会觉得C语言难懂和不容易使用,其实就我个人的看法,C语言其实是很基础的汇编语言,除了一些必须要记忆的关键字、语法和库函数,其余的都是需要靠自己的逻辑思维通过这些关键字、语法和库函数来组织或构成一个完整的函数,所以C语言大多数的学习时间都是在锻炼我们的抽象逻辑思维能力。只有当你具有了抽象逻辑思维能力和弄清楚了关键字、语法和库函数的相关知识后,编写C语言就不是难事了。 通过C语言初步的学习后都很容易弄懂关键字、语法和库函数的相关知识,但是由于大部分人因为以前没有接触过电脑或电

脑语言的相关知识所以缺乏抽象逻辑思维能力,不知道如何将所学到C语言的知识如何组织和构成一个完整的函数,那么如何来有效的锻炼自己的抽象逻辑思维能力呢? 在这里是我个人的一套自学心得,通过学习后所掌握的知识使用上课老师所提到的案例或找一段简单的完整的案例,然后将案例读懂,也就是把它转换成我们日常所能接受的自然语言(在这里不妨把你所能理解的自然语言写下来)。例如下面这段代码是手工输入两个整数数字并计算两个数字之间从最小的数字开始到最大的数结束其中所有奇数相加的和: void main { 首先INT是表示整数形数据的定义,那么接下来有两个未知的整数和一个已知的整数0;这里出现的3个整数数字用C语言里的变量来替代它们,这时第一个数字就用取名为NUM1的变量,第二个数字就用取名为NUM2的变量,第三个数字就用取名为X的变量并且用赋值符号来为它赋予0这个值。 int num1,num2,x=0; 由于知道了有两个未知的整数,所以要通过键盘输入使这两个未知的整数变成已知的整数并且储存在前面所提到的变量中。 scanf("%d%d ",&;num1,&;num2) ; 得到数字后下面就开始进行一系列的运算和判断,如果NUM1小于NUM2的话最小的数字就是NUM1最大的数字就是NUM2,如果

国家二级C语言公共基础知识要点及历年真题

1算法 1.1 算法的基本概念 1.算法的概念(必记): 算法是指解题方案的准确而完整的描述。 分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导方 案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想)。 结论:算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 2.算法的基本特征(必记): a.可行性:由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算法时,要考虑到设计的算法是否是可性的。 b.确定性:算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 c.有穷性:算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 d.拥有足够的情报:算法有相应的初始数据。 3.算法的基本要素: 一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。 基本运算和操作分为四类: a. 算术运算: (加、减、乘、除等运算) b. 逻辑运算: (与、或、非等运算) c. 关系运算: (大于、小于、等于、不等于等运算) d. 数据传输: (赋值、输入、输出等操作) 算法的控制结构: 算法中各操作之间的执行顺序称之为算法的控制结构。一个算法一般都可以用顺序、选择、循环三种基本控 制结构组合而成。 注意:一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。 4.算法设计基本方法: 列举法、归纳法、递推、递归、减半递推技术、回溯法。 1.2 算法的复杂度 (必记) 算法的复杂度主要包括时间复杂度和空间复杂度。 1.算法的时间复杂度: 是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。 可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平 均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。 2.算法的空间复杂度: 一个算法的空间复杂度,是指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空间 +输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。 历届的考题: 1、算法具有五个特性,以下选项中不属于算法特性的是(______) [2005.4] A)有穷性B)简洁性C)可行性D)确定性 2、问题处理方案的正确而完整的描述称为______。[2005.4] 3、下列叙述中正确的是________。[2006.9] A)一个算法的空间复杂度大,则其时间复杂度也必定大

C语言知识点总结完美版

语言最重要的知识点C :总体上必须清楚的。分支结构)、循环结构 1)程序结构是三种: 顺序结构、选择结构(碰到选择做选,, 然后从最上面顺序往下读(碰到循环做循环 2)读程序都要从main()入口一个main函数。择),有且只有. . 数据存放的位置就是他的地址 3)计算机的数据在电脑中保存是以二进制的形式. 一个字节 = 八个位是指或者1。 byte字节, 4)bit是位是指为0 概念常考到的:语言编译的程序称为不要加分号。C1、编译预处理不是C语言的一部分,不占运行时间,中。存放在文本文件源程序,它以ASCII数值一定不能出现分号。define PI 3.1415926、#;这个写法是错误的,2。是有且只有一个3、每个C语言程序中main函数再定义函数。、在函数中不可以4。一定要有输出5、算法:可以没有输入,但是语句。switch6、 break可用于循环结构和。倒数第二的级别最低,赋值的级别7、逗号运算符语言的基础知识 C第一章 C语言的基础认识第一节、对。源程序语言编写的程序称为,又称为编译单位1、C , 每行可以写多个语句,可以写多行。、C语言书写格式是自由的2 。main函数,是程序运行的起点语言程序有且只有一个3、一个C vc++ 第二节、熟悉语言程序。VC是软件,用来运行写的C1、).obj---?.exe,最后运行。(.c---?、每个2C语言程序写完后,都是先编译,后链接)。(常考!.obj文件时无法运行的,只有.exe 文件才可以运行这个过程中注意.c和第三节、标识符、标识符(必考内容): 1合法的要 求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 运行时候,所有的进制都要转换成二。但是没有二进制进制,八、十、十六语言只有C)1. 进制来进行处理。(考过两次)的,逢八进制是没有80开头。018的数值是非法的,以 a、C语言中的八进制规定要1。8进开头。语言中的十六进制规定要以0x b、C可以不用写。: C语言小数点两边有一个是零的话,2)小数的合法写法1. C语言中可写成1.0在 .1。0.1在C 语言中可以写成 3)实型数据的合法形式:-1 10。2.333e-1 就是合法的,且数据是2.333×a、请结合书上的例子。后必为整数。前b、考试口诀:ee后必有数,e个字节:个字节,双精度

C语言基础知识整理

C 语言基础知识 1. 每个C 程序有且只有一个主函数main() ,且程序必须从main() 函数开始执行,并在main() 函数中结束。 2. 在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。 3. 用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。 4. 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 5. 在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。 6. 用sizeof(int) 计算int 类型数据的字节数。 7. C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8. 预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空 间。 9. feo f函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。 10. 当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名。 11. 在赋值表达式中,赋值运算符"=”右侧不能为表达式;在求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12. 静态局部变量,只有当程序结束后,其值才释放。 13. 当调用函数时,实参是一个数组名,则向函数传送的是数组每一个元素的地址。 14. 算法的特点为有零个或多个输入,有一个或多个输出,当相同的输入时,其结果相同;算法 正确的程序最终一定会结束。15. 在 C 语言中,预处理命令行都以“#”开头;当需要时才用 #include; 预处理的作用就是实现宏定义和条件编译。16. 当数组元素的下标超出了定义 的下标范围时,系统不给出“下标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17. 共用体变量不能作为函数的参数,也不能使函数带回共用体变量。 18. 指向函数的指针变量的定义形式为:数据类型(* 指针变量)();,因此其为指向函数的 指针变量。 19. 用C 语言编写的代码程序是源程序,只有通过编译、连接才能进行。 20. 在说明为static 时,其生存期得到延长,而其作用域并没有改变,在定义后系统会自动帮它赋值为0,static 为关键字不能被用作它用。 21. 频繁地使用空语句会降低程序的可读性和运算速度。22. 运算符%两边都应是整数,赋值语 句左边应该是变量,而非表达式,强制转换语句强制类型应加括号。 23. 在逻辑运算符中,其两侧的运算符对象为任意合法的表达式即可。 24. 函数fread (&larray,2,16,fp)的功能是,从fp所指的数据文件中读取16次2字节的数据 存储到数组larray中。25.整个流式文件也可以随机存取数据,C语言文件中有好多函数可以达 到写入数据时,未经输入数据,达到不覆盖的目的,在进行写操作时,系统会自动关闭文件。 26. 使用putchar、getchat、puts、gets、printf、seanf函数时,必须在程序的开头岀现包含头文件 #inelude "stdio.h ”的命令行,而使用字符串处理函数时,必须在程序的开头岀现包含头文件 #include”string.h ”命令行,而使用数学函数时,必须在程序的开头岀现包含头文件#include”math.h” 的命令行。 27. 一个斜杠与小于等于127 任意数字按一个字符计算,一个斜杠与任意一个字符按一个字符计 28. 一个C 程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C 语言程序可以实现

C语言循环知识点总结

循环 特点:在满足特定条件的情况下,反复执行某程序段。 While循环 While循环的格式是这样的:while(条件表达式){语句代码},意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,一直到条件表达式的返回值为假时,跳出循环。 While循环很容易出现死循环这种状况,就是因为忘记写了“增量”这个东西。 上面的代码就是少了count++,这个增量,所以,条件表达式一直满足,就一直执行,就造成了死循环。 此时,应该这样改进:

一些例子:

Do-while循环 与while不同的只有一个地方,就是先执行一遍代码,再进行判断。也就是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。 随机数arc4random() 产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?因为,在存储的时候,生成的数的最高位的数字为1,此时,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况避免掉,在输出之前,用unsigned 来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。 另一个值得注意的是,随机数产生的时候,数字会很大,而我们在代码过程中,

不需要这么大的数,此时,想要把这个数减小,可以用取余的办法来限制。 在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式: 若是规定在负空间生成随机数,那么就将公式改成: 一些例子:

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

C语言复习知识点

1、C语言中表达式的合法性,自加自减运算、结构化程序设计中的三种基本结构。 C语言中表达式的合法性即符合C语法规则。 自加自减运算:作用是使变量的值增1货减1,例如 ++i,--i(在使用i之前,先使用i的值加(减)1) i++,i--(在使用i之后,使i的值加(减)1) 自增(减)运算符常用于循环语句中,使循环变量自动加1;也用于指针变量,使指针指向下一个地址。 结构化程序设计的三种基本结构:顺序结构,选择结构和循环结构. 2、C语言结构化程序设计的思想和方法原则。 基本思想是采用自顶向下,逐步求精,模块化和单入口/出口的控制结构. 设计方法遵循3个原则:(1)自顶向下逐步求精.(2)模块化设计.(3)使用3种基本控制结构. 3、C语言中标识符的定义规则。 (1)标识符由字母,数字和下划线组成. (2)必须以字母或下划线开头,不能以数字开头. (3)严格区分大小写,不允许用空格,不允许用C语言的关键字. (4)在Turbo C中,变量名的有效长度小于32个字符,通常为8个字符. 4、C语言的指针有哪些运算?使用指针编程的优点是什么?指针一些常用的说明形式。&&运算:赋值运算和加减运算及关系运算. 优点:(1)提高程序的编译效率和执行速度. (2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据 通信. (3)可以实现动态的存储分配. (4)便于表示各种数据结构,编写高质量的程序. 指针一些常用的说明形式: int*x指针整型的指针变量 int*x[n]整型指针数组,x是一个数组,而这个数组的n个元素均为指针,每个指针都指向一个整型数据 int*x[m][n]二维指针数组。每个元素都是一个指向整型的指针 int(*x)[n]整型数组的指针,x指向一个数组,而数组元素为整型 int(*x)[][5]指向二维整型数组的指针。x是一个行指针,它的每个元素各指向一个有n 个元素的一维整型数组 int*x()指针函数,x是一个函数,其返回值为一个指向这些的指针 int(*x)()函数指针,x是一个指针,它指向一个函数,此函数的类型为整型 5、整型变量与字符型变量是否在任何情况下都可以互相替代? 不是。字符型转换成整型基本没什么问题,但反过来就可能会出问题了。因为在C语言中,整型一般是两个字节(int型两个,long型4个,short int型一个),字符型为一个字节(无符号的为两个),一个字节转两个没问题,两个转一个就可能出现溢出问题。比如char a=255,就会溢出,因为a表达的范围只是-128~127。

C语言知识点总结【完美版】

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。 C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!)(程序编辑-程序编译-程序连接-程序运行) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字(保留字)、预定义标识符、用户定义标识符。关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。(关键字都是小写) 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所

上海理工大学 c语言复习卷以及答案

参考解答 一、单选题 1. 以下C程序中预处理命令写法正确的是: D 。[知识点:编译预处理命令] A. #include “studio.h” B. #include [stdio.h] C. #include {stdio.h} D. #include “stdio.h” 2.执行下列语句序列后,不可能出现的运行结果是___ C ____。[知识点:开关语句] int n; scanf( "%d", &n); switch ( n ) { case 1: case 2: putchar('X'); case 3: case 4: putchar('Y'); break; default: putchar('Z'); A. 显示:z B. 显示:xy C. 显示:x D. 显示:y 3.设a,b为整型变量, 且二者均不为0, 以下关系表达式中恒成立的是___ C ___。[知识点:运算与数据类型] A. a/b*b/a==1 B. a/b*b==a C. a*b/a==b D. a*b/ a*b ==1 4.设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___B____。[知识点:if语句] if ( x>y ) z=x; x=y; y=z; printf("%d,%d,%d",x, y, z ); A. 20,30,20 B. 20,30,30 C. 20,30,10 D. 10,20,30 5.下列程序的输出结果是__ B ____。[知识点:整型常量的表示和自增运算] main() { int a = 011; printf( "%d\n", ++a ); } A. 9

2019年全国计算机二级C语言知识点复习:指针

2019年全国计算机二级C语言知识点复习:指针 【考点1】指针变量 指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。 【考点2】指针变量的定义 格式为:类型名 *指针变量名。二维指针int **p;能够理解为基类型为(int *)类型。 【考点3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。 指针变量两种初始化 方法一:int a=2,*p=&a;(定义的同时初始化) 方法二:int a=2,*p; (定义之后初始化) p=&a; 【考点4】指针变量的引用 &是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。 【考点5】指针的运算 int *p 中 *p 和p 的差别: *p 能够当做变量来用;*的作用是取后面地址p 里面的数值

p 是当作地址来使用。 *p++ 和(*p)++的之间的差别:改错题目中很重要 *p++是地址会变化。 (*p)++ 是数值会要变化。 三名主义:(考试的重点) 数组名:表示第一个元素的地址。数组名不能够自加,他是地址常量名。(考了很多次) 函数名:表示该函数的入口地址。 字符串常量名:表示第一个字符的地址。 考试重要的话语: 指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p 的地方都能够用它等价的代替指向的变量。 例如:int a=2,*p=&a; *p=*p+2; (因为*p 指向变量a,所以指向哪个就等价哪个,这里*p 等价于a,能够相当于是a=a+2)

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

相关主题
文本预览
相关文档 最新文档