c语言函数知识点 c语言函数知识点测试

C语言包括哪些知识点

数据类型,运算符与表达式;程序结构:顺序,选择,循环; 数组,函数,预处理命令,指针,结构体与共用体,文件,位运算;

创新互联建站专注于北辰企业网站建设,响应式网站设计,商城网站建设。北辰网站建设公司,为北辰等地区提供建站服务。全流程按需规划网站,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

当然,C程序的灵魂是算法。

c语言的难点

c学起来也不是很难,主要是指针和其他的知识点入数组、函数等组合起来难理解一些

要想学习,主要有几点需要注意

一、记忆部分

1、保留字,如if,int,for等

2、常规的结构,如条件,循环,switch、数组的结构,指针定义,结构体的定义等

3、语法的构成,如printf,scanf等一些语句的构成

4、一些系统带的函数,常用的要记住,如strlen,printf等

5、一些经典的算法,如素数的计算,排序的写法等

二、算法,语法等

这个就是解决问题的方法,没有好的捷径,只要慢慢的积累,数学方面的算法要加深

其实,c基础也就是那么一些基础点

1、保留字

2、定义变量等,int,float等

3、条件语句if,选择语句switch,循环,do--while、for、while、goto

4、注意逗号语句,scanf和printf要熟练,知道格式(这个很基础,用错了很麻烦)

5、数组,这里注意二维数组和字符串的一些函数

6、指针,这个是难点,也就是说很难理解,特别是和数组函数结构体等结合使用的时候

7、结构体共用体,这个不难,就是繁琐而已。这里涉及到链表,其实不难理解,可以想象成一串珠子,next指针就是串珠子的线,结构体就是珠子

8、文件操作,这个就是套用格式,没难度

9、宏定义,这个没难度,就是最简单的直接替换。注意一点就是在定义宏的时候多用几个括号增加优先级没坏处

10、函数。这个难度不大,主要是要理解,参数是在调用的时候另外开辟内存空间。除了数组和用定义的参数。要不然子函数改变了参数变量,调用它的地方的变量时不会改变的

其实就是这些基本的知识点

计算机国二c语言,考试内容是什么?有哪些知识点?说详细点!

您好,SA团队给出的答案(直接给你试题看看吧,这样比较详细)2009年9月全国计算机等级考试笔试试卷

二级公共基础知识和C语言程序设计

(考试时间90分钟,满分100分)

一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题1分,70分)

(1)下列数据结构中,属于非线性结构的是( )。

A)循环队列 B)带链队列

C)二叉树 D)带链栈

(2)下列数据结构中,能够按照“先进后出”原则存取数据的是( )。

A)循环队列 B)栈

C)队列 D)二叉树

(3)对于循环队列,下列叙述中正确的是( )。

A)队头指针是固定不变的

B)队头指针一定大于队尾指针

C)队头指针一定小于队尾指针

D)队头指针可以大于队尾指针,也可以小于队尾指针

(4)算法的空间复杂度是指( )。

A)算法在执行过程中所需要的计算机存储空间

B)算法所处理的数据量

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的临时工作单元数

(5)软件设计中划分模块的一个准则是( )。

A)低内聚低耦合B)高内聚低耦合

C)低内聚高耦合D)高内聚高耦合

(6)下列选项中不属于结构化程序设计原则的是( )。

A)可封装 B)自顶向下 C)模块化 D)逐步求精

(7)软件详细设计产生的图如下:

begin

1

该图是( )。

A)N-S图 B)PAD图

C)程序流程图D)E-R图

(8)数据库管理系统是( )。

A)操作系统的一部分B)在操作系统支持下的系统软件

C)一种编译系统D)一种操作系统

(9)在E-R图中,用来表示实体联系的图形是( )。

A)椭圆形 B)矩形 C)菱形 D)三角形

(10)有三个关系R,S和T如下:

2

R S T

A

B

C

A

B

C

A

B

C

a

1

2

d

3

2

a

1

2

b

2

1

b

2

1

c

3

1

c

3

1

d

3

2

