C语⾔程序设计模拟试题B(附答案)《C语⾔程序设计》模拟试卷B
⼀、填空题(每题2分,共20分)
1.若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是。
2.若有以下程序段:
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执⾏后,c3中的值是。
3.设有定义:int n,*k=&n以下语句将利⽤指针变量k读写变量n中的内容,
请将语句补充完整。
scanf(“%d, ” );
printf(“%d\n”, 。);
4.若a为int类型,且其值为3,则执⾏完表达式a+=a-=a*a后,a的值
是。
5.有以下程序段
int k=0
while(k=1)k++;
while 循环执⾏的次数是。
6.表达式a = 1,a + 1,a + + 的值是___________________。
字符串长度和占用内存字节7.设char string[] =″This_is_a_book!″;则数组的长度应是
________________。
8.设int a[2][3] = {{2},{3}};则数组元素_____________________的值为
3。
9.设有如下变量说明语句:
int a[8]={44,55,12,42,94,18,6,67},*p=a;
则通过指针变量p引⽤值为18的表达式是____ ____。
10.执⾏下述程序
#include
int strlength(char a[],char b[])
{
int num=0,n=0;
while (*(a+num)!='\0')
num++;
while (b[n])
{
*(a+num)=b[n];
num++;
n++;
}
return (num);
}
main()
{
char strl[81],str2[81],*p1=str1,*p2=str2;
gets(p1);
gets(p2);
printf("%d\n",strlength(p1,p2));
}
若从键盘输⼊:
qwerty
abcd
则输出结果是____ ___。
⼆、单项选择题。(每题2分,共40分)
1.下列叙述中错误的是()。
A)计算机不能直接执⾏⽤C语⾔编写的源程序
B)C程序经C编译程序编译后,⽣成后缀为.obj的⽂件是⼀个⼆进制⽂件C)后缀为.obj的⽂件,经连接程序⽣成后缀为.exe 的⽂件是⼀个⼆进制⽂件D)后缀为.obj和.exe的⼆进制⽂件都可以直接运⾏
2.按照C语⾔规定的⽤户标识符命名规则,不能出现在标识符中的是()。A)⼤写字母 B)连接符 C)数字字符 D)下划线3.以下叙述中错误的是()。
A)C语⾔是⼀种结构化程序设计语⾔
B)结构化程序由顺序、分⽀、循环三种基本结构组成
C)使⽤三种基本结构构成的程序只能解决简单问题
D)结构化程序设计提倡模块化的设计⽅法
4.对于⼀个正常运⾏的C程序,以下叙述中正确的是()。
A)程序的执⾏总是从main函数开始,在main函数结束
B)程序的执⾏总是从程序的第⼀个函数开始,在main函数结束
C)程序的执⾏总是从main函数开始,在程序的最后⼀个函数中结束
D)程序的执⾏总是从程序的第⼀个函数开始,在程序的最后⼀个函数中结束5.设变量均已正确定义,若要通过
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所⽰的输⼊形式中正确的是(注:□代表空格字符)()。
A)10□X□20□Y〈回车〉 B)10□X20□Y〈回车〉
C)10□X〈回车〉 D)10X〈回车〉
20□Y〈回车〉 20Y〈回车〉
6.若有代数式(其中e仅代表⾃然对数的底数,不是变量),则以下能够正确表⽰该代数式的C语⾔表达式是()。A)sqrt(abs(n^x+e^x))
B)sqrt(fabs(pow(n,x)+pow(x,e)))
C)sqrt(fabs(pow(n,x)+exp(x)))
D)sqrt(fabs(pow(x,n)+exp(x)))
7.设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A)k++ B)k+=1 C)++k D)k+1
8.有以下程序,其中%u表⽰按⽆符号整数输出()。
main()
{ unsigned int x=0xFFFF; /* x的初值为⼗六进制数*/
printf(“%u\n”,x);
}
程序运⾏后的输出结果是
A)-1 B)65535 C)32767 D)0xFFFF
9.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产⽣错误信息的是()。
A)if(x++); B)if(x>y&&y!=0);
C)if(x>y)x-- D)if(y<0){;}
else y++; else x++;
10.以下选项中,当x为⼤于1的奇数时,值为0的表达式是()。
A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0
11.以下叙述中正确的是()。
A)break语句只能⽤于switch语句体中
B)continue语句的作⽤是使程序的执⾏流程跳出包含它的所有循环
C)break 语句只能⽤在循环体内和switch语句体内
D)在循环体内使⽤break语句和continue语句的作⽤相同
12.有以下程序
main()
{ int k=5,n=0;
do
{switch(k)
{case1: case3:n+=1; break;
default:n=0;k--;
case2:case4:n+=2;k--;break;
}
printf(“%d”,n);
}while(k>0&&n<5);
}
程序运⾏后的输出结果是()。
A)222 B)0235 C)02356 D)2356
13.有以下程序
main()
{int i,j;
for(i=1;i<4;i++)
{for(j=i;j<4;j++)printf(“%d*%d=%d”,i,j,i*j);
printf(“\n”);
}
}
程序运⾏后的输出结果是()。
A)1*1=1 1*2=2 1*3=3 B)1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 2*2=4 2*3=6
3*1=3 3*3=9
C)1*1=1 D)1*1=1
1*2=2 2*2=4 2*1=2 2*2=4
1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9
14.以下合法的字符型常量是()。
A)”\x13” B)”\018” C)”65” D)”\n” 15.在C语⾔中,函数返回值的类型最终取决于()。
A)函数定义时在函数⾸部所说明的函数类型
B)return语句中表达式值的类型
C)调⽤函数时主函数所传递的实参类型
D)函数定义时形参的类型
16.已知⼤写字母A的ASCII码是65,⼩写字母a的ASCII码是97,以下不能将变量c中⼤写字母转换为对应⼩写字母的语句是()。
A)c=(c-A)%26+‘a’ B)c=c+32
C)c=c-‘A’+‘a’ D)c=(‘A’+c)%26-‘a’ 17.有以下函数:
int fun(char *s)
{char *t=s;
while(*t++);
return(t-s);
}
该函数的功能是()。
A)⽐较两个字符的⼤⼩ B)计算s所指字符串占⽤内存字节的个数C)计算s所指字符串的长度 D)将s所指字符串复制到字符
串t中18.设已有定义:float x;则以下对指针变量p进⾏定义且赋初值的语句中正确的是()。
A)float *p=1024; B)int *p=(float x);
C)float p=&x D)float *P=&x
19.有以下程序
#include
main()
{ int n,*p=NULL;
*p=&n
printf(“Input n:”); scanf(“%d”,&p); printf(“output n:”); printf(“%d\n”,p);
}
该程序试图通过指针p为变量n读⼊数据并输出,但程序有多处错误,以下语句正确的是()。
A)int n,*p=NULL; B)*p=&n C)scanf(“%d”,&p) D)printf (“%d\n”,p);
20.以下程序中函数f的功能是:当flag为1时,进⾏由⼩到⼤排序;当flag 为0时,进⾏由⼤到⼩排序。
void f(int b[],int n,int flag)
{ int i,j,t;
for(i=0;i
for (j=i+1;j
if(flag?b[i]>b[j]:b[i]
{t=b[i];b[i]=b[j];b[j]=t; }
}
main()
{ int a[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0); f(a,5,1);
for(i=0;i<10;i++)printf(“%d,”,a[i]);
}
程序运⾏后的输出结果是()。
A)1,2,3,4,5,6,7,8,9,10,
B)3,4,5,6,7,2,1,8,9,10,
C)5,4,3,2,1,6,7,8,9,10,
D)10,9,8,7,6,5,4,3,2,1,
三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序下⾯的横线上。每⼩题5分,共10分)1.下列给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
#include
#include
void fun (char s)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。