(36) 有如下程序 #define N 2
#define M N+1
#define NUM 2*M+1
main( )
{ int i;
for(i=1;i<=NUM;i++)
printf(“%d\n”,i);
}
该程序中的for循环执行的次数是( )
A) 5B) 6 C) 7 D) 8
(37) 有以下函数 char fun(char *p)
{ return p; }
该函数的返回值是( )
A) 无确切的值 B) 形参p中存放的地址值
B) 一个临时存储单元的地址 D) 形参p自身的地址值
(38) 有如下程序段 int a=14,b=15,x;
char c=’A’;
x=(a&&b)&&(c
执行该程序段后,x的值为( )
A) true B) false C) 0D) 1
(39) 有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;
则数值为9的表达式是( )
A) *p+9B) *(p+8) C) *p+=9 D) p+8
(40) 若有以下的定义:int
t[3][2];能正确表示t数组元素地址的表达式是( ) A) &t[3][2] B) t[3]C) t[1] D) t[2]
(41) 有如下程序 main( )
{ char ch[2][5]={“6937”, ”8254”},
*p[2]; int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i]; for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’;
j+=2) s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
} 该程序的输出结果是( )
A) 69825 B) 63825C) 6385 D) 693825
(42)若有以下的定义:
int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a;
则值为3的表式是()
A)p+=2, *(p++)B)p+=2,*++p
C)p+=3, *p++D)p+=2,++*p
(43)假定所有变量均已正确说明,下列程序段运行后x的值是()
a=b=c=0; x=35;
if(!a) x--;
else if(b);if(c) x=3;else x=4;
A)34B)4C)35D)3
(44)在以下一组运算符中,优先级最高的运算符是()
A)<=B)=C)%D)&&
(45)若有以下定义和语句:
int w[2][3],(*pw)[3];pw=w;
则对w数组元素非法引用是()
A)*(w[0]+2)=*w[0][2]B)*(pw+1)[2]
C)pw[0][0]=*w[0][0]D)*(pw[1]+2)=*w[1][2]
(46)若有以下程序片段:
char str[]="ab\n\012\\\"";
printf("%d\n", strlen(str));
上面程序片段的输出结果是()
A)3B)4C)6 D)12
(47)函数调用strcat(strcpy(str1,str2),str3)的功能是()
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3中
(48)以下对C语言函数的有关描述中,正确的是()
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B) C函数既可以嵌套定义又可以递归调用
解释:C函数可以递归调用,但不允许嵌套定义
C)函数必须有返回值,否则不能使用函数
D) C程序中有调用关系的所有函数必须放在同一个源程序文件中
(49)以下叙述中不正确的是()
A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值.
B)在C中,调用函数时,实在参数和对应形参在类型上只需赋值兼容.
C)在C中,外部变量的隐含类别是自动存储类别.
D)在C中,函数形参可以说明为register变量.
(50)以下程序的输出结果是()
#define sub1(char a, char b){char c; c=a;a=b;b=c;}
#define sub2(char*a, char b){char c; c=*a;*a=b;b=c;}
#define sub3(char*a, char*b){char c; c=*a;*a=*b;*b=c;}
main()
{char a,b;
a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);putchar(b);
a='A';b='B';sub1(a,b);putchar(a);putchar(b);
}
A)BABBABB)ABBBBA
C)BABABAD)BAABBA
(51) 错误的转义字符是 ( )A) '\091' B) '\\' C) '\0' D) '\''
(52) 设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,
b和c的值分别是
( )
A) 2, 1, 2B) 2,
0, 3 C) 2, 2, 3 D) 2, 1, 3
(53) 在C语言中,错误的常数是 ( ) A)
1E+0.0 B) 5 C) 0xaf D) 0L
( 54) 设int k; 则语句for(k=0; k=1; k++);和
语句for(k=0; k==1;k++);执行的次数分别是 ( )A) 无限和0 B) 0和无限 C) 都是无限 D) 都是0
(55)某文件中定义的静态全局变量(或称静态外部变量)其作用域是( )
A) 只限某个函数B) 本文件
C) 跨文件 D)不限制作用域
二、程序填空题:
(10) 函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
现在请你在下面的函数中填空,完成求π的功能。 #include “math.h”
double pi(long n) { double s=0.0; long
i; for(i=1;i<=n;i++)
s=s+1.0/(i*i)
; return(sqrt(6*s));
}
(14)以下函数用来在w数组中插入x, w数组中的数已按由小到大顺序存放, n所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.
void fun (int*w,intx, int *n)
{ int i,p;
p=0;
w[*n]=x;
while (x>w[p])p++;
for(i=*n;i>p;i--)w[i]=w[i-1];
w[p]=x;
++ *n;
}
(15)fun1函数的调用语句为: fun1(&a, &b, &c);它将三个整数按由大到小的顺序调整后依次放入a,b,c三个变量中,a中放最大数。请填空.
void fun2 (int *x,int *y)
{ int t;
t=*x;*x=*y;*y=t;
}
void fun1 (int *pa,int *pb,int *pc)
{ if (*pc>*pb)fun2(pc,pb);
if (*pa
if (*pa
}
16.任意输入三条边(a,b,c)后,若能构成三角形且为等腰、等边和直角,则分别输出DY、DB和ZJ,若不能构成三角形则输出NO。main(){float a, b, c, a2, b2, c2;scanf("%f%f%f", &a, &b, &c);printf("%5.1f,%5.1f,%5.1f", a, b, c);if(a+b>c && b+c>a && a+c>b){if(a==b || a==c || b==c)printf("DY");if(a==b && b==c)printf("DB");a2=a*a;b2=b*b;c2=c*c;if(a2+b2==c2 || a2+c2==b2 || b2+c2==a2)printf("ZJ");printf("\n");}else printf("NO\n");}
17.输出下列图形。1 2 3 4 5 6 7 8 92 3 4 5 6 7 8 9
3 4 5 6 7 8 94 5 6 7 8 95 6 7 8 96 7 8 97 8 98 99
main()
{int i, j;for(i=1;i<=9; i++)
{for(j=i; j<=9; j++)printf("-", j);
printf("\n");} }
三、程序分析题阅读下列程序,将输出结果分别写到各题右侧的空白处。16.main(){int a=3, b=9, c=2;if(a)if(b) printf("]]]\n", a, b, c);}
程序运行结果:ﺏﺏﺏﺏ3ﺏﺏﺏﺏ9ﺏﺏﺏﺏ217.void change(int *x, int y){int t;t=*x; *x=y; y=t;}main( ){int a=3, b=5;change(&a,b);printf("a=%d,b=%d\n",a,b);}
程序运行结果:a=5,b=5
18.main( )
{int j;for(j=4; j>=2; j--)switch( j ){case 0: printf("%4s","ABC");case 1: printf("%4s","DEF");case 2: printf("%4s","GHI");break;case 3: printf("%4s","JKL");default: printf("%4s","MNO");}printf("\n");}程序运行结果:ﺏMNOﺏJKLﺏMNOﺏGHI
19.main( )
{staticint j,a[6]={1,2};for(j=3; j<6; j++)a[j]=a[j/2]+a[j%3]-a[j-2];for(j=0; j<6; j++)printf("]",a[j]);printf("\n");}
程序运行结果:ﺏﺏﺏﺏ1ﺏﺏﺏﺏ2ﺏﺏﺏﺏ0ﺏﺏﺏﺏ1ﺏﺏﺏﺏ2ﺏﺏﺏﺏ-1
20.int a=10;int f(int a){int b=0; static int c=3;a++; ++c; ++b;return a+b+c;}main(){int i;for(i=0;i<2;i++)print("]",f(a));printf("\n");}
程序运行结果:ﺏﺏﺏ16ﺏﺏﺏ17
21.#define N 2#define M N+1#define NUM 2*M+1int fib(int n){return n<3?2:fib(n-1)+fib(n-2);}main(){printf("]]\n",NUM,fib(5));}
程序运行结果:ﺏﺏﺏﺏ6ﺏﺏﺏ10
22.假设在DOS提示符下显示源程序如下(PROG.exe程序也在C
盘中):C:\>type PROC.cmain(int argc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf("\n");}写出执行下列命令后的输出结果C:\>PROG 2008 OLYMPIC BEIJING <回车>
程序运行结果:BEIJINGOLYMPIC2008
2004年4月二级C语言笔试试题及参考解答
一、选择题:
1、1MB等于(
) A) 1000字节
B) 1024字节
C)
1000*1000字节
D)
1024*1024字节2、与十六进制数200等值的十进制数为(
) A) 256 B) 512C) 1024 D) 2048
3、所谓"裸机"是指(
) A) 单片机 B) 单板机
C) 不装备任何软件的计算机 D) 只装备操作系统的计算机 4、能将高级语言编写的源程序转换为目标程序的是(
)A) 链接程序 B) 解释程序 C) 编译程序 D) 编辑程序5、在64位计算机中,一个字长所占字节数为(
)A) 64 B) 8 C) 4 D) 1
6、在Windows环境下,当一个应用程序窗口被最小化后,该应用程序(
)A) 继续在后台运行 B) 继续在前台运行C) 终止运行D) 暂停运行 7、在Windows环境下,能实现窗口移动的操作是(
)A)用鼠标拖动窗口中的任何部位
B)用鼠标拖动窗口的边框C)用鼠标拖动窗口的控制按钮
D)用鼠标拖动窗口的标题栏8、在Windows环境下,PrintScreen键的作用是(
)A)打印当前窗口的内容
B)打印屏幕内容C)复制屏幕到剪贴板
D)复制当前窗口到剪贴板9、Internet的通信协议是(
)A)TCP/IP B)BBS C)WWW D)FTP
10、下列叙述中正确的是(
)A)计算机病毒只感染可执行文件
B)计算机病毒只感染文本文件C)计算机病毒只能通过软件复制的方式进行传播D)计算机病毒可以通过网络或读写磁盘方式进行传播11、一个算法应该具有"确定性"等5个特性,下面对另外4个特性的描述中错误的是(
) A)有零个或多个输入
B)有零个或多个输出
C) 有穷性 D)可行性
12、以下叙述中正确的是(
)A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译13、以下符合C语言语法的实型常量是(
) A)1.2E0.5 B)3.14.159E C).5E-3 D)E15
14、以下4组用户定义标识符中,全部合法的一组是()A) _main B) If C) txt D) int
enclude -max REAL k_2
sin turbo 3COM _001
15、若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3 B)1+2=x2 C)x3=0x12 D)x4=1+2=3;
16、设有以下定义int a=0;
double b=1.25;
char c=’A’;
#define d 2 则下面语句中错误的是( ) A)a++; B)b++ C)c++; D)d++;
17、设有定义:float
a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是(
)A)(a+b)*h/2 B)(1/2)*(a+b)*h C)(a+b)*h*1/2 D)h/2*(a+b)
18、有以下程序
main( )
{ int x=102,y=012;
printf("-,-\n",x,y);
}执行后输出结果是()
A)10,01 B) 002,12 C)102,10 D)02,10
19、以下4个选项中,不能看作一条语句的是()
A) {;} B)a=0,b=0,c=0; C)if(a>0); D)if(b==0) m=1;n=2;
20、设有定义:int
a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(
)
A)scanf("%d",pa);
B)scanf("%d",a);
C)scanf("%d",&pa); D)scanf("%d",*pa);
21、以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()A) if ((a>b)&&(b>c))
k=1; else k=0;
B) if ((a>b)||(b>c))
k=1;else k=0;
C) if (a<=b) k=0;
D) if (a>b) k=1;
else if(b<=c) k=1;
else if(b >c) k=1;
else k=0;
22、有以下程序main( )
{ char k; int i;
for(i=1;i<3;i++)
{ scanf("%c",&k);
switch(k)
{ case ’0’: printf("another\n");
case ’1’: printf("number\n");
}
} } 程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是(
)A) another B) another C) another D)
number
number number number number
another number
23、有以下程序
main( )
{ int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}程序执行后的输出结果是(
)A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5
24、有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果是()
A)自然数1~9的累加和
B)自然数1~10的累加和
C)自然数1~9中的奇数之和
D)自然数1~10中的偶数之