二级c语言 公共知识点,[二级c语言报名]二级c语言公共知识点

本文深入解析了二级C语言考试中必知的关键知识点,包括main()函数参数理解、宏定义的使用、文件包含与操作、内存管理函数如calloc(), free(), malloc(),以及文件概念与文件指针。通过实例演示,助你轻松应对C语言二级考试。
摘要由CSDN通过智能技术生成

c语言是计算机二级考试重要科目,那么你对二级c语言了解多少呢?以下是由答 案 网 ZqNF.Com小编整理关于二级c语言公共知识点的内容,希望大家喜欢!

二级c语言公共知识点

1.知识点:main()函数的参数

l 定义形式:main(int argc,char *argv[])

{…

}

l int argc是命令行中的字符串数,char *argv[]是指向字符串的指针数组,系统使用空格把各个字符串隔开。

2.知识点:不带参数的宏定义

l 一般形式:#define 宏名 字符串(或数值)

即用字符串或数值取代宏名。

l 宏名一般采用大写字母表示,以与变量名区别,也可用小写字母。

l 宏定义不是c语句,不必在行末加分号。

例1:(2009-04-36)有以下程序

#include

#define pt 3.5;

#define s(x) pt*x*x;

main()

{int a=l,b=2;printf("%4.1f\n",s(a+b));}

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

a)14.0 b)31.5 c)7.5 d)程序有错无输出结果

【解析】此题考查宏的定义形式。由于宏定义并不是语句,故#define后面不能有分号,故该程序有错无法输出结果,所以,正确答案:d。

例2:(2011-03-30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define n 10

void fun(int x[n])

{ inti=0;

while(i

}在程序中下划线处应填入的是

a)x+i b)&x[i+1] c)x+(i++) d)&x[++i]

答案:c

【解析】要求给每个元素赋值,while循环的变量i必须不断增加,所以a、b显然不行,i++是先参与运算在自增1,++i是先自增1再参与运算,所以d会出现x[0]未赋值的情况,故选c。

l 对程序中用“”括起来的字符串内的字符,即使与宏名相同,也不进行置换。

l 宏定义可以嵌套使用,例如:

#define r 3.0

#define pi 3.14159

#define l l*pi*r

3.知识点:带参数的宏定义

l 一般形式:#define 宏名(参数表) 字符串

l 带参数的宏不占运行时间,只占编译时间;只是简单、机械字符替换;宏名无类型。

l 要注意有括号和没括号的区别

例1:(2009-09-35)有以下程序

#include

#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)

a)10,64 b)10,10 c)64,10 d)64,64

【解析】本题考点为带参数的宏定义,宏定义中的参数没有类型,仅为字符序列,不能当作表达式运算。宏展开时,把实参字符串原样写在替换文本中。s=f(a+1)=a+1*a1*a+1=10;t=f((a+1))= (a+1)* (a+1)* (a+1)=64

例2:(2011-03-35)有以下程序

#define s(x) 4*(x)*x+1

main()

{ intk=5,j=2;

printf("%d\n",s(k+j));

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

a)197 b)143 c)33 d)28

【解析】#define宏定义,只是机械简单的置换s(k+j)=s(5+2)=4*(5+2)*5+2+1=143

4.知识点:文件包含

l 一般形式:#include 或者#include “文件名”

l < >与” ”的区别:<>即系统到存放c库函数头文件的目录中寻找要包含的文件;” ”即系统先在用户当前目录中寻找,若找不到,再到存放c库函数头文件的目录中寻找。

l 文件包含可以嵌套。

l 凡是以“#”开头的行都是预处理命令行。

5.知识点:calloc()函数

l 函数原型:void *calloc(unsigned n,unsigned size);

l 功能:分配n个数据项的内存连续空间,每个数据项的大小为size

6.知识点:free()函数

l 函数原型:void free(void *p);

l 功能:释放p所指的内存区

7.知识点:malloc()函数

l 函数原型:void *malloc(unsigned size);

l 功能:分配size字节的存储区

例1:(2011-03-14)以下程序运行后的输出结果是 emoclew 。

main()

{ char *p; int i;

p=(char *)malloc(sizeof(char)*20);

strcpy(p,"welcome");

for(i=6;i>=0;i--) putchar(*(p+i));

printf("\n"); free(p);

}

【解析】(char*)malloc(sizeof(char)*20)申请一个20个字符大小的空间,首地址赋给字符指针变量p,strcpy(p,"welcome");将字符串"welcome"赋值给p所指向的空间,for循环实现从后往前输出这个字符串,free(p)为释放申请的空间。

8.知识点:文件的概念和文件指针

l 在c程序中文件可以用顺序方式存取,可以用随机方式存取。

l c程序把文件分为ascii文件(文本文件)和二进制文件。

例1:(2009-09-40)下列关于c语言文件的叙述中正确的是(c)

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

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

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

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

【解析】本题考点为文件的基本概念。正确答案为c。c语言中根据数据的组织形

式,分为二进制文件和ascii码文件。一个c文件时一个字节序列或者二进制序列,而不是一个记录(结构)序列。

l 文件类型指针:file *fp;fp是一个指向file类型结构体的指针变量,通过文件指针变量找到与它相关的文件。

例2:(2010-09-15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。

#include

main()

{ file *fp;

char a[5]={‘1’,’2’,’3’,’4’,’5’},i;

fp=fopen(“f.txt”,”w”);

for(i=0;i<5;i++)fputc(a[i],fp);

fclose(fp);

}二级c语言报名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值