其中关系T由关系R和S通过某种操作得到,该操作为( )。

A)选择 B)投影 C)交 D)并

(11)以下叙述中正确的是( )。

A)程序设计的任务就是编写程序代码并上机调试

B)程序设计的任务就是确定所用数据结构

C)程序设计的任务就是确定所用算法

D)以上三种说法都不完整

(12)以下选项中,能用作用户标识符的是( )。

A)void B)8_8 C)_0_ D)unsigned

(13)阅读以下程序

# include stdio.h

main()

{ int case; float printF;

printf ("请输入2个数:");

scanf ("%d %f", case, printF);

printf ("%d %f\n", case, printF);

}

该程序在编译时产生错误,其出错原因是( )。

A)定义语句出错,case是关键字,不能用作用户自定义标识符

B)定义语句出错,printF不能用作用户自定义标识符

C)定义语句无错,scanf不能作为输入函数使用

D)定义语句无错,printf不能输出case的值

(14)表达式:(int)((double)9/2)-(9)%2的值是( )。

A)0 B)3 C)4 D)5

(15)若有定义语句:int x=10;,则表达式x-=x+x的值为( )。

A)-20 B)-10 C)0 D)10

(16)有以下程序

# include stdio.h

main()

{ int a=l, b=0;

printf ("%d,", b=a+b);

printf ("%d\n", a=2*b);

}

程序运行后的输出结果是( )。

A)0,0 B)1,0 C)3,2 D)1,2

(17)设有定义:int a=l, b=2, c=3;,以下语句中执行效果与其它三个不同的是( )。

A)if(ab)c=a,a=b,b=c; B)if(ab){c=a,a=b,b=c;}

C)if(ab)c=a;a-b;b=c; D)if(ab){c=a;a-b;b=c;}

(18)有以下程序

# include stdio.h

3

main()

{ int c=0, k,

for(k=1; k3; k++)

switch (k)

{ default: c+=k;

case 2: c++; break;

case 4: c+=2; break;

}

printf("%d\n", c);

}

程序运行后的输出结果是( )。

A)3 B)5 C)7 D)9

(19)以下程序段中,与语句:k=ab?(bc ? 1 : 0) : 0;功能相同的是( )。

A)if((ab) (bc)) k=l; B)if((ab)||(bc))k=l;

else k=0; else k=0;

C)if(a=b)k=0; D)if(ab) k=l;

else if(b=c)k=1; else if(bc)k=1;

else k=0;

(20)有以下程序

# include stdio.h

main()

{ char s[]={"012xy"}; int i, n=0;

for (i=0; s[i]!=0; i++)

if(S[i]='a' s[i]='z') n++;

printf("%d\n",n);

}

程序运行后的输出结果是( )。

A)0 B)2 C)3 D)5

(21)有以下程序

# include stdio.h

main()

{ int n=2,k=0;

while (k++ n++2);

printf("%d %d\n",k,n);

}

程序运行后的输出结果是( )。

A)0 2 B)1 3 C)5 7 D)l 2

(22)有以下定义语句,编译时会出现编译错误的是( )。

A)char a='a'; B)char a='\n'; C)char a='aa'; D)char a='\x2d';

(23)有以下程序

# include stdio.h

main()

{ char c1,c2;

c1='A'+'8'-'4';

c2='A'+'8'-'5';

printf("%c,%d\n",c1,c2);

4

}

已知字母A的ASCII码为65,程序运行后的输出结果是( )。

A)E,68 B)D,69 C)E,D D)输出无定值

(24)有以下程序

# include stdio.h

void fun (int p)

{ int d=2;

p=d++; printf("%d",p);}

main()

{ int a=1;

fun(a); printf("%d\n",a);}

程序运行后的输出结果是( )。

A)32 B)12 C)21 D)22

(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。

# define MIN -2147483647

int findmax (int x[],int n)

{ int i,max;

for(i=0;in;i++)

{ max=MIN;

if(maxx[i]) max=x[i];}

return max;

}

造成错误的原因是( )。

A)定义语句int i,max;中max未赋初值

