专接本计算机C语言程序设计模拟试题及答案二.docx
《专接本计算机C语言程序设计模拟试题及答案二.docx》由会员分享,可在线阅读,更多相关《专接本计算机C语言程序设计模拟试题及答案二.docx(9页珍藏版)》请在冰豆网上搜索。
专接本计算机C语言程序设计模拟试题及答案二
专接本计算机C语言程序设计模拟试题及答案
(二)
一、单项选择题(每小题2分,共20分)
1.在说明语句:
int*f();中,标识符f代表的是()
A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针
C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名
2.下列程序的输出结果是()
#include
voidmain()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A)3B)3.2C)0D)3.07
3.设变量均已正确定义,若要通过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〈回车〉
4.以下选项中,当x为大于1的奇数时,值为0的表达式()
A)x%2==1 B)x/2 C)x%2!
=0 D)x%2==0
5.以下叙述中正确的是()
A)break语句只能用于switch语句体中
B)continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
6.以下合法的字符型常量是()
A)'\x13' B)'\018' C)65 D)"\n"
7.在C语言中,函数返回值的类型最终取决于()
A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型 D)函数定义时形参的类型
8.设intx=1,y=1;表达式(!
x||y--)的值是()
A)0B)1C)2D)-1
9.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()
A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));
C)p=(int*)malloc(4*2);D)p=(int*)calloc(2,sizeof(int));
10.以下函数的功能是()
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
}
A)比较两个字符的大小 B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中
二、完成下列的程序填空(每空3分,共27分)
1.输入20个数,用起泡法对这20个数升序排列。
#include
voidmain()
{inta[20];
inti,j,t;
printf("input20numbers:
\n");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<19;j++)
for(i=0;;i++)
if()
{}
printf("thesortednumbers:
\n");
for(i=0;i<20;i++)
printf("%d",a[i]);
printf("\n");
}
2.写一个函数,输入一个十六进制数,输出相应的十进制数。
#include
voidmain()
{chara[6];
scanf("%s",a);
printf("%d\n",htoi(a));
}
inthtoi(chars[])
{inti,n;
n=0;
for(i=0;s[i]!
='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+;
if(s[i]>='a'&&s[i]<='f')
n=n*16+;
if(s[i]>='A'&&s[i]<='F')
n=n*16+;
}
return(n);
}
3.用指针的方法编写的函数,将一个
的整型二维数组行列互换。
#include
voidmain()
{voidmove(int*pointer);
inta[3][3],*p,i;
printf("inputmatrix:
\n");
for(i=0;i<3;i++)
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf("Now,matrix:
\n");
for(i=0;i<3;i++)
printf("%d%d%d\n",a[i][0],a[i][1],a[i][2]);
}
voidmove(int*pointer)
{inti,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{;
;
;
}
}
三、写出下列程序的运行结果(每小题8分,共24分)
1.以下程序运行后的输出结果是()
#include
voidmain()
{voidf(intn,int*r);
intm=7,r;
f(m,&r);
printf("%d\n",r);
}
voidf(intn,int*r)
{intr1=0;
if(n%3==0)r1=n/3;
elseif(n%5==0)r1=n/5;
elsef(--n,&r1);
*r=r1;
}
2.以下程序的输出结果是()
#include
f(inta)
{intb=0;
staticintc=3;
b++;c++;
return(a+b+c);
}
voidmain()
{inta=2,i;
for(i=0;i<3;i++)printf("%d\n",f(a));
}
3.以下程序的输出结果是()
#include
voidfun(int*x,int*y)
{printf("%d%d",*x,*y);
*x=3;
*y=4;
}
voidmain()
{intx=1,y=2;
fun(&y,&x);
printf("%d%d",x,y);
}
四、按要求编写下列程序(第1小题16,第2小题13分,共29分)
1.编程实现下面的函数,要求输入一个x的值,输出y值,函数如下:
-5(x<0)
y=0(x=0)
5(x>0)
2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,程序显示排序前和排序后的结果。
参考答案
一、单项选择题(每小题2分,共20分)
DCDDCAABAB
二、完成下列的程序填空(每空3分,共27分)
1.
i<19-j
(a[i]>a[i+1])
t=a[i];a[i]=a[i+1];a[i+1]=t;
2.
s[i]-'0'
s[i]-'a'+10
s[i]-'A'+10
3.
t=*(pointer+3*i+j)
*(pointer+3*i+j)=*(pointer+3*j+i)
*(pointer+3*j+i)=t
三、写出下列程序的运行结果(每小题8分,共24分)
1、2
2、7
8
9
3、2143
四、按要求编写下列程序(第1小题13,第2小题16分,共29分)
1.编程实现下面的函数,要求输入一个x的值,输出y值,函数如下:
-5(x<0)
y=0(x=0)
5(x>0)
#include
voidmain()
{intx,y;
printf("enterx:
");
scanf("%d",&x);
if(x<0)
y=-5;
else
if(x==0)y=0;
elsey=5;
printf("x=%d,y=%d\n",x,y);
}
2.编写一个程序,将一组数据{6,5,8,1,0,4,7,3,2,9}按从小到大的顺序排列,程序显示排序前和排序后的结果。
#include
#defineN10
Voidmain()
{
inta[N]={6,5,8,1,0,4,7,3,2,9}
inti,j,t;
printf(“Thearraybeforesorted:
”);
for(i=0;iprintf(“%4d”,a[i]);
for(i=0;i<9;i++)
{for(j=i+1;j<10;j++)
{if(a[i]>a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf(“Thearrayaftersorted:
”);
for(i=0;iprintf(“%4d”,a[i]);
}