文档库 最新最全的文档下载
当前位置:文档库 › 练习1

练习1

福建省C语言二级考试模拟试卷之一
一、选择题。 (本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)
1.不属于字符型常量的是【1】。
【1】 (A)'A' (B)"B"
(C)'\n' (D)'\x72'
2.'\72'在内存中占 【2】 个字节,"\72"在内存中占【3】。
【2】 (A)4 (B)3
(C)2 (D)1
【3】 (A)4 (B)3
(C)2 (D)1
3.字符串"\\\"ABC\"\\"的长度是【4】。
【4】 (A)11 (B)7
(C)5 (D)3
4.设有整型变量i,其值为020;整型变量j,其值为20,执行语句“printf("%d,%d\n",i,j);”后,输出结果是【5】。
【5】 (A)20,20 (B)20,16
(C)16,16 (D)16,20
5.设整型变量x为5,y为2,值为1的表达式是【6】。
【6】 (A)!(y==x/2) (B)y!=x%3
(C)x>0&&y<0 (D)x!=y||x>=y
6.设有整型变量n1、n2,其值均为3,执行语句“n2=n1++,n2++,++n1;”后,n1的值是【7】,n2的值是【8】。
【7】 (A)3 (B)4
(C)5 (D)6
【8】 (A)3 (B)4
(C)5 (D)6
7.执行语句“f=(3.0,4.0,5.0),(2.0,1.0,0.0);”单精度变量f的值是【9】。
【9】 (A)3.0 (B)5.0
(C)2.0 (D)0.0
8.设a、b均为整型变量,下列表达式中不是赋值表达式的是【10】。
【10】 (A)a=3,4,5 (B)a=3*2
(C)a=a&&b (D)a=b=4
9.指出下面不正确的赋值语句是【11】。
【11】 (A)a++; (B)a==b;
(C)a+=b; (D)a=1,b=1;
10.执行下列语句后,a的值是【12】,b的值是【13】,c的值是【14】。
int a,b,c,m=1,n=0;
a=(--m==n++)?--m:++n;
b=m++;
c=--n;
【12】 (A)0 (B)1
(C)2 (D)-1
【13】 (A)0 (B)1
(C)2 (D)-1
【14】 (A)0 (B)1
(C)2 (D)-1
11.指出下列程序执行后的输出结果是【15】。
main()
{
int a=1,b=1;
a+=b+=1;
{int a=10,b=10;
a+=b+=10;
printf("b=%d",b);
}
a*=a*=b*10;
printf("a=%2d\n",a);
}
【15】 (A)b=20 a=180 (B)b=20 a=36
(C)b=20 a=3600 (D)b=20 a溢出
12.C程序的三种基本结构是【16】。
【16】 (A)顺序结构、转移结构、递归结构 (B)顺序结构、嵌套结构、递归结构
(C)顺序结构、选择结构、循环结构 (D)选择结构、循环结构、嵌套结构
13.执行下列程序,输入为1的输出结果是【17】,输入为3的输出结果是【18】。
main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1:
printf("%d\n",k++);
case 2:
printf("%d\n",k++);
case 3:
printf("%d\n",k++);
case 4:
printf("%d\n",k++);
break;
default:
printf("Full! \n");
}
}
【17】 (A) 1 (B) 2 (C) 2 (D) 1
3 2
4 3
5 4
【18】 (A) 3 (B) 4 (C) 3 (D) 4