B)赋值语句max=MIN;中,不应给max赋MIN值

C)语句if(maxX[i])max=X[i];中判断条件设置错误

D)赋值语句max=MIN;放错了位置

(26)有以下程序

# include stdio.h

main()

{ int m=1, n=2, *p=m, *q=n, *r;

r=p; p=q; q=r;

printf("%d,%d,%d,%d\n",m,n,*p,*q);

}

程序运行后的输出结果是( )。

A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2

(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i4,则错误的赋值是( )。

A)p=a B)q[i]=a[i] C)p=a[i] D)p=a[2][1]

(28)有以下程序

# include stdio.h

# include string.h

main()

{ char str[][20]={"One*World","One*Dream!"},*p=str[1];

printf("%d,",strlen(p));printf("%s\n",p);

}

5

程序运行后的输出结果是( )。

A)9,One*World B)9,One*Dream! C)10,One*Dream! D)10,One*World

(29)有以下程序

# include stdio.h

main()

{ int a[]={2, 3, 5, 4}, i;

for(i=0;i4;i++)

switch(i%2)

{ case 0 : switch(a[i]%2)

{case 0 : a[i]++;break;brcase 1 : a[i]--;br}break;

case 1 : a[i]=0;

}

for(i=0;i4;i++)printf("%d",a[i]);printf("\n");

}

程序运行后的输出结果是( )。

A)3 3 4 4 B)2 0 5 0 C)3 0 4 0 D)0 3 0 4

(30)有以下程序

# include stdio.h

# include string.h

main()

{ char a[10]="abcd";

printf("%d,%d\n",strlen(a),sizeof(a));

}

程序运行后的输出结果是( )。

A)7,4 B)4,10 C)8,8 D)10,10

(31)下面是有关C语言字符数组的描述,其中错误的是( )。

A)不可以用赋值语句给字符数组名赋字符串

B)可以用输入语句把字符串整体输入给字符数组

C)字符数组中的内容不一定是字符串

D)字符数组只能存放字符串

(32)下列函数的功能是( )。

fun(char *a,char *b)

{ while((*b=*a)!='\0') {a++; b++;} }

A)将a所指字符串赋给b所指空间

B)使指针b指向a所指字符串

C)将a所指字符串和b所指字符串进行比较

D)检查a和b所指字符串中是否有'\0'

(33)设有以下函数:

void fun(int n,char *s) {……}

则下面对函数指针的定义和赋值均正确的是( )。

A)void (*pf)(); pf=fun; B)void *pf(); pf=fun;

C)void *pr(); *pf=fun; D)void(*pf)(int,char);pf=fun;

(34)有以下程序

# include stdio.h

6

int f(int n);

main()

{ int a=3,s;

s=f(a);s=s+f(a);printf("%d\n",s);

}

int f(int n)

{ static int a=1;

n+=a++;

return n;

}

程序运行后的输出结果是( )。

A)7 B)8 C)9 D)10

(35)有以下程序

# include stdio.h

# define f(x) x*x*x

main()

{ int a=3,s,t;

s=f(a+1);t=f((a+1));

printf("%d,%d\n",s,t);

}

程序运行后的输出结果是( )。

A)10,64 B)10,10 C)64,10 D)64,64

(36)下面结构体的定义语句中,错误的是( )。

A)struct ord {int x; int y; int z;}; struct ord a;

B)struct ord {int x; int y; int z;} struct ord a;

C)struct ord {int x; int y; int z;}a;

D)struct {int x; int y; int z;} a;

(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是( )。

A)char str[]="string";c=str; B)scanf("%s",c);

C)c=getchar(); D)*c=*string";

(38)有以下程序

# include stdio.h

# include string.h

Struct A

{ int a; char b[10]; double c;};

struct A f(struct A t);

main()

{ struct A a={1001,"ZhangDa",1098.0};

a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);

}

struct A f(Struct A t)

{ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;return t;}

程序运行后的输出结果是( )。

A)1001,ZhangDa,1098.0 B)1002,ZhangDa,1202.0

