2013年9月全国计算机等级《二级C语言程序设计》考前冲刺试卷四
-
请编写函数proc,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如,若二维数组中的数据为
13 23 33 43
14 24 34 44
15 25 35 45
则一维数组中的内容应该是13 23 33 43 14 24 34 44 15 25 35 45。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#include
void proc(int(*s)[103,int*b,int*n,int rain.int nn)
{
}
void main
{
int arr[10][10]={{33,33,33,33),{44,44,44,44},
{55,55,55,55}),i,j;
int a[l00]={o),n=o;
printf("The matrix:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%3d",arr[i][j]):
printf("\n");
}
proc(arr,a,&n,3,4):
printf("The A array:\n");
for(i=0;i
printf("%3d",a[i]):
printf("\n\n");
}
-
请补充函数proc,该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成一个无符号长整数,并且逆序输出。结果由函数返回。例如,输入:1234567,结果输出:7654321。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填人所编写的若干表达式或语句。
试题程序:
#include
#include
#include stdio.h>
#include
unsigned long proc(char*str)
{
unsigned long t=0:
int k:
int i=0;
i=str|en(str);
for(【1】;i>=0;i--)
{
k=【2】;
t=【3】;
}
return t;
}
void main
{
char str[8];
system("CLS");
printf("Enter a string made up of'0'to
'9 ' digital character:\n");
gets(str);
printf("The string,is:%s\n",str);
if(strlen(str)>8)
printf("The string is too tong!");
else
printf("The result:%1u\n",
proc(str));
}
-
下列给定程序中,函数p roc的功能是:先将字符串s 中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#include
void proc(char*s,char*t)
{
int i,s1;
s1=strlen(s);
for(i=0;i
//****found****
t[i]=s[s1];
for(i=0;i
t[s1+i]一s[i];
t[2*s1]='\O0;
}
void main
{
char s[100],t[100];
system("CLS");
print{("\nPlease enter string s:");
scanf("%s",s);
proc(s,t);
printf("The result is:%s\n",t);
}
-
设
- 设a=l,b=2,c=3,d=4,则表达式:“aA.4
- B.3
- C.2
- D.1
-
以下程序的输出结果是( )。
main
{ char w[][10]={"ABCD","EFGH","IJKL","
MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);
- A.ABCD
- FGH KL
- B.ABCD
- EFG U
- C.EFG
- JK O
- D.EFGH UKL
-
有以下程序:
#include
main
{ int x=4,y;
do
{ y=x;
if(!y)printf("x");
else
printf("y"):
x--;
}while(x);
}
程序的输出结果是( )。
- A. xyyx
- B.yyyy
- C.yyxx
- D.yxyx
-
下面程序输出的是( )。
main
{ int t=l;fun(fun(t));}
fun(int h)
{ static int a[3]={1.2.3};
int k;
for(k=0;k<3;k++)a[k]+=a[k]-h;
for(k=0;k<3;k++)printf("%d",a[k]);
printf("\n");
return(a[h]);}
- A.1,2,3, 1,5,9,
- B.1,3,5, 1,3,j,
- C.1,3,5, 0,4,8,
- D.1,3。5, -1,3,7,
-
以下程序的输出结果是( )。
main
{int x=0.5;char z='a';
printf("%d\n",(x&1)&&(z<'2'));}
- A.0
- B.1
- C.2
- D.3
-
有以下程序
#include
void fun(char**p)
{++p;printf("%s",*p);}
main
{char*a[]={"Morning","Afternoon","Evening"," Night");
fun(a);
}
程序的运行结果是( )。
- A.Afternoon
- B.fternoon
- C.Morning
- D.orning
-
在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是( )。
- A.数据库系统
- B.文件系统
- C.人工管理
- D.数据项管理
-
有以下程序:
int fun(int x)
{ int p;
if(x==0||x==1)return(3);
p=x-fun(x-2);
return p;
}
main
{ printf("%d\n",fun(7));}
执行后的结果是( )。
- A.7
- B.3
- C.2
- D.0
-
下列选项中不合法的十六进制数是( )。
- A."0"xff
- B."0"X11
- C."0"x1g
- D.”0”Xabc
-
若有定义和语句:
int**pp),*P,a=20,b=10;
pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);
则输出结果是( )。
- A.20,10
- B.20,20
- C.10,20
- D.10,10
-
有以下程序:
main
{ int a[]=(2,4,6,8,10},y=0,x,*P;
p=&a[1];
for(x=1;x<3;x++) y+=p[x];
printf("%d\n,y");
}
程序运行后的输出结果是( )。
- A.10
- B.11
- C.14
- D.15
-
下列程序的运行结果是( )。
#include
#define ADD(x) x+x
main
{ int m=1,n=2,k=3;
int S=ADD(m+n)*k;
printf("s=%d",s);
}
- A. sum=18
- B.sum=10
- C.sum=9
- D.sum=25
-
对如下二叉树进行后序遍历的结果为( )。
- A.ABCDEF
- B.DBEAFC
- C.ABDECF
- D.DEBFCA
-
下列程序的输出结果是( )。
#include
main( )
{ int i,S=0;
for(i=1;i<10;i++)
if(!(i%2)&&!(i%3))s+=i;
printf("%d\n",s);
}
- A.4
- B.39
- C.45
- D.6
-
下列叙述中正确的是( )。
- A.只能在循环体内和switch语句体内使用break语句
- B.eotinue语句的作用是结束整个循环的执行
- C.在循环体内使用break语句或continue语句的作用相同
- D.从多层循环嵌套中退出时,只能使用got0语句
-
下列程序的运行结果是( )。
#include
void fun(int*S,int*p)
{ static int t=3:
*p=s[t];
t--;
}
void main
{ int a[]={2,3,4,5),k;
int x;
for(k=0,k<4,k++)
{ fun(a,&x);
printf("%d,",x);
}
}
- A.5,4,3,2
- B.2,3,4,5
- C.2,2,2,2
- D.5,5,5,5
-
在单链表中,增加头结点的目的是( )。
- A.方便运算的实现
- B.使单链表至少有一个结点
- C.标识表结点中首结点的位置
- D.说明单链表是线性的链式存储实现
-
设在C语言中,float类型数据占4个字节,则double 类型数据占( )个字节。
- A.1
- B.2
- C.8
- D.4
-
下列程序的输出结果是( )。
main
{ int a,b,d=25;
- a=d/10%9;
- b=a&&(一1); printf("%d,%d\n",a,b);}
- A.6,1
- B.2,1
- C.6,0
- D.2,0
-
有下列程序:
main
{int i,s=0,t[]={1,2,3,4,5,6,7,8,9);
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
程序执行后的输出结果是( )。
- A.45
- B.20
- C.25
- D.36
-
有以下程序:
fun(int x)
{ int P;
if(x==0 || x==l)return(3);
p=x-fun(x-2);
return p;
}
main
{printf("%d\n",fun(7));}
程序执行后的输出结果是( )。
- A.7
- B.3
- C.2
- D.0
-
对线性表进行二分法检索,其前提条件是( )。
- A.线性表以顺序方式存储,并按关键码值排好序
- B.线性表以顺序方式存储,并按关键码的检索频率排好序
- C.线性表以链式方式存储,并按关键码值排好序
- D.线性表以链式方式存储,并按关键码的检索频率排好序
-
若有说明“char s1[30]="abc",s2[]="defghi";",则在使用函数stoat(s1,s2)后,结果是( )。
- A.s1的内容更新为abcdefghi
- B.s1的内容更新为defghi\0
- C.s1的内容更新勾defghiabc\0
- D.s1的内容更新为abcdefghi\0
-
下列叙述中错误的是( )。
- A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
- B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
- C.在C语言中,外部变量的隐含类型是自动存储类别
- D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
-
有以下程序:
void swap(char*x,char*y)
{ char t;
t=*x;*x=*y;*y=t;
}
main
{ char*s1="abe",*s2="123":
swap(s1,s2);
printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是( )。
- A.123,abe
- B.abc.123
- C.1bc,a23
- D.321,cba
-
已有定义:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是( )。
- A.isupper(c)
- B.'A'<=c<='Z '
- C.'A'<=c&&c<='Z'
- D.c<=('z'-32)&&('a'-32)<=c
-
若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是( )。
int t[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]= &t[k][0];
- A.t[2][0]
- B.t[2][2]
- C.t[1][2]
- D.t[2][1]
-
若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是( )。
for(i=6;i>0;i--)
for(j=0;j<4;j++){…}
- A.20
- B.24
- C.25
- D.30
-
用链表表示线性表的优点是( )。
- A.便于随机存取
- B.花费的存储空间较顺序存储少
- C.便于捅入和删除操作
- D.数据元素的物理顺序与逻辑顺序相同
-
设有定义:“int a;float b;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b 的值分别是( )。
- A.876和543.000000
- B.87和6.000000
- C.87和6543.000000
- D.76和543.000000
-
能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是( )。
- A.(x>=1)&&(x<=10)&&(x>=100)&&(X< =110)
- B.(x>=1)
- C.
- D.(x<2=10)
- E.
- F.(x>=100)
- G.
- H.(x<=1l0) (x>=1)&&(x<=10) (x>=100)&&(x<= 110) (x>=1) (x<=10)&&(x>=100) (x<=l 10)
-
有以下程序:
main( )
{ int k=5,n=0;
do
{ switch(k)
{ case 1:
case 3:n+=l;k--;break;
defalut:n=0;k--;
case 2:
case 4:n+=2;k--;break:
}
printf("%d",n);
}while(k>0&&n<5);
}
程序运行后的输出结果是( )。
- A.235
- B.0235
- C.02356
- D.2356
-
若整型变量
- 若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式aA.1
- B.2
- C.3
- D.4
-
若有以下定义:
char a;int b;
float c;double d;
则表达式a*b+d-c值的类型为( )。
- A. float
- B.int
- C.char
- D.double
-
若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。
- A.scanf("%d",a,b,c);
- B.scanf("%d%d%d",a,b,c):
- C.scanf("%d",p);
- D.scanf("%d",&p);
-
下列程序的输出结果是( )。
#include
main
{ int i;
for(i=1;i<=10,i++)
{ if((i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i;
}
- A.49
- B.36
- C.25
- D.64
-
若a为int类型,且其值为3,则执行完表达式a+= a-=a*a后,a的值是( )。
- A.-3
- B.9
- C.-12
- D.6
-
设fun函数的定义形式为
void fun(char ch,float x){…}
则下列对函数fun的调用语句中,正确的是( )。
- A. fun("abc",3.0);
- B.t=fun('D'.16.5);
- C.fun('65',2.8);
- D.fun(32,32);
-
有以下程序:
main
{int i,j;
for(j=10;j<11;j++)
{ for(i=9;i
if(!(j%i))break;
if(i==j-1)
printf("%d",j);
}
}
输出结果是( )。
- A.11
- B.10
- C.9
- D.10 11
-
定义下列结构体(联合)数组:
struct st
{ char name[15];
int age;
}a[10]={"ZHA0",14,"WANG",15,"LIU",16," ZHANG",17);
执行语句printf("%d,%C",a[2].age,*(a[3].name+ 2))的输出结果为( )。
- A.15,A
- B.16,H
- C.16,A
- D.17,H