模拟卷十二.docx
《模拟卷十二.docx》由会员分享,可在线阅读,更多相关《模拟卷十二.docx(19页珍藏版)》请在冰豆网上搜索。
模拟卷十二
综合模拟试卷(十二)
一、选择题
(1)程序的3种基本控制结构是
A)过程、子过程和分程序 B)顺序、选择和重复
C)递归、堆栈和队列 D)调用、返回和转移
(2)算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是
A)有零个输入或多个输入
B)高效性
C)有穷性
D)确定性
(3)已知inta=6;则执行a+=a-=a*a;语句后,a的值为
A)36
B)0
C)-24
D)-60
(4)下面各选项中,均是C语言标识符的选项组是
A)forchinato
B)long_123short56_do
C)voidunion_342
D)text.txt_023_3ew
(5)下列表达式中,结果为5的是
A)6*5%6
B)5*-2+15
C)5+75_
D)6+-2/3
(6)下列常量中,为不合法的实型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
(7)关于C语言的主函数描述正确的是
A)C程序可以有多个main函数
B)C程序必有一个而且只能有一个main函数
C)C程序可以没有main函数
D)C程序的执行不一定在main函数开始执行
(8)已知inta=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是
A)-1
B)0
C)1
D)语句错误
(9)已知inta,b;doublec;则以下语句中错误的函数调用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
(10)已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值为
A)1
B)2
C)3
D)4
(11)若intk=8;则执行下列程序后,变量k的正确结果是
voidmain()
{
intk=8;
switch(k)
{case9:
k+=1;
case10:
k+=1;
case11:
k+=1;break;
default:
k+=1;
}
printf("%d\n",k);
}
A)12
B)11
C)10
D)9
(12)若inti,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是
A)9
B)8
C)3
D)2
(13)下列程序的输出结果是
#include"stdio.h"
voidmain()
{
inti=6;
while(i--)
printf("%d",--i);
printf("\n");
}
A)531
B)420
C)654321
D)死循环
(14)阅读下列程序,则执行结果是
#include"stdio.h"
voidmain()
{
inta=0,b=0,c=0,i;
for(i=0;i<4;i++)
switch(i)
{case0:
a=i++;
case1:
b=i++;
case2:
c=i++;
case3:
i++;
}
printf("%d,%d,%d,%d\n",a,b,c,i);
}
A)0,1,3,4
B)1,2,3,4
C)0,1,2,5
D)0,2,3,4
(15)已知charch=′C′;则以下表达式的值是
ch=(ch>=′A′&&ch<=′Z′)?
(ch+32):
ch;
A)A
B)a
C)Z
D)c
(16)以下描述错误的是
A)C程序中,函数可以直接或间接的调用自己
B)函数调用时,函数名必须与所调用的函数名字完全一致
C)函数说明语句中的类型必须与函数返回值的类型一致
D)实参数可以与形参个数不一致
(17)阅读下面程序,则执行后的结果为
#include"stdio.h"
voidmain()
{fun3(fun1(),fun2());}
fun1()
{
intk=20;
returnk;
}
fun2()
{
inta=15;
returna;
}
fun3(inta,intb)
{
intk;
k=(a-b)*(a+b);
printf("%d\n",k);
}
A)0
B)184
C)175
D)编译不通过
(18)阅读下面程序,则执行后的输出结果为
#include"stdio.h"
fun(inta,intb)
{
ints;
s=a*b/2;
printf("%d\n",s);
}
voidmain()
{
inta=10,b=16;
fun(a,b);
}
A)10
B)16
C)160
D)80
(19)阅读下面程序,则程序执行后的结果为
#include"stdio.h"
voidmain()
{
inta=4,b=6,c=7;
doubled,fun(int,int,int);
d=fun(a,b,c);
printf("%lf\n",d);
}
doublefun(inta,intb,intc)
{
doubles;
s=a%b*c;
returns;
}
A)27
B)27.000000
C)28
D)28.000000
(20)下列不合法的指针变量的定义是
A)int*_k;
B)char*_245;
C)int*p;
D)double*5_is
(21)下列关于指针变量赋空值的说法错误的是
A)当赋空值的时候,变量指向地址为0的存储单元
B)赋值语句可以表达为变量名=′\0′;
C)赋值语句可以表达为变量名=0;
D)一个指针变量可以被赋空值
(22)阅读下面程序,则执行后输出的结果为
#include"stdio.h"
voidfun(int*a,int*b)
{
intm;
m=(*a+*b)*(*a+*b);
m+=(*a-*b)*(*a-*b);
printf("%d\n",m);
}
voidmain()
{
inta=5,b=6,*x=&a,*y=&b;
fun(x,y);
}
A)120
B)121
C)122
D)123
(23)阅读下面程序,则输出结果是
#include"stdio.h"
voidfun(int*a,int*b)
{
intc=20,d=25;
*a=c/3;
*b=d/5;
}
voidmain()
{
inta=3,b=5;
fun(&a,&b);
printf("%d,%d\n",a,b);
}
A)6,5
B)5,6
C)20,25
D)3,5
(24)以下对一维数组c进行正确的定义初始化的语句是
A)intc[10]=0;
B)intc[10]={0}*10;
C)intc[1]={0,0,0,0,0,0,0};
D)intc[10]={0};
(25)以下二维数组c的定义形式是
A)intc[3][]
B)floatc[3,4]
C)doublec[3][4]
D)floatc(3)(4)
(26)阅读下列程序,则执行后输出的结果是
#include"stdio.h"
intk=1;
voidmain()
{
fun(k);
printf("%d\n",k);
}
fun(intk)
{
k++;
k=k*6;
}
A)1
B)2
C)6
D)12
(27)已知#defineM2;的宏定义,执行语句k=M*5;后,k的值是
A)10
B)5
C)2
D)以上答案都不对
(28)已知:
intc[3][4];则对数组元素引用正确的是
A)c[1][4]
B)c[1.5][0]
C)c[1+0][0]
D)以上表达都错误
(29)现有如下程序段
#include"stdio.h"
voidfun(int*a,int*b,int*c)
{*c=*a+*b;}
voidmain()
{
inta[2]={12,23},c;
fun(a,a+1,&c);
printf("%d\n",c);
}
则程序的输出结果为
A)23
B)12
C)0
D)35
(30)若有以下语句,则正确的描述是
chara[]="toyou";
charb[]={′t′,′o′,′y′,′o′,′u′};
A)a数组和b数组的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)a数组等价于b数组
(31)已知:
chara[15],b[15]={"Ilovechina"};则在程序中能将字符串Ilovechina赋给数组a的正确语句是
A)a="Ilovechina";
B)strcpy(b,a);
C)a=b;
D)strcpy(a,b);
(32)阅读下面程序,则执行后的结果为
#include"stdio.h"
voidmain()
{
char*str="abcdefghijklmnopq";
while(*str++!
=′e′);
printf("%c\n",*str);
}
A)f
B)a
C)e
D)q
(33)现有如下程序段
#include"stdio.h"
intfun(intk,int*m)
{
if(k%3)*m=k*k;
else*m=k/3;
}
voidmain()
{
int(*p)(int,int*),m;
p=fun;
(*p)(78,&m);
printf("%d\n",m);
}
则程序段的输出结果为
A)24
B)25
C)26
D)27
(34)阅读下列程序,则执行后的输出结果为
#include"stdio.h"
fun(intx)
{
if(x/2>0)fun(x/2);
printf("%d",x%2);
}
voidmain()
{
fun(20);
putchar(′\n′);
}
A)11100
B)10100
C)10101
D)10110
(35)阅读如下程序段,则执行后程序的输出结果是
voidmain()
{
structa{intx;inty;}num[2]={{20,5},{6,7}};
printf("%d\n",num[0].x/num[0].y*num[1].y);
}
A)0
B)28
C)20
D)5
(36)阅读程序段,则执行后的输出结果为
#include"stdio.h"
typedefunion{longx[2];
inty[4];
charz[8];
}atx;
typedefstructaa{longx[2];
inty[4];
charz[8];
}stx;
voidmain()
{
printf("union=%d,structaa=%d\n",sizeof(atx),sizeof(stx));
}
A)union=8,structaa=8
B)union=8,structaa=24
C)union=24,structaa=8
D)union=24,structaa=24
(37)阅读下列程序段
#include"stdio.h"
typedefstructaa
{inta;
structaa*next;
}M;
voidset(M*k,inti,int*b)
{
intj,d=0;
for(j=1;j
{
k[j-1].next=&k[j];
k[j-1].a=b[d++];
}
k[j].a=b[d];
}
voidmain()
{
Mk[5],*p;
intd[5]={23,34,45,56,67};
set(k,5,d);
p=k+1;
printf("%d\n",table);
}
则下面的表达式在table处,能使程序执行后,打印输出数据45的是
A)p->next->a
B)++p->a
C)(*p).a++
D)p++->a
(38)阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在)
#include"stdio.h"
voidmain()
{
FILE*fp;
inta[10],*p=a;
fp=fopen("a123.txt","w");
while(strlen(gets(p))>0)
{
fputs(a,fp);
fputs("\n",fp);
}
fclose(fp);
}
A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中
B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中
C)从键盘输入若干行字符,第一行写入文本文件a123.txt中
D)从键盘输入若干行字符,依次写入文本文件a123.txt中
二、填空题
(1)阅读下面程序,则在执行时候的输出为【1】。
#include"stdio.h"
voidmain()
{
intx=1,y=2,z=0;
if(x=2)z=x,x=y,y=z;
printf("%d,%d\n",x,y);
}
(2)语句printf("%d\n",′H′-′0′+64);的执行结果为【2】。
(3)阅读下面程序,则程序的执行结果为【3】。
#include"stdio.h"
voidmain()
{
inta=10;
fun(a);
printf("%d\n",a);
}
fun(intx)
{x=50;}
(4)以下程序的输出结果是【4】。
intfun(intx,inty,int*p,int*q)
{
*p=x*y;
*q=x/y;
}
voidmain()
{
inta,b,c,d;
a=4;b=3;
fun(a,b,&c,&d);
printf("%d,%d\n",c,d);
}
(5)下面程序是求出数组arr的两条对角线上元素之和,请填空。
#include"stdio.h"
voidmain()
{
intarr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(【5】)
a=a+arr[i][j];
for(i=0;i<3;i++)
for(【6】;j>=0;j--)
if(【7】)
b=b+arr[i][j];
printf("%d,%d\n",a,b);
}
(6)下面程序的功能是:
对字符串从小到大进行排序并输出,请填空。
#include"string.h"
#include"stdio.h"
sort(char*a[],intn)
{
inti,j;
char*p;
for(j=1;j<=n-1;j++)
for(i=0;【8】;i++)
if(【9】)>0)
{
p=a[i];
a[i]=a[i+1];
a[i+1]=p;
}
}
voidmain()
{
inti;
char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};
sort(【10】);
for(i=0;i<6;i++)
printf("%s\n",book[i]);
}
(7)下面的函数是完成1~n的累加,完成函数。
a(intk)
{
if(k<=0)printf("error\n");
if(k==1)【11】;
else【12】;
}
(8)阅读下列程序,则程序实现的功能是【13】。
#include"stdio.h"
structnode
{
chardata;
structnode*next;
}*head;
fun(structnode*q)
{
if(head==NULL)
{q->next=NULL;
head=q;
}
else
{q->next=head;
head=q;
}
}
voidmain()
{
charch;
structnode*p;
head=NULL;
while((ch=getchar())!
=′\n′)
{p=(structnode*)malloc(sizeof(structnode));
p->data=ch;
fun(p);
}
p=head;
while(p!
=NULL)
{
printf("%c",p->data);
p=p->next;
}
}