C语言程序设计模拟试题7(附答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言程序设计》模拟试卷七
一、填空题。
(每空2分,共30分)
1.下述算术表达式的结果值是___ __。
(int) (13.7+25.6)/4%4
2.设整型变量value的值为20。
执行下述程序段的输出结果
是。
if (value>=3)
if (value>100)
printf("Error:value>100.\n");
else
printf("Error:value<3.\n");
3.对于下述程序段
int b,c;
float a;
scanf("%f,%d,c=%d",&a,&b,&c);
若欲使a、b、c的值分别为5.0、4、3,则应按如下形式输入数据:_ __ 。
4.设int类型变量占内存两个字节,今有变量说明语句
int a=20;
则执行下述printf语句的输出结果是
___ _。
printf("%d,%0,%x,%u\n",a,a,a,a);
5.执行下述程序的输出结果是_____ ______。
#include <stdio.h>
main()
{
int arr[10],i,k=0;
for (i=0;i<10;i++)
arr[i]=i;
for (i=1;i<4;i++)
k+=arr[i]+i/2;
printf("%d\n",k);
}
6.执行下述程序的输出结果是__ _。
#include <stdio.h>
main()
{
int i=0;
char x[]="China";
char y[]="Chinese";
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i])
printf("%c",x[i++]);
else
i++;
printf("\n");
}
7.下述函数定义的功能是:把两个整数指针所指的存储单元中的内容进行交换。
请填空。
void
exchange( )
{
int t;
t=*y;
*y=*x;
*x=t;
}
8.设有如下变量说明语句
int a[8]={44,55,12,42,94,18,6,67},*p=a;
则通过指针变量p引用值为18的表达式是
____ 或____。
9.执行下述程序
#include <stdio.h>
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 str1[81],str2[81],*p1=str1,*p2=str2;
gets(p1);
gets(p2);
printf("%d\n",strlength(p1,p2));
}
若从键盘输入
qwerty
abcd
则输出结果是____ ___。
10.下面的函数定义是一个求阶乘的递归调用函数。
假定n≠0。
请填空。
long fac(int n)
{
long f;
if (n==0)
f=1;
else
f=___ ____;
return (f);
}
11.下述程序的功能是:输入n值,输出高度为n的、由字符'*'组成的直角三角形,例如当n=4时的输出图形如下(最后一行前面没有空格):
*
**
***
****
请填空。
#include <stdio.h>
void func(char c,int n)
{
if (n>0)
{
printf("%c",c);
func(c,n-1);
}
}
main()
{
int i,n;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
____ ___;
printf("\n");
}
}
12.执行下述程序的输出结果
是。
#include <stdio.h>
#define COMP struct complex
COMP
{
float re;
float im;
};
void plus(COMP *z1,COMP *z2,COMP *z3)
{
z3->re=z1->re+z2->re;
z3->im=z1->im+z2->im;
}
main()
{
COMP a,b,c;
a.re=7.0;
a.im=4.0;
b.re=-2.0;
b.im=5.5;
plus(&a,&b,&c);
printf("c=%5.lf+%5.lf i\n",c.re,c.im);
}
13.以下程序在运行时输入
10 20 30
则输出结果是___ __。
#include <stdio.h>
int func(int a,int b,int c)
{
return (a+b+c);
}
main()
{
int x,y,z;
printf("Enter x,y,z: ");
scanf("%d%d%d",&x,&y,&z);
z=func(x,x+y,func(x,x+y,z));
printf("z=%d\n",z);
}
14.下面的程序把从终端读入的文本(用字符'@'作为文本结束标志)逐个字符复制到一个当前磁盘目录下名为bi.dat的新文本文件中。
请填空。
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
char ch;
if ((fp=fopen("bi.dat","w"))==NULL)
{
printf("Can't open file bi.dat.\n");
exit(0);
}
while ((ch=getchar())!='@')
;
fclose (fp);
}
15.执行下述程序的输出结果是。
#include "stdio.h"
int abc(int u,int v);
int abc(int u,int v)
{ int w;
while(v)
{ w=u%v; u=v; v=w ;}
return u;
}
main()
{ int a=24,b=16,c;
c=abc(a,b);
printf("%d\n",c);
}
二、单项选择题。
(每题1分,共20分)
1.在计算机上可以直接运行的程序是写【】
A.高级语言程序B.汇编语言程序
C.机器语言程序 D.C语言源程序
2.下列符号串中,合法的C语言标识将是【】
A._121 B.121_ C.a.121 D.#121
3.下列符号串中,合法的十进制整型常量是【】
A.09876 B.0x9876 C.9.876*e4 D.-9876
4.设有关变量已经正确定义并赋值,则下列表达式中符合C语言语法规则的是【】
A.a_=\12 B.a_1=a_2+=12 C.int13.5%2 D.a=b+7=C-2 5.若整型变量x的值为8,则下列表达式中值为1的表达式是【】A.x+=x-=x=x B.x%=x-1 C.x%=x%=3 D.x/=x+x
6.字符串"m\x43\\\np\102q"的长度是【】
A.7 B.9 C.15 D.16
7.设有定义语句“int a=10,*p=&a;”,则表达式“a十*p”的值是【】A.10 B.20 C.100 D.语法出错
8.若有定义语句“int x,*p=&x,**ppx=&px;”,则下列表达式中错误的是【】
A.x=*px B.x=**ppx C.px=&ppx D.*ppx=&x
9.如果某个函数在定义时,省略了存储类型,则默认的存储类型是【】A.auto B.void C.extern D.static
10.能正确定义一个用来指向打开文件的文件型指针变量fp的语句是【】A.file fp; B.file *fp; C.FILE fp; D.FILE *fp;
11.函数fopen()的返回值不能是【】
A.NULL B.O C.1 D.某个内存地址12.以只写方式打开一个二进制文件,应选择的文件操作方式是【】A."a+" B."w+" C."rb" D."Wb"
13.设有定义语句“char ch='\77';”,则下列说法中正确的是【】A.ch中含有1个字符 B.ch中含有2个字符
C.ch中含有3个字符 D.语法出错
14.设有函数调用语句“f(x1,x1+x2,(x1,x2));”,正确的说法是【】A.调用的实际参数是2个 B.调用的实际参数是3个
C.调用的实际参数是4个 D.调用时会出现语法错误。
15.计算平方数时不可能引起二义性的宏定义是【】
A.#define SOR(x)x*x B.#define SQR(x)(x)*(x)
C.# define SQR(x)(x*x) D.# define SQR(x)((x)*(x))
16.执行下列程序段后,x的位是【】
int a=8,b=7,c=6,x=1;
if(a>6)if(b>7)if(c>8)x=2;else x=3;
A.O B.1 C.2 D.3
17.执行下列程序段后,变量y的值为【】
int x[]={1,2,3,4},y,*p=&x[1];
y=(*--P)++;
A.1 B.2 C.3 D.4
18.能正确表达逻辑关系“-1<x<1并且-1<y<1”的表达式是【】A.(-1<x<1)&&(-1<y<1)
B.(-1<x<1)&(-1<y<1)
C.((-1<x)¦¦(x<1))&&((-1<y)¦¦( y<1))
D.(-1<x)&&(x<1)&&(-1<y)&&(y<1)
19.函数调用时,下列说法中不正确的是【】
A.若用值传递方式,则形式参数不予分配内存
B.实际参数和形式参数可以同名
C.主调函数和被调用函数可以不在同一个文件中
D.函数间传送数据可以使用外部全局变量
20.下列关于结构型变量的定义语句中,错误的是【】
A. typedef struct CCC B. #define GGG struct
{ char name[20];GGG CCC { char name[20];
int age; int age;
}GGG;};
GGG abc ; GGG CCC abc; C.struct D. struct
{ char name[20];{ char name[20];
int age; int age;
}ccc;}abc;
CCC abc;
三、程序分析题(每题8分,共32分)
1.写出执行下述程序的输出结果。
#include <stdio.h>
main()
{
int a=2,b=4,c=5;
switch (a>0)
{
int a=2,b=4,c=5;
switch (a>0)
{
case 1:switch (b=b>>2)
{
case 1:printf("@");
case 0:printf("!");
default:printf("?");
}
case 0:swith (c==5)
{
case 0:printf("*");break;
case 1:printf("#");break;
dafault:printf("$");
}
default:printf("&");
}
printf("\n");
}
2.写出执行下述程序的输出结果。
#include <stdio.h>
#define N 5
main()
{
int i,j,cent;
for (cent=1;cent<=N;cent++)
{
for (i=1;i<=N-cent+5;i++)
printf(" ");
for (j=1;i<=cent;j++)
printf("%d",j));
for (j=cent-1;j>=1;j--)
printf("%d",j);
printf("\n");
}
}
(注:第一行1前面有9个空格,以下类推)3.阅读下述程序,设输入如下数据
8 5 7 9 4
请写出输出结果。
#include <stdio.h>
#define N 5
main()
{
int i,j,k,1;
int a[N];
for (i=0;i<N;i++)
scanf("%d",&a[i]);
for (i=N-1;i>=0;i--)
{
k=a[N-1];
for (j=N-2;j>=0;j--)
a[j+1]=a[j];
a[0]=k;
for (1=0;1<n;1++)
printf("%3d",a[1]);
printf("\n");
}
}
4.写出执行下述程序的输出结果。
#include <stdio.h>
main()
{
char s[]="ABCDE",*p;
for (p=s;p<s+5;p++)
printf("%s\n",p);
}
四、程序设计题(每小题9分,共18分)
1、编写程序,从键盘输入一个字符序列(以字符'#'作为结束标志),将其中的英文小写字母全部转换成相应的英文大写字母,逐个字符写入一个名为
test.dat的磁盘文本文件以保存。
然后,从该文件中读取所存入的字符序列,将它们输出在显示屏上。
2、编写一程序,从键盘输入10个实数,计算并输出算术平均值。
模拟试卷七参考答案
一、填空题。
(每空2分,共30分)
1) 1
2) Error:value<3.
3) 5.0,4,c=3
4) 20,24,24,20
5) 8
6) Chin
7) int *y,int *x
8) p[5]或*(p+5)
9) 10
10) n*fac(n-1)
11) func('*',i)
12)c= 5+ 10 i
13)z=110
14) fputc(ch,fp)
15) 8
二、单项选择题。
(每题1分,共20分)
1.C 2.A 3.D 4.B 5. B
6 A 7.B 8.C 9.A 10.D
11.C 12.C 13.A 14.B 15.D
16.D 17.A 18.D 19.A 20.C
三、程序分析题(每题5分,共30分)
1. 输出结果如下:
4 0 0 -4 -3
2. 输出结果如下:
1
21
321
4321
)
3. 输出结果如下:
4 8
5 7 9
9 4 8 5 7
7 9 4 8 5
5 7 9 4 8
8 5 7 9 4
4. 输出结果如下:
ABCDE
BCDE
CDE
DE
E
5. 读下列程序,写出程序的主要功能。
#include”dos.h”
main()
{ struct date today;
int n,year1;
getdate(&today);
scanf("%d",&year1);
while((n=today.da_year-year1)>=0){ printf("age=%d\n",n);
scanf("%d",&year1);
}
}
6. 阅读下列程序,写出程序运行的输出结果。
char *f(pl,p2)
char *pl,*p2;
{ char*pp1=p1,*pp2=p2,ch;
while(*pp1!='\0')
{ for(ch='0';ch<*pp1;ch++)
*pp2=*(pp1+1),pp2++;
ppl=ppl+2;
}
*pp2='\0';
return(p2);
}
main()
{ char sl[10]={"la2b3c"},s2[20],*p;
p=f(sl,s2);
printf(”% s \n”,p);
}
四、程序设计题(每小题10分,共20分)
1、编写程序,从键盘输入一个字符序列(以字符'#'作为结束标志),将其中的英文小写字母全部转换成相应的英文大写字母,逐个字符写入一个名为test.dat的磁盘文本文件以保存。
然后,从该文件中读取所存入的字符序列,将它们输出在显示屏上。
int main()
{
FILE *fio;
char k;
fio = fopen("test3.dat","w");
if(fio == NULL)
exit(-1);
while (1)
{
k=getch();
if (k=='#') {break;}
putch(k);
if (islower(k)) { fputc(k-32,fio) (k-32);}
else{ fputc(k,fio) (k);}
}
fclose(fio);
return 0;
}
2、编写一程序,从键盘输入10个实数,计算并输出算术平均值。
main()
{int i;
float ave=0.0,a[10];
for(i=0;i<10;i++)
scanf("%f",&a[i]);
for(i=0;i<10;i++)
ave+=a[i];
printf("%10.4f\n",ave/10.0);.
}。