C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0

(39)若有以下程序段

7

int r=8;

printf("%d\n",r1);

输出结果是( )。

A)16 B)8 C)4 D)2

(40)下列关于C语言文件的叙述中正确的是( )。

A)文件由一系列数据依次排列组成,只能构成二进制文件

B)文件由结构序列组成,可以构成二进制文件或文本文件

C)文件由数据序列组成,可以构成二进制文件或文本文件

D)文件由字符序列组成,其类型只能是文本文件

二、填空题(每空2分,共30分)

(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

(2)程序流程图中的菱形框表示的是【2】。

(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中【3】阶段产生“软件需求规格说明书”。

(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为【4】。

(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是【5】。

(6)若有定义语句:int a=5;,则表达式:a++的值是【6】。

(7)若有语句double x=17; int y;,当执行y=(int)(x/5)%2;之后y的值为【7】。

(8)以下程序运行后的输出结果是【8】。

# include stdio.h

main()

{ int x=20;

printf("%d",0x20);

printf("%d\n",0x x20); }

(9)以下程序运行后的输出结果是【9】。

# include stdio.h

main()

{ int a=1,b=7;

do {

b=b/2; a+=b;

} while (b1);

printf ("%d\n",a); }

(10)有以下程序

# include stdio.h

main()

{ int f,fl,f2,i;

f1=0; f2=1;

printf("%d %d",fl,f2);

for(i=3;i=5;i++)

{ f=fl+f2; printf("%d",f);

f1=f2; f2=f;

}

printf("\n");

}

程序运行后的输出结果是【10】。

8

(11)有以下程序

# include stdio.h

int a=5;

void fun(int b)

{ int a=10;

a+=b; printf("%d",a);

}

main()

{ int c=20;

fun(c); a+=c; printf("%d\n",a);

}

程序运行后的输出结果是【11】。

(12)设有定义:

struct person

{ int ID; char name[12];}p;

请将scanf("%d", 【12】); 语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。

(13)有以下程序

# include stdio.h

main()

{ char a[20]="How are you?",b[20];

scanf("%s",b); printf("%s %s\n",a,b);

}

程序运行时从键盘输入:How are you?回车

则输出结果为【13】。

(14)有以下程序

# include stdio.h

typedef struct

{ int num; double s; } REC;

void funl(REC x) {x.num=23; x.s=88.5;}

main()

{ REC a={16,90.0};

funl (a);

printf("%d\n",a.num);

}

程序运行后的输出结果是【14】。

(15)有以下程序

# include stdio.h

fun(int x)

{ if(x/20) fun(x/2);

printf("%d", x);

}

main()

{ fun(6); printf("\n"); }

程序运行后的输出结果是【15】。

C语言程序设计这门课程第八章函数进阶(中级)的知识点有哪些?

C语言程序设计这门课第八章函数进阶(中级)的知识点包含【中级】第48讲-参数的2种传递方式,【中级】第49讲-编写一个strlwr函数,【中级】第50讲-数组作为函数参数,【中级】第51讲-指针数组作为函数参数,【中级】第52讲-指向指针的指针作为函数参数,【中级】第53讲-结构体作为函数参数,【中级】第54讲-函数的作用范围,【中级】第55讲-变量的作用范围,。

计算机二级考试《C语言》知识点归纳(3)

第六章

指针变量的本质是用来放地址,而一般的变量是放数值的。

int *p 中 *p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p里面的数值

p是当作地址来使用。

*p++ 和 (*p)++的之间的差别:改错题目中很重要

*p++是 地址会变化。

(*p)++ 是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,

他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

第七章

1一维数组的重要概念:

对a[10]这个数组的讨论。

1、a表示数组名,是第一个元素的地址,也就是

元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者

是a=a+2赋值的都是错误的。

3、a是一维数组名,所以它是列指针,也就是

说a+1是跳一列。

对a[3][3]的讨论。

1、a表示数组名,是第一个元素的地址,也就是

元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者

是a=a+2赋值的都是错误的。

3、a是二维数组名,所以它是行指针,也就

是说a+1是跳一行。

4、a[0]、a[1]、a[2]也都是地址常量,不可以对

它进行赋值操作,同时它们都是列指针,a[0]+1,

a[1]+1,a[2]+1都是跳一列。

5、注意a和a[0] 、a[1]、a[2]是不同的,它们的

基类型是不同的。前者是一行元素,后三者是一列元素。

二维数组做题目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。

步骤一:把他们写成:

第一列 第二列 第三列

a[0]à 1 2 3 -第一行

a[1]à 4 5 6—第二行

a[2]à 7 8 9-第三行

步骤二:这样作题目间很简单:

*(a[0]+1)我们就知道是第一行的第一个元素往后

面跳一列,那么这里就是a[0][1]元素,所以是1。

*(a[1]+2)我们就知道是第二行的第一个元素往后面

跳二列。那么这里就是a[1][2]元素,所以是6。

一定记住:只要是二维数组的题目,一定是写成如

上的格式,再去做题目,这样会比较简单。

数组的初始化,一维和二维的,一维可以不写,

二维第二个一定要写

int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。

但int a[4][]={2,3,4}非法。

二维数组中的行指针

int a[1][2];

其中a现在就是一个行指针,a+1跳一行数组元素。

搭配(*)p[2]指针

a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组

元素。搭配*p[2]指针数组使用

还有记住脱衣服法则:

a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再

可以变成 *(*(a+2)+3)

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)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。

关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If 是可以做为用户标识符。因为If 中的第一个字母大写了,所以不是关键字。

【知识点7】实型数据

实型数据的.合法形式:小数形式和指数形式。掌握判定指数形式合法性。

2.333e-1 就是合法的,且数据是2.333×10-1。

【知识点8】字符

字符数据的合法形式::

1 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

0 的ASCII 数值表示为48,a 的ASCII 数值是97,A的ASCII 数值是65。

字符型和整数是近亲:

char a = 65 ;

printf(“%c”, a); 得到的输出结果:a

printf(“%d”, a); 得到的输出结果:65

一般考试表示单个字符错误的形式:65 "1"

字符是可以进行算术运算的,记住: 0-0=48

大写字母和小写字母转换的方法: A+32=a 相互之间一般是相差32。

【知识点9】整型数据

整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节:

考试时候一般会说,在16 位编译系统,或者是32 位系统。碰到这种情况,不要去管,

一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4 个字节就可以了。

【知识点10】转义字符

转义字符的考查:

在程序中 int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x 必须存在。

在程序中 int a = 06d, 是一个八进制的形式。

在转义字符中, ’x6d’ 才是合法的,0 不能写,并且x 是小写。

‘141’ 是合法的, 0 是不能写的。

‘108’是非法的,因为不可以出现8。

【知识点11】算术运算

算术运算符一共有+、—、*、/、%这五个。%符号两边要求是整数。不是整数就错了。

三种取整丢小数的情况:不是四舍五入是舍掉小数部分。

1、int a =1.6;

2、(int)a;

3、1/2; 3/2;

【知识点12】强制类型转换

将一个运算对象转换成指定类型,格式为(类型名)表达式

一定是 (int)a 不是 int(a),注意类型上一定有括号的。

注意(int)(a+b) 和(int)a+b 的区别。前是把a+b 转型,后是把a 转型再加b。

【知识点13】赋值

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

复合赋值运算符:注意:a*=m+2 是 a=a*(m+2)

自加、自减表达式:假设a=5,++a(表达式的值为6), a++(表达式的值为5);

j=a++;等价于j=a;a=a+1; 而j=++a;等价于a=a+1;j=a;。

考试口诀:++在前先加后用,++在后先用后加。

【知识点14】逗号运算

逗号表达式:优先级别最低; 表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

【知识点15】数制转换

一定要记住二进制 如何转换成十进制。

八进制是没有8 的,逢8 进1,018 的数值是非法的。


本文题目:c语言函数知识点 c语言函数知识点测试
浏览路径:http://scyanting.com/article/hihghg.html