本文由忠愚冀贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
做题+继续做题+还是做题=通过二级
全国计算机等级考试 历年真题
一、选择题(每题 2 分,共计 70 分) 选择题(
2007 年 9 月计算机二级考试 C 语言笔试试题
1.(1)软件是指 A)程序 B)程序和文档 D)程序、数据和相关文档的集合
C)算法加数据结构
A
B
C
D
2. (2)软件调试的目的是 A)发现错误 B)改正错误 D)验证软件的正确性
C)改善软件的性能
A
B
C
D
3. (3)在面向对象方法中,实现信息隐蔽是依靠 A)对象的继承 C)对象的封装 B)对象的多态 D)对象的分类
A
B
C
D
4. (4)下列叙述中,不符合良好程序设计风格的是 A)程序的效率第一,清晰第二 C)程序中有必要的注释 B)程序的可读性好
D)输入数据前要有提示信息
A
B
C
D
5. (5)下列叙述中正确的是 A)程序执行的效率与数据的存储结构密切相关 B)程序执行的效率只取决于程序的控制结构 C)程序执行的效率只取决于所处理的数据量 D)以上三种说法都不对
A
B
C
D
6. (6)下列叙述中正确的是 A)数据的逻辑结构与存储结构必定是一一对应的 B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线线结构 D)以上三种说法都不对
A
B
C
D
7. (7)冒泡排序在最坏情况下的比较次数是 A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2
A
B
8. (8)一棵二叉树中共有 70 个叶子结点与 80 个度为 1 的结点,则该二叉树中的总结点数为 A)219 B)221 C)229 D)231
A
B
C
D
9.
(9)下列叙述中正确的是 A)数据库系统是一个独立的系统,不需要操作系统的支持 B)数据库技术的根本目标是要解决数据的共享问题 C)数据库管理系统就是数据库系统 D)以上三种说法都不对
A
B
C
D
10. (10)下列叙述中正确的是 A)为了建立一个关系,首先要构造数据的逻辑关系 B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项 C)一个关系的属性名表称为关系模式 D)一个关系可以包括多个二维表
A
B
C
D
11.(11)C 语言源程序名的后缀是 A).exe B).C C).obj D).cp
A
B
C
D
12.(12)可在 C 程序中用做用户标识符的一组标识符是 A)and _2007 B)Date y-m-d C)Hi D)case
Dr.Tom Bigl
A
B
C
D
13.(13)以下选项中,合法的一组 C 语言数值常量是 A)028 . 5e-3 B)12. C).177 D)0x8A 4c1.5 10,000
OXa23
-0xf
4.5e0
Oabc
3.e5
A
B
C
D
14.(14)以下叙述中正确的是 A)C 语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C 语言规定必须用 main 作为主函数名,程序将从此开始执行,在此结束 D)main 可作为用户标识符,用以命名任意一个函数作为主函数
A
B
15.(15)若在定义语句:int A)scanf("%d",a,b,c); C)scanf("%d",p);
a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是 B)scanf("%d%d%d",a,b,c);
D)scanf("%d",&p);
A
B
C
D
16.(16)以下关于 long、int 和 short 类型数据占用内存大小的叙述中正确的是 A)均占 4 个字节 C)由用户自己定义 B)根据数据的大小来决定所占内存的字节数 D)由 C 语言编译系统决定
A
B
C
D
17.(17)若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是 A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;
A
B
C
D
18.(18)有以下程序段 int j; float y; char name[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入 55566 A)55566.0 B)566.0 C)7777.0
7777abc 后,y 的值为
D)566777.0
A
B
C
D
19.(19)若变量已正确定义,有以下程序段 i=0; do printf("%d,",i);while(i++);
printf("%d\n",i) 其输出结果是 A)0,0 B)0,1 C)1,1 D)程序进入无限循环 A
B
C
D
20.(20)有以下计算公式 若程序前面已在命令中包含 math.h 文件,不能够正确计算上述公式的程序段是 A)if(x>=0) else y=sqrt(x); B)y=sqrt(x) y=sqrt(-x); y=sqrt(-x);
if(x<0)
C)if(x>=0)y=sqrt(x); If(x<0)y=sqrt(-x);
D)y=sqrt(x>=0?x:-x);
A
B
C
D
21.(21)设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是 A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)
D
22.(22)有以下程序 #include main()
{int for(
y=9; y>0;y--) =0) printf("%d",--y);
if(y%3= }
程序的运行结果是 A)741 B)963 C)852 D)875421
A
B
C
D
23.(23)已有定义:char c; ,程序前面已在命令行中包含 ctype.h 文件,不能用于判断 c 中的字符是否为大写字母的表达式是 A)isupper(c) B)’A’<=c<=’Z’ D)c<=(‘2’-32)&&(‘a’-32)<=c
C)’A’<=c&&c<=’Z’
A
B
C
D
24.(24)有以下程序 #include main() {int i,j,m=55;
for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf("%d\n",m); } 程序的运行结果是 A)0 B)1 C)2 D)3
A
B
C
D
25.(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 A)函数的实参和其对应的形参共占同一存储单元
B)形参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元
A
B
C
D
26.(26)已知字符’A’的 ASCⅡ代码值是 65,字符变量 c1 的值是’A’,c2 的值是’D’。执行语句 printf("%d,%d",c1,c2-2);后,输出结果是 A)A,B B)A,68 C)65,66 D)65,68
A
B
C
D
27.(27)以下叙述中错误的是 A)改变函数形参的值,不会改变对应实参的值 B)函数可以返回地址值 C)可以给指针变量赋一个整数作为地址值 D)当在程序的开头包含文件 stdio.h 时,可以给指针变量赋 NULL
A
B
C
D
28.(28)以下正确的字符串常量是 A)"\\\" B)’abc’ C)OlympicGames D)""
A
29.(29)设有定义:char p[]={’1’,’2’,’3’},*q=p; ,以下不能计算出一个 char 型数据所占字节数的表达式是 A)sizeof(p) B)sizeof(char) C) sizeof(*q) D)sizeof(p[0])
A
B
C
D
30.(30)有以下函数 int aaa(char *t=s; *s)
{char
while(*t++); t--; return(t-s); } 以下关于 aaa 函数的功能叙述正确的是 A)求字符串 s 的长度 C)将串 s 复制到串 t B)比较两个串的大小 D)求字符串 s 所占字节数
A
B
C
D
31.(31)若有定义语句:int A)a[0][4] B)a[1][3]
a[3][6]; C)a[0][3]
,按在内存中的存放顺序,a 数组的第 10 个元素是 D)a[1][4]
A
B
C
D
32.(32)有以下程序 #include void {++p; main() {char fun(a); } 程序的运行结果是 A)Afternoon B)fternoon C)Morning D)orning *a[]={"Morning","Afternoon","Evening","Night"}; fun(char **p)
printf("%s\n",*p);}
A
B
C
D
33.(33)若有定义语句:int A)p=a; B)p[0]=a;
a[2][3],*p[3];
,则以下语句中正确的是 D)p[1]=&a;
C) p[0]=&a[1][2];
A
B
C
D
34.(34)有以下程序 #include void {int fun(int t,i,j; (a} *a,int n)/*fun 函数的功能是将 a 所指数组元素从大到小排序*/
for(i=0;ifor(j=i+1;jif main() {int
c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6); for (i=0;i<10;i++) printf("%d,",c);
printf("\n"); } 程序运行的结果是 A)1,2,3,4,5,6,7,8,9,0, C) B)0,9,8,7,6,5,1,2,3,4,
0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
A
B
35.(35)有以下程序 #include int {int fun(char n=0; s[])
while(*s<=’9’&&*s>=’0’) {n=10*n+*s-’0’;s++;} return(n); } main() {char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’}; printf("%d\n",fun(s));
} 程序运行的结果是 A)9 B)61490 C)61 D)5
A
B
C
D
36.(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是 A)scanf() B)getchar() C)gets() D)getc()
A
B
C
D
37.(37)以下关于字符串的叙述中正确的是 A)C 语言中有字符串类型的常量和变量 B)两个字符串中的字符个数相同时才能进行字符串大小的比较 C)可以用关系运算符对字符串的大小进行比较 D)空串一定比空格打头的字符串小
A
B
C
D
38.(38)有以下程序: #include void { while(*t!=0)t++; while((*t++=*s++)!=0); } main() { char ss[10]=”acc”,aa[10]=”bbxxyy”; fun(ss,aa); fun(char *t,char *s)
printf(“%s,%s\n”,ss,aa); } 程序运行结果是 A) C) accxyy , bbxxyy B) acc, bbxxyy
accxxyy,bbxxyy D)
accbbxxyy,bbxxyy
A
B
C
D
39.(39)有以下程序 #include #include void { char t;int i,j; */ fun(char s[][10],int n)
for(i=0;ifor(j=i+1,j/*比较字符串的首字符大小,并交换字符串的首字符 if(s[0])>s[j][0]{t=s[0];s[0]=s[j][0];s[j][0]=t;} } main() { char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc””aabcc”} fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]); } 程序运行结果是 A) C) xy,aaaacc xcc,aabcc B) aaaacc,xy D) acc,xabcc
A
B
C
D
40.(40) A)
在一个 C 语言源程序文件中所定义的全局变量,其作用域为: 所在文件的全部范围 B) 所在程序的全部范围
C)
所在函数的全部范围
D)
说明来决定范围
A
B
C
D
41.(41)有以下程序 #include int int a=1; f(int int c) a=2;
{static c=c+1; return main() { int
(a++)+c;}
i,k=0; a=3;k+=f(a);}
for(i=0;i<2;i++){int k+=a; printf(“%d\n”,k); } 程序运行结果是 A) C) 14 16 B) D) 15 17
A
B
C
D
42.(42)有以下程序 #include void { int fun(int f1,f2; *p=1; n,int *p) if(n==1||n==2) else { fun(n-1,&f1);
fun(n-2,&f2);
*p=f1+f2; } } main() { int s; printf("%d\n",s);
fun(3,&s); }
程序的运行结果是 A)2 B)3 C)4 D)5
A
B
C
D
43.(43)若程序中有宏定义行:#define
N 100
则以下叙述中正确的是
A)宏定义行中定义了标识符 N 的值为整数 100 B)在编译程序对 C 源程序进行预处理时用 100 替换标识符 N C) 对 C 源程序进行编译时用 100 替换标识符 N
D)在运行时用 100 替换标识符 N
A
B
C
D
44.(44)以下关于 typedef 的叙述错误的是 A)用 typedef 可以增加新类型 B)typedef 只是将已存在的类型用一个新的名字来代表 C)用 typedef 可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D)用 typedef 为类型说明一个新名,通常可以增加程序的可读性
A
B
C
D
45.(45)有以下程序 #include
struct {int
tt tt *y;} *p;
x;struct tt
struct main() { int p=a;
a[4]={20,a+1,15,a+2,30,a+3,17,a};
i;
for(i=1;i<=2;i++) } 程序的运行结果是 A)20,30,
p=p->y;}
B)30,17
C)15,30,
D)20,15,
A
B
C
D
46.(46)有以下程序 #include #include typedef struct{ char name[9];char sex; float score[2]; } STU;
STU f(STU a) { STU b={"Zhao",'m',85.0,90.0}; strcpy(a.name,b.name); a. sex=b.sex; a.score=b.score; int i;
for(i=0;i<2;i++) return } main() a;
{STU c={"Qian",'f',95.0,92.0},d; d=f(c); printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]); } 程序的运行结果是
A)Qian,f,95,92
B)Qian,m,85,90
C)Zhao,m,85,90
D)Zhao,f,95,92
A
B
C
D
47.(47)设有以下定义 union data { int d1; float d2; }demo;
则下面叙述中错误的是 A)变量 demo 与成员 d2 所占的内存字节数相同 B)变量 demo 中各成员的地址相同 C)变量 demo 和各成员的地址相同 D)若给 demo.d1 赋 99 后, demo.d2 中的值是 99.0
A
B
C
D
48.(48)有以下程序 #include main() { int a=1,b=2,c=3,x; printf("%d\n",x);
x=(a^b)&c; }
程序的运行结果是 A)0 B)1 C)2 D)3
A
B
C
D
49.(49)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); A)一个文件指针,指向待读取的文件 B)一个整型变量,代表待读取的数据的字节数 C)一个内存块的首地址,代表读入数据存放的地址
,其中 buffer 代表的是
D)一个内存块的字节数
A
B
C
D
50.(50)有以下程序 #include main() {FILE *fp; int a[10]={1,2,3,0,0},i; fp=fopen("d2.dat,"wb"); fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(i
; fclose(fp); for(i=0;i<10;i++) printf("%d",a); } 程序的运行结果是 A)1,2,3,0,0,0,0,0,0,0, B)1,2,3,1,2,3,0,0,0,0,
C)123,0,0,0,0,123,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0,
A
B
C
D
二、填空题(每空 2 分,共计 30 分) 填空题(
1.(1) 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的_[1].
输入答案,中间不含空格:
2. (2) 在两种基本测试方法中, _[2]测试的原则之一是保证所测模块中每一个独立路径至少要执行一次.
输入答案,中间不含空格:
3. (3) 构. 线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的_[3]存储结
输入答案,中间不含空格: 对下列二叉树进行中序遍历的结果为_[4]
4.(4)
输入答案,中间不含空格:
5. (5) 在 E-R 图中距形表示_[5]
输入答案,中间不含空格:
6. (6) 执行以下程序时输入 1234567,则输出结果是_[6]. #include main() { int a=1,b; %d\n",a,b);
scanf("%2d%2d",&a&b);printf("%d }
输入答案,中间不含空格:
7. (7) 以下程序的功能是:输出 a、b、c 三个变量中的最小值.请填空。 #include main() { int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c); t1=at2=cprintf("%d\n",t2); }
输入答案,中间不含空格:
8. (8) 以下程序的输出结果是_[9]. #include main() { int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;} }
输入答案,中间不含空格:
9. (9) 有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("s=%f\n\n",s); 请填空,使下面程序段的功能为完全相同 s=1.0;k=1; while(_[10]){ s=s+1.0/(k*(k+1)); printf("s=%f\n\n",s); _[11];} 输入答案,中间不含空格:
10. (10) 以下程序的输出结果是_[12]. #include main() { int i; printf("%c",i-'a'+'A');
for(i='a';i<'f';i++,i++) printf("\n"); }
输入答案,中间不含空格:
11. (11) 以下程序的输出结果是_[13]. #include #include char *fun(char *p=t; *t)
{ char
return(p+strlen(t)/2); } main() { char *str="abcdefgh";
str=fun(str); puts(str); }
输入答案,中间不含空格:
12. (12)以下程序中函数 f 的功能是在数组 x 的 n 个数(假定 n 个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最
大的数与最后一个数对换.请填空. #include viod { int f(int x[],int n)
p0,p1,i,j,t,m; p0=p1=0; {i=x[m]; p0=m;}
for(m=0;m{ if(x[m]>i) else if(x[m]} t=x[p0]; x[p0]=x[n-1];
x[n-1]=t; _[15]=t;
t=x[p1];x[p1]= } main() { int a[10],u;
_[14];
for(u=0;u<10;u++) scanf("%d",&a); f(a,10); for(u=0;u<10;u++) printf("%d",a); printf("\n"); }
输入答案,中间不含空格:
13. (13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母 A 的个数,num[1]中统计字母 B 的个数,其它依次类推. 用#号结束输入,请填空. #include #include main() { int num[26]={0},i; char c;
while((_[16])!='#') if(isupper(c)) num[c-‘A’]+= _[17];
for(i=0;i<26;i++)
Printf("%c:%d\n",i+'A',num); }
输入答案,中间不含空格:
14. (14)执行以下程序的输出结果是_[18]. #include main() { int i,n[4]={1};
for(i=1;i<=3;i++) { n=n[i-1]*2+1; printf("%d",n); } }
输入答案,中间不含空格:
15. (15) 以下程序的输出结果是_[19]. #include #define #define main() { int k; printf("%d\n",k); M 5 N M+M
k=N*N*5; }
输入答案,中间不含空格:
16. (16)函数 main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空 #include struct node
{ int struct }; int
data; node *next;
min(struct
node *p;
*first)/*指针 first 为链表头指针*/ int m;
{ strct node p=first->next;
m=p->data;p=p->next;
for(;p!=NULL;p=_[20]) if(p->datadata; return m; }
输入答案,中间不含空格: 交卷
1本文由忠愚冀贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
做题+继续做题+还是做题=通过二级
全国计算机等级考试 历年真题
一、选择题(每题 2 分,共计 70 分) 选择题(
2007 年 9 月计算机二级考试 C 语言笔试试题
1.(1)软件是指 A)程序 B)程序和文档 D)程序、数据和相关文档的集合
C)算法加数据结构
A
B
C
D
2. (2)软件调试的目的是 A)发现错误 B)改正错误 D)验证软件的正确性
C)改善软件的性能
A
B
C
3. (3)在面向对象方法中,实现信息隐蔽是依靠 A)对象的继承 C)对象的封装 B)对象的多态 D)对象的分类
A
B
C
D
4. (4)下列叙述中,不符合良好程序设计风格的是 A)程序的效率第一,清晰第二 C)程序中有必要的注释 B)程序的可读性好
D)输入数据前要有提示信息
A
B
C
D
5. (5)下列叙述中正确的是 A)程序执行的效率与数据的存储结构密切相关 B)程序执行的效率只取决于程序的控制结构 C)程序执行的效率只取决于所处理的数据量 D)以上三种说法都不对
A
B
C
D
6. (6)下列叙述中正确的是 A)数据的逻辑结构与存储结构必定是一一对应的 B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构 C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线线结构 D)以上三种说法都不对
A
B
C
D
7. (7)冒泡排序在最坏情况下的比较次数是 A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2
A
B
C
D
8. (8)一棵二叉树中共有 70 个叶子结点与 80 个度为 1 的结点,则该二叉树中的总结点数为 A)219 B)221 C)229 D)231
A
B
C
D
9.
(9)下列叙述中正确的是 A)数据库系统是一个独立的系统,不需要操作系统的支持 B)数据库技术的根本目标是要解决数据的共享问题 C)数据库管理系统就是数据库系统 D)以上三种说法都不对
A
B
C
D
10. (10)下列叙述中正确的是 A)为了建立一个关系,首先要构造数据的逻辑关系 B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项 C)一个关系的属性名表称为关系模式 D)一个关系可以包括多个二维表
11.(11)C 语言源程序名的后缀是 A).exe B).C C).obj D).cp
A
B
C
D
12.(12)可在 C 程序中用做用户标识符的一组标识符是 A)and _2007 B)Date y-m-d C)Hi D)case
Dr.Tom Bigl
A
B
C
D
13.(13)以下选项中,合法的一组 C 语言数值常量是 A)028 . 5e-3 B)12. C).177 D)0x8A 4c1.5 10,000
OXa23
-0xf
4.5e0
Oabc
3.e5
A
B
C
D
14.(14)以下叙述中正确的是 A)C 语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C 语言规定必须用 main 作为主函数名,程序将从此开始执行,在此结束 D)main 可作为用户标识符,用以命名任意一个函数作为主函数
A
B
C
D
15.(15)若在定义语句:int A)scanf("%d",a,b,c); C)scanf("%d",p);
a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是 B)scanf("%d%d%d",a,b,c);
D)scanf("%d",&p);
A
B
C
D
16.(16)以下关于 long、int 和 short 类型数据占用内存大小的叙述中正确的是 A)均占 4 个字节 C)由用户自己定义 B)根据数据的大小来决定所占内存的字节数 D)由 C 语言编译系统决定
A
B
C
D
17.(17)若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是 A)x=y==5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;
18.(18)有以下程序段 int j; float y; char name[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入 55566 A)55566.0 B)566.0 C)7777.0
7777abc 后,y 的值为
D)566777.0
A
B
C
D
19.(19)若变量已正确定义,有以下程序段 i=0; do printf("%d,",i);while(i++);
printf("%d\n",i) 其输出结果是 A)0,0 B)0,1 C)1,1 D)程序进入无限循环 A
B
C
D
20.(20)有以下计算公式 若程序前面已在命令中包含 math.h 文件,不能够正确计算上述公式的程序段是 A)if(x>=0) else y=sqrt(x); B)y=sqrt(x) y=sqrt(-x); y=sqrt(-x);
if(x<0)
C)if(x>=0)y=sqrt(x); If(x<0)y=sqrt(-x);
D)y=sqrt(x>=0?x:-x);
A
B
C
D
21.(21)设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是 A)(EXP= =0) B)(EXP!=0) C)(EXP= =1) D)(EXP!=1)
A
B
C
D
22.(22)有以下程序 #include main()
{int for(
y=9; y>0;y--) =0) printf("%d",--y);
if(y%3= }
程序的运行结果是 A)741 B)963 C)852 D)875421
A
B
C
D
23.(23)已有定义:char c; ,程序前面已在命令行中包含 ctype.h 文件,不能用于判断 c 中的字符是否为大写字母的表达式是 A)isupper(c) B)’A’<=c<=’Z’ D)c<=(‘2’-32)&&(‘a’-32)<=c
C)’A’<=c&&c<=’Z’
A
B
24.(24)有以下程序 #include main() {int i,j,m=55;
for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf("%d\n",m); } 程序的运行结果是 A)0 B)1 C)2 D)3
A
B
C
D
25.(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 A)函数的实参和其对应的形参共占同一存储单元
B)形参只是形式上的存在,不占用具体存储单元 C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元
A
B
C
D
26.(26)已知字符’A’的 ASCⅡ代码值是 65,字符变量 c1 的值是’A’,c2 的值是’D’。执行语句 printf("%d,%d",c1,c2-2);后,输出结果是 A)A,B B)A,68 C)65,66 D)65,68
A
B
C
D
27.(27)以下叙述中错误的是 A)改变函数形参的值,不会改变对应实参的值 B)函数可以返回地址值 C)可以给指针变量赋一个整数作为地址值 D)当在程序的开头包含文件 stdio.h 时,可以给指针变量赋 NULL
A
B
C
D
28.(28)以下正确的字符串常量是 A)"\\\" B)’abc’ C)OlympicGames D)""
A
B
C
D
29.(29)设有定义:char p[]={’1’,’2’,’3’},*q=p; ,以下不能计算出一个 char 型数据所占字节数的表达式是 A)sizeof(p) B)sizeof(char) C) sizeof(*q) D)sizeof(p[0])
A
B
C
D
30.(30)有以下函数 int aaa(char *t=s; *s)
{char
while(*t++); t--; return(t-s); } 以下关于 aaa 函数的功能叙述正确的是 A)求字符串 s 的长度 C)将串 s 复制到串 t B)比较两个串的大小 D)求字符串 s 所占字节数
A
B
C
D
a[3][6]; C)a[0][3]
,按在内存中的存放顺序,a 数组的第 10 个元素是 D)a[1][4]
A
B
C
D
32.(32)有以下程序 #include void {++p; main() {char fun(a); } 程序的运行结果是 A)Afternoon B)fternoon C)Morning D)orning *a[]={"Morning","Afternoon","Evening","Night"}; fun(char **p)
printf("%s\n",*p);}
A
B
C
D
33.(33)若有定义语句:int A)p=a; B)p[0]=a;
a[2][3],*p[3];
,则以下语句中正确的是 D)p[1]=&a;
C) p[0]=&a[1][2];
A
B
C
D
34.(34)有以下程序 #include void {int fun(int t,i,j; (a} *a,int n)/*fun 函数的功能是将 a 所指数组元素从大到小排序*/
for(i=0;ifor(j=i+1;jif main() {int
c[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6); for (i=0;i<10;i++) printf("%d,",c);
printf("\n"); } 程序运行的结果是 A)1,2,3,4,5,6,7,8,9,0, C) B)0,9,8,7,6,5,1,2,3,4,
0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
A
B
C
D
35.(35)有以下程序 #include int {int fun(char n=0; s[])
while(*s<=’9’&&*s>=’0’) {n=10*n+*s-’0’;s++;} return(n); } main() {char s[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’}; printf("%d\n",fun(s));
} 程序运行的结果是 A)9 B)61490 C)61 D)5
A
B
C
D
36.(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是 A)scanf() B)getchar() C)gets() D)getc()
A
B
C
D
37.(37)以下关于字符串的叙述中正确的是 A)C 语言中有字符串类型的常量和变量 B)两个字符串中的字符个数相同时才能进行字符串大小的比较 C)可以用关系运算
A
B
C
D
38.(38)有以下程序: #include void { while(*t!=0)t++; while((*t++=*s++)!=0); } main() { char ss[10]=”acc”,aa[10]=”bbxxyy”; fun(ss,aa); fun(char *t,char *s)
printf(“%s,%s\n”,ss,aa); } 程序运行结果是 A) C) accxyy , bbxxyy B) acc, bbxxyy
accxxyy,bbxxyy D)
accbbxxyy,bbxxyy
A
B
C
D
39.(39)有以下程序 #include #include void { char t;int i,j; */ fun(char s[][10],int n)
for(i=0;ifor(j=i+1,j/*比较字符串的首字符大小,并交换字符串的首字符 if(s[0])>s[j][0]{t=s[0];s[0]=s[j][0];s[j][0]=t;} } main() { char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc””aabcc”} fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]); } 程序运行结果是 A) C) xy,aaaacc xcc,aabcc B) aaaacc,xy D) acc,xabcc
A
B
C
D
40.(40) A)
在一个 C 语言源程序文件中所定义的全局变量,其作用域为: 所在文件的全部范围 B) 所在程序的全部范围
C)
所在函数的全部范围
D)
由具体定义位置和 extern
说明来决定范围
A
B
C
D
41.(41)有以下程序 #include int int a=1; f(int int c) a=2;
{static c=c+1; return main() { int
(a++)+c;}
i,k=0; a=3;k+=f(a);}
for(i=0;i<2;i++){int k+=a; printf(“%d\n”,k); } 程序运行结果是 A) C) 14 16 B) D) 15 17
A
B
C
D
42.(42)有以下程序 #include void { int fun(int f1,f2; *p=1; n,int *p) if(n==1||n==2) else { fun(n-1,&f1);
fun(n-2,&f2);
fun(3,&s); }
程序的运行结果是 A)2 B)3 C)4 D)5
A
B
C
D
43.(43)若程序中有宏定义行:#define
N 100
则以下叙述中正确的是
A)宏定义行中定义了标识符 N 的值为整数 100 B)在编译程序对 C 源程序进行预处理时用 100 替换标识符 N C) 对 C 源程序进行编译时用 100 替换标识符 N
D)在运行时用 100 替换标识符 N
A
B
C
D
44.(44)以下关于 typedef 的叙述错误的是 A)用 typedef 可以增加新类型 B)typedef 只是将已存在的类型用一个新的名字来代表 C)用 typedef 可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D)用 typedef 为类型说明一个新名,通常可以增加程序的可读性
A
B
C
D
45.(45)有以下程序 #include
struct {int
tt tt *y;} *p;
x;struct tt
struct main() { int p=a;
a[4]={20,a+1,15,a+2,30,a+3,17,a};
i;
for(i=1;i<=2;i++) } 程序的运行结果是 A)20,30,
{printf("%d,",p->x);
p=p->y;}
B)30,17
C)15,30,
D)20,15,
A
B
C
D
46.(46)有以下程序 #include #include typedef struct{ char name[9];char sex; float score[2]; } STU;
STU f(STU a) { STU b={"Zhao",'m',85.0,90.0}; strcpy(a.name,b.name); a. sex=b.sex; a.score=b.score; int i;
for(i=0;i<2;i++) return } main() a;
{STU c={"Qian",'f',95.0,92.0},d; d=f(c); printf("%s,%c,%2.0f,%2.0f\n",d.name,d.sex,d.score[0],d.score[1]); } 程序的运行结果是
A)Qian,f,95,92
B)Qian,m,85,90
C)Zhao,m,85,90
A
B
C
D
47.(47)设有以下定义 union data { int d1; float d2; }demo;
则下面叙述中错误的是 A)变量 demo 与成员 d2 所占的内存字节数相同 B)变量 demo 中各成员的地址相同 C)变量 demo 和各成员的地址相同 D)若给 demo.d1 赋 99 后, demo.d2 中的值是 99.0
A
B
C
D
48.(48)有以下程序 #include main() { int a=1,b=2,c=3,x; printf("%d\n",x);
x=(a^b)&c; }
程序的运行结果是 A)0 B)1 C)2 D)3
A
B
C
D
49.(49)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); A)一个文件指针,指向待读取的文件 B)一个整型变量,代表待读取的数据的字节数 C)一个内存块的首地址,代表读入数据存放的地址
,其中 buffer 代表的是
D)一个内存块的字节数
A
B
C
D
50.(50)有以下程序 #include main() {FILE *fp; int a[10]={1,2,3,0,0},i; fp=fopen("d2.dat,"wb"); fwrite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); fp=fopen("d2.dat","rb"); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;i<10;i++) printf("%d",a); } 程序的运行结果是 A)1,2,3,0,0,0,0,0,0,0, B)1,2,3,1,2,3,0,0,0,0,
C)123,0,0,0,0,123,0,0,0,0, D)1,2,3,0,0,1,2,3,0,0,
A
B
C
D
二、填空题(每空 2 分,共计 30 分) 填空题(
1.(1) 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的_[1].
输入答案,中间不含空格:
2. (2) 在两种基本测试方法中, _[2]测试的原则之一是保证所测模块中每一个独立路径至少要执行一次.
输入答案,中间不含空格:
3. (3) 构. 线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的_[3]存储结
输入答案,中间不含空格: 对下列二叉树进行中序遍历的结果为_[4]
4.(4)
5. (5) 在 E-R 图中距形表示_[5]
输入答案,中间不含空格:
6. (6) 执行以下程序时输入 1234567,则输出结果是_[6]. #include main() { int a=1,b; %d\n",a,b);
scanf("%2d%2d",&a&b);printf("%d }
输入答案,中间不含空格:
7. (7) 以下程序的功能是:输出 a、b、c 三个变量中的最小值.请填空。 #include main() { int a,b,c,t1,t2;
scanf("%d%d%d",&a,&b,&c); t1=at2=cprintf("%d\n",t2); }
输入答案,中间不含空格:
8. (8) 以下程序的输出结果是_[9]. #include main() { int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;} }
输入答案,中间不含空格:
9. (9) 有以下程序段,且变量已正确定义和赋值 for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("s=%f\n\n",s); 请填空,使下面程序段的功能为完全相同 s=1.0;k=1; while(_[10]){ s=s+1.0/(k*(k+1)); printf("s=%f\n\n",s); _[11];} 输入答案,中间不含空格:
10. (10) 以下程序的输出结果是_[12]. #include main() { int i; printf("%c",i-'a'+'A');
for(i='a';i<'f';i++,i++) printf("\n"); }
输入答案,中间不含空格:
11. (11) 以下程序的输出结果是_[13]. #include #include char *fun(char *p=t; *t)
{ char
return(p+strlen(t)/2); } main() { char *str="abcdefgh";
str=fun(str); puts(str); }
输入答案,中间不含空格:
12. (12)以下程序中函数 f 的功能是在数组 x 的 n 个数(假定 n 个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最
大的数与最后一个数对换.请填空. #include viod { int f(int x[],int n)
p0,p1,i,j,t,m; p0=p1=0; {i=x[m]; p0=m;}
i=j=x[0];
for(m=0;m{ if(x[m]>i) else if(x[m]} t=x[p0]; x[p0]=x[n-1];
x[n-1]=t; _[15]=t;
t=x[p1];x[p1]= } main() { int a[10],u;
_[14];
for(u=0;u<10;u++) scanf("%d",&a); f(a,10); for(u=0;u<10;u++) printf("%d",a); printf("\n"); }
输入答案,中间不含空格:
13. (13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母 A 的个数,num[1]中统计字母 B 的个数,其它依次类推. 用#号结束输入,请填空. #include #include main() { int num[26]={0},i; char c;
while((_[16])!='#') if(isupper(c)) num[c-‘A’]+= _[17];
for(i=0;i<26;i++)
Printf("%c:%d\n",i+'A',num); }
输入答案,中间不含空格:
14. (14)执行以下程序的输出结果是_[18]. #include main() { int i,n[4]={1};
for(i=1;i<=3;i++) { n=n[i-1]*2+1; printf("%d",n); } }
输入答案,中间不含空格:
int k; printf("%d\n",k); M 5 N M+M
k=N*N*5; }
输入答案,中间不含空格:
16. (16)函数 main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空 #include struct node
{ int struct }; int
data; node *next;
min(struct
node *p;
*first)/*指针 first 为链表头指针*/ int m;
{ strct node p=first->next;
m=p->data;p=p->next;
for(;p!=NULL;p=_[20]) if(p->datadata; return m; }
输入答案,中间不含空格: 交卷
1本文由忠愚冀贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
做题+继续做题+还是做题=通过二级
全国计算机等级考试 历年真题
一、选择题(每题 2 分,共计 70 分) 选择题(
2007 年 9 月计算机二级考试 C 语言笔试试题
1.(1)软件是指 A)程序 B)程序和文档 D)程序、数据和相关文档的集合
C)算法加数据结构
A
B
C
D
2. (2)软件调试的目的是 A)发现错误 B)改正错误 D)验证软件的正确性
C)改善软件的性能
A
B
C
D
3. (3)在面向对象方法中,实现信息隐蔽是依靠 A)对象的继承 C)对象的封装 B)对象的多态 D)对象的分类
A
B
C
D
4. (4)下列叙述中,不符合良好程序设计风格的是 A)程序的效率第一,清晰第二 C)程序中有必要的注释 B)程序的可读性好
D)输入数据前要有提示信息
A
B
C
D
5. (5)下列叙述中正确的是 A)程序执行的效率与数据的存储结构密切相关 B)程序执行的效率只取决于程序的控制结构 C)程序执行的效率只取决于所处理的数据量 D)以上三种说法都不对
A
B
《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0
8、有以下程序: #include
嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,
C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include
a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include
一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B
笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )
2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)
2014-06-13 06:30:01 阅读( 135 ) 标签: 一、选择题(1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2 B)2,3,4,l C)3,1,4,2 D)3,4, 2,1
答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l 先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序B)冒泡排序C)插入排序D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2 B)3 C)4 D)5 答案:C
评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1 B)n C)n+l D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构 B)软件体系结构C)软件结构测试D)软件控制过程 答案:B
c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表
B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较
================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B
能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;
二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构占总分1% 2、数据类型及其运算占总分4% 3、选择结构程序设计占比分的3% 4、循环结构占比分的5% 5、数组的定义和引用占比分的5% 6、函数占比分的5% 7、编译预处理占比分1% 8、指针占比分的5% 9、结构体占比分的3% 10、位运算占比分的2% 11、文件操作占比分的2% 考试方式 上机考试,时长120分钟 单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题) 第一部分 C语言知识复习资料 第一章C语言基本知识(90分) 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。
【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。 【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。
计算机二级C++考试复习资料(全) 一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup博士并不是从头开始设计新语言,而是在C语言的基础上进行创建。这就是C++语言。 1985年,C++开始在外面慢慢流行。经过多年的发展,C++已经有了多个版本。为次,ANSI和ISO的联合委员会于1989年着手为C++制定标准。1994年2月,该委员会出版了第一份非正式草案,1998年正式推出了C++的国际标准。 (二) C和C++ C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C 程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。 C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 二、关键字和变量 C++相对与C增加了一些关键字,如下: typename bool dynamic_cast mutable namespace static_cast using catch explicit new virtual operator false private template volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool型变量和wchar_t型变量: 布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。 #include iostream.h int main() { bool flag; flag=true; if(flag) cout< return 0; }
c语言笔试题答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)
笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void)
{ char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2) 6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S
第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用
最新大学C语言考试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 [i] t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# 语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a全国计算机等级考试二级笔试样卷C语言程序设计(含答案)
全国计算机等级考试二级笔试样卷C语言程序设计 【打印】【字体:大中小】【关闭】 一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A)源程序要文档化B)数据说明的次序要规范化 C)避免滥用goto语句D)模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A)概要设计与详细设计B)数据设计与接口设计
C)软件结构设计与数据设计 D)过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试B)概要设计 C)软件维护 D)详细设计 (4)在数据库系统中,用户所见的数据模式为 A)概念模式B)外模式C)内模式D)物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运行阶段 D)物理设计 (6)设有如下三个关系表 R S T
下列操作中正确的是 A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S (7)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 (8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63 B)64 C)6 D)7 (9)数据库技术的根本目标是要解决数据的
一、选择题(1)~(10)每小题2分,? (11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构??? ??B)紧凑结构和非紧凑结构 C)线性结构和非线性结构??? D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2??? B)2,3,4,l C)3,1,4,2 ???D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序??? B)冒泡排序??? C)插入排序??? D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2??? ??B)3?????? C)4 ???????D)5 答案:C
评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1??? B)n??? C)n+l ?????D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构?? ??B)软件体系结构??? C)软件结构测试??? D)软件控制过程 答案:B 评析:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。 (7)模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚??? 的一类是_______。 A)顺序性内聚? ???B)过程性内聚? ????C)逻辑性内聚??? D)功能性内聚 答案:D 评析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。 (8)数据存储和数据流都是_______,仅仅是所处的状态不同。 A)分析结果??? B)事件??? C)动作??? D)数据 答案:D 评析:数据流图有4种成分:源点或终点、处理、数据存储和数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。 (9)数据的完整性是指数据的正确性、有效性和_______。 A)可维护性??? B)独立性??? C)安全性??? D)相容性
程序流程图中带有箭头的线段表示的是()。 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 参考答案:C 【解析】在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C)。 结构化程序设计的基本原则不包括()。 A) 多态性 B) 自顶向下 C) 模块化 D) 逐步求精 参考答案:A 【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。 软件设计中模块划分应遵循的准则是()。 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 参考答案:B 【解析】软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 在软件开发中,需求分析阶段产生的主要文档是()。 A) 可行性分析报告 B) 软件需求规格说明书 C) 概要设计说明书 D) 集成测试计划 参考答案:B 【解析】A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 算法的有穷性是指()。 A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的 C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用
【解析】算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。 对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。 A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序 参考答案:D 【解析】除了堆排序算法的比较次数是,其他的都是n(n-1)/2。 下列关于栈的叙述正确的是()。 A) 栈按"先进先出"组织数据 B) 栈按"先进后出"组织数据 C) 只能在栈底插入数据 D) 不能删除数据 参考答案:B 【解析】栈是按"先进后出"的原则组织数据的,数据的插入和删除都在栈顶进行操作。 在数据库设计中,将E-R图转换成关系数据模型的过程属于()。 A) 需求分析阶段 B) 概念设计阶段 C) 逻辑设计阶段 D) 物理设计阶段 参考答案:C 【解析】E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 有三个关系R、S和T如下: 由关系R和S通过运算得到关系T,则所使用的运算为()。 A) 并 B) 自然连接 C) 笛卡尔积 D) 交
C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include
c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对