C语言程序设计模拟试题B附答案.docx
《C语言程序设计模拟试题B附答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题B附答案.docx(16页珍藏版)》请在冰豆网上搜索。
C语言程序设计模拟试题B附答案
《C语言程序设计》模拟试卷十二
一、填空题。
(每题2分,共20分)
1.C语句必须以 号结束
2.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是 。
3.若有以下程序段,
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是 。
4.设有定义:
intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d,” );
printf(“%d\n”, 。
);
5.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 。
6.有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是 。
7.表达式a=1,a+1,a++的值是___________________。
8.设charstring[]=″This_is_a_book!
″;则数组的长度应是________________。
9.设inta[2][3]={{2},{3}};则数组元素_____________________的值为3。
10.设有如下变量说明语句
inta[8]={44,55,12,42,94,18,6,67},*p=a;
则通过指针变量p引用值为18的表达式是____ ____。
11.执行下述程序
#include
intstrlength(chara[],charb[])
{
intnum=0,n=0;
while(*(a+num)!
='\0')
num++;
while(b[n])
{
*(a+num)=b[n];
num++;
n++;
}
return(num);
}
main()
{
charstrl[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.设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()
A)k++ B)k+=1 C)++k D)k+1
8.有以下程序,其中%u表示按无符号整数输出()
main()
{unsignedintx=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){;}
elsey++; elsex++;
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()
{intk=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()
{inti,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.有以下函数
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
}
该函数的功能是()
A)比较两个字符的大小 B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中
18.设已有定义:
floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是()
A)float *p=1024; B)int *p=(floatx);
C)float p=&x; D)float*P=&x;
19.有以下程序
#include
main()
{intn,*p=NULL;
*p=&n;
printf(“Inputn:
”);scanf(“%d”,&p); printf(“outputn:
”); printf(“%d\n”,p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()
A)intn,*p=NULL; B)*p=&n; C)scanf(“%d”,&p) D)printf(“%d\n”,p);
20.以下程序中函数f的功能是:
当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。
voidf(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]
}
main()
{inta[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
voidfun(chars)
{inti,j;
for(i=0,j=0;s[i]!
=‘\0';i++)
if(s[i]>=‘0'&&s[i]<='9')
s[j]==s[i];
s[j]=“\0”;
}
main()
{charitem[80];
clrscr();
printf(“\nEnterastring:
”);gets(item);
printf(“\n\nThestringis:
\%s\n”,item);
fun(*item);
printf(“\n\nThestringofchangingis:
\%s\n”,item);
}
2.下列给定程序中,函数fun的功能是:
分别铜级字符串中大写字母和小写字母的个数。
例如,给字符串s输入:
AAaaBBb123CCccccd,则应该输出结果:
upper=6,lower=8。
#include
#include
voidfun(char*s,inta,intb)
{while(*s)
{if(*s>=‘A'&&*s<=‘Z')
a++;
if(*s>=‘a'&&*s<=‘z')
b++;
s++;
}
}
main()
{chars[100];intupper=0,lower=0;
clrscr();
printf(“nPleaseastring:
”);gets(*s);
fun(s,&upper,&lower);
printf(“nupper=%dlower=%dn”,upper,lower);
}
四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。
(每小题5分,共20分)
1. #include
voidmain()
{ ints=1,t=1,a,n;
scanf(“%d%d”,&a,&n);
for(inti=1;i{
t=t*10+1;s=s+t;
}
s*=a;printf(“SUM=%d\n”,s);
}
输入数据:
2,4
输出结果:
2.#include
voidmain()
{ inta,b,c,find(int,int,int);
scanf(“%d%d%d”,&a,&b,&c);
printf(“%d\n%d,%d,%d\n”,find(a,b,c),a,b,c);
}
intfind(inta,intb,intc)
{ intu,s,t;
u=((u=(a>b)?
a:
b)>c)?
u:
c;
t=((t=(a
a:
b)t:
c;
s=a+b+c-u-t;a=u;
b=s;c=t;returns;
}
运行时输入:
5–73,输出结果:
3.#include
voidmain()
{inta[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9};
for(inti=0;i<5;i++)
for(intj=0;j<6;j++)
if(*(a+i)==*(b+j))printf(“%d ”,*(a+i));
printf(“\n”);
}
输出结果:
4. #include
#include
voidmain()
{ charstr1[]=“*******”;
for(inti=0;i<4;i++){
printf(“%s\n”,str1);
str1[i]=‘ ';
str1[strlen(str1)-1]=‘\0';
}
}
输出结果:
五、按要求编写下列程序。
(每题5分,共10分)
1.编一程序,输出如下三角形图形。
2.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔的输出该串,请用指针完成。
一、填空题
1分号
22.000000
30
4k*k
5-12
6无数次
72
815
9a[1][0]
10*(p+5)
1110
二、单项选择题
1-5DBCAD
6-10CABCD
11-15CABDA
16-20ACDAB
三、程序修改
1.修改后的程序如下:
#include
#include
voidfun(chars[])
{inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
if(s[i]>='0'&&s[i]<='9')
s[j++]=s[i];
s[j]='\0';
}
main()
{charitem[80];
clrscr();
printf("\nEnterastring:
");gets(item);
printf("\n\nThestringis:
\%s\n",item);
fun(item);
printf("\n\nThestringofchangingis:
\%s\n",item);
}
2.修改后的程序如下:
#include
#include
voidfun(char*s,int*a,int*b)
{while(*s)
{if(*s>='A'&&*s<='Z')
(*a)++;
if(*s>='a'&&*s<='z')
(*b)++;
s++;
}
}
main()
{chars[100];intupper=0,lower=0;
system("cls");
printf("nPleaseastring:
");gets(s);
fun(s,&upper,&lower);
printf("\nupper=%dlower=%d\n",upper,lower);
}
四、阅读程序
1.
SUM=2
2.
3
5-73
3.
2469
4.
*******
*****
***
*
五、
1.
#include
#include
voidmain()
{charstr1[]="****";
inti;
for(i=0;i<4;i++){
printf("%s\n",str1);
str1[strlen(str1)-1]='\0';
}
}
2.
#include
#include
voidmain()
{charstr[]="computer";
char*s=str;
while((*s)!
='\0')
{printf("%c",*s);
s++;}
}