4 5
14.下面程序中有错误的行号是【19】。
1 #include
2 main()
3 {
4 float s[5];
5 int i,sz=0;
6 for(i=0;i<5;i++)
7 scanf("%f",&s[i]);
8 for(i=0;i<5;i++)
9 sz=sz+s[i];
10 printf("%f\n",sz);
11 }
【19】 (A)没错误 (B)第4行
(C)第7行 (D)第10行
15.以下程序输出的结果是【20】。
#include
#include
main()
{
char s[10]={'C','h','i','n','a'};
printf("%d\n",strlen(s));
}
【20】 (A)7 (B)5
(C)11 (D)12
16.若有以下定义和语句,且0<=i<5,则【21】是对数组元素的错误引用。
int a[]={1,2,3,4,5},*p,i;
p=a;
【21】 (A)*(a+i) (B)a[p-a]
(C)p+i (D)*(&a[i])
17.设有以下一程序段:
int *p,i;
i=100;
p=&i;
i=*p+10;
执行上面的程序段后,i的值为【22】。
【22】 (A)120 (B)110
(C)100 (D)90
18.以下程序的输出结果是【23】。
#include
main()
{
int a[]={1,2,3,4,5,6},*p;
p=a; *(p+3)+=2;
printf("%d,%d\n",*p,*(p+3));
}
【23】 (A)0,5 (B)1,5
(C)0,6 (D)1,6
19.若定义如下,则【24】是对数组元素a[i][j]的错误引用(此处0<=i<4,0<=j<10)。
int a[4][10];
【24】 (A)*(&a[0][0]+10*i+j) (B)*(a+i)[j]
(C)*(*a+i)+j (D)*(a[i]+j)
20.以下程序输出结果是【25】。
#include
main()
{
int a[20],*p[4],i,k=0;
for(i=0;i<20;i++) a[i]=i;
for(i=0;i<4;i++)
p[i]=&a[i*(i+1)];
for(i=0;i<4;i++)
k+=p[i][i];
printf("%d\n",k);
}
【25】 (A)数组元素引用不合法,输出结果不定 (B)26
(C)10 (D)6
21.以下程序输出结果为【26】。
#include
main()
{
char *p[4]={"abcd","efgh","ijkl","mnop"};
char **p1;
int i;
p1=p;
for(i=0;i<2;i++)
printf("%s",p[i]);
printf("\n");
}
【26】 (A)abcdefghijklmnop (B)abcdefgh
(C)abcd (D)ae
22.以下程序段的输出结果是【27】。
#include
main()
{
int s[]={1,2,3,4},i;
int x=0;
for(i=0;i<4;i++)
{
x=sb(s,x);
printf("%d",x);
}
printf("\n");
}
sb(s1,y)
int *s1,y;
{
static int i1=3;
y=s1[i1];
i1--;
return (y);
}
【27】 (A)1234 (B)4321
(C)0000 (D)4444
23.C语言程序的基本单位是【28】。
【28】 (A)字符 (B)程序行
(C)语句 (D)函数
24.选择正确的语句填空,完成求数组最大值程序。
#include
findmax(s,t,k)
int *s,t,【29】;
{
int p;
for(p=0,*k=p;pif(s[p]>s[*k]) 【30】;
}
main()
{
int a[10],i,k;
for(i=0;i<10;i++)
scanf("%d",【31】);
findmax(a,10,【32】);
printf("%d,%d\n",k,a[k]);
}
【29】 (A)k (B)*k
(C)*k[] (D)*k[]
【30】 (A)*k=p-a (B)k=p
(C)k=p-s (D)*k=p


【31】 (A)a[i] (B)a
(C)&a[i] (D)a[]
【32】 (A)&k (B)k
(C)*k (D)i
25.#include
main()
{
int a,b,c,d,e;
a=8512,b=1269,c=2354,d=8795;
printf("%d,%d,%d,%d\n",a,b,c,d);
func(a,b,&c,&d,&e);
printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
}
func(p,q,r,s,t)
int p,q,*r,*s,*t;
{
*t=p+q+*r+*s;
*r=35;
}
程序运行结果为:【33】。
【33】 (A) 8512,1269,2354,8795
8512,1269,2354,8795,0
(B) 8512,1269,2354,8795
8512,1269,2354,8795,9781
(C) 8512,1269,2354,8795
8512,1269,35,8795,20930
(D) 8512,1269,2354,8795
8512,1269,2354,8795,20930
26.#include
main()
{
static char *a[]={"BASIC","FORTRAN","C"};
char **n;
n=a;
f(n);
}
f(m)
char **m;
{
++m;
printf("%s\n",*m);
}
程序运行结果为【34】。
【34】 (A)BASIC (B)ASIC
(C)FORTRAN (D)C
27.在宏定义#define E 2.71828中,宏名E代替一个【35】;在其后程序中使用2.71828,可以用【36】。
【35】 (A)单精度数 (B)双精度数
(C)常量 (D)一串字符
【36】 (A)E (B)e
(C)EXP (D)EXP()
28.源程序文件ex81_81.c:
#include
int a,b;
main()
{
extern func();
a=3;
b=4;
printf("Main1:a=%d,b=%d\n",a,b);
func();
printf("Main2:a=%d,b=%d\n",a,b);
}
源程序文件ex81_82.c:
static func()
{
int a;
extern int b;
a=30;
b=40;
printf("Func:a=%d,b=%d\n",a,b);
return;
}
运行结果是【37】。
【37】 (A)Main1:a=3,b=4
Func:a=30,b=40
Main2:a=30,b=40
(B)Main1:a=3,b=4
Func:a=30,b=40
Main2:a=3,b=40
(C)Main1:a=3,b=4
Func:a=30,b=40
Main2:a=3,b=4
(D)程序是错误的,无结果。
29.设有100个学生的考试成绩数据表如下形式:
学号no 姓名name 成绩score
整型 字符数组型 实型

在下面结构数组的定义中,不正确的是【38】。
【38】 (A)struct student (B)struct stud[100]
{ {
int no; int no;
char name[10]; char name[10];
float score; float score;
} }
struct student stud[10];
(C)struct student (D)struct
{ {
int no; int no;
char name[10]; char name[10];
float score; float score;
}stud[100]; }stud[100];
30.设有如下枚举类型定义:
enum color{red=3,yellow,blue=10,white,black};
其中枚举量black的值是【39】。
【39】 (A)7 (B)15
(C)12 (D)14
31.整数块输入函数fread(&Iarray,2,16,fp)的功能是:【40】。
【40】 (A)从数组Iarray中读取16次2字节数据存储到fp所指的文件中。
(B)从fp所指的数据文件中读取16次2字节的数据存储到数组Iarrayz中。
(C)从数组Iarray中读取2次16字节数据存储到fp所指文件中。
(D)从fp所指的数据文件中读取2次16字

节的数据存储到数组Iarray中。

二、请正确填充下面的过程或程序的划线部分,使其完成所要求的功能: (本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)
1.已知abc+cba=1333,其中a,b,c均为一位数。例如:
617+716=1333
518+815=1333
下面的程序用于求出一组符合上述条件的a、b、c,请在空白处填上合适的语句,以使程序正确运行。
(提示:分别作a、b、c从1到9、步长为1的循环,满足条件(a*100+b*10+c)+
(c*100+b*10+a)=1333)
main()
{
int a,b,c,k=1333;
for(a=1;a<=9;a++)
for(b=1;b<=9;b++)
{
if (a==b)
continue;
for(c=1;c<=9;c++)
{
if ((a==c)||(b==c))
continue;
if (【1】 )
printf("%d%d%d+%d%d%d=%d\n",【2】 );
}
}
}
2.请在以下程序的空白处填上适当的内容,使程序的运行结果为:
5,6,7,8,9,0,1,2,3,4
#include
fun(s,n1,n2)
int *s,n1,n2;
{
int i,j,t;
i=n1;j=n2;
while(i{
t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;
i++;j--;
}
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;
fun(p,0,3);
fun(p,4,【3】);
fun(p,【4】);
for(i=0;i<9;i++)
printf("%d",*(a+i));
printf("%d\n",a[9]);
}
3.下面的程序是对数组中的数据进行排序。请将适当的表达式填入程序的横线内,使其能完成这一操作。
#include
main()
{
int a[12]={2,4,15,3,17,5,8,23,9,7,11,13},i,j,k;
for(k=0;k<11;k++)
for(【5】;i<12;i++)
if(a[i]>【6】)
{
j=a[i];
a[i]=【7】 ;
【8】 =j;
}
for(i=0;i<12;i++)
printf("%4d",a[i]);
printf("\n");
}
4.以下程序用指针指向三个整数型存储单元,输入三个整数,请用适当的表面式填入程序的横线内,使其能完成这一操作。
#include
main()
{
int 【9】;
a=(int*)malloc(sizeof(int));
b=(int*)malloc(sizeof(int));
c=(int*)malloc(sizeof(int));
min=(int*)malloc(sizeof(int));
printf("输入三个整数:");
scanf("%d%d%d",【10】);
printf("输出这三个整数:%4d%4d%4d\n",【11】);
*min=*a;
if(*a>*b) 【12】 ;
if( 【13】) 【14】;
printf("输出最小整数:%d\n",*min);
}
5.以下程序实现DOS系统中内部命令comp file1,file2的功能,两文件经过比较后完全一致时输出OK!,如不一致时,输出首次出
错的行号和出错字符,请用适当的表达式填入程序的横线内,使其能完成这一操作。
#include
#include
extern int errno;
main(argc,argv)
int argc;
char *argv[];
{
【15】 *f1,*f2;
char c1,c2;
int line=1;
if (【16】 )
{
printf("Usage:\n");
printf("comp source_file destination_file\n");
exit(0);
}
f1=fopen(argv[1],"r");
f2=【17】;
if( 【18】)
{
printf(

"ERROR:%d,compare failure!",errno);
exit(0);
}
while ((c1=fgetc(f1))==(c2=fgetc(f2)))
{
if( 【19】)
{
printf("OK!"):
fclose(f1);
fclose(f2);
exit(0);
}
if(【20】) line++;
}
printf("%s isn't the same as %s\n",argv[1],argv[2]);
printf("%s:line%d,char is %c\n",argv[1],line,c1);
printf("%s:line %d,char is %c\n",argv[2],line,c2);
fclose(f1);
fclose(f2);
}



相关文档