C语言模拟试题1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言模拟试题1
C语言复习题一
一、单项选择
1.对于语句scanf (“%f□%f,c=%f”,&a,&b,&c ); ,其合法的输入形式为()。
(A)□56.7□2.3□15.6 (B)56.7,2.3,15
(C)56.7□□2.3,15.6 (D)56.7□□□2.3,c=15
2.整型变量x=1,y=3,经下列计算后,x的值不等于6的是( ) 。
(A)x=(x=1+2,x*2) (B) x=y*(y/2) (C)x=10-(--y)-(x++) (D) x=y>2?6:5
3.C语言中,逻辑”真”等价于( )。
(A)大于零的数 (B)大于零的整数 (C)非零的数 (D)非零的整数
4. 执行下面程序, 退出循环后,x和s的值为( ).
int x=10,s=0;
while(x>0) {s+=x; x--; };
(A) 0和45 (B) 1和45 (C)1和55 (D)0和55
5.与如下定义完全等价的形式是( )。
char str[ ]= “China”;
(A)char str[ ]= {‘C’,’h’,’i’,’n’,’a’,’\0’}; (B) char str[ ]= {‘C’,’h’,’i’,’n’,’a’ };
(C) char str[ ]= {’\0’,‘C’,’h’,’i’,’n’,’a’ } (D) char str[ ]= {‘C’,’h’,’i’,’n’,’a’,’\0’, ’\0’}
6.以下对二维数组不正确初始化是()。
A.char a[2][3]={0}; B.char a[ ][3]={{1,2},{0}};
C.char a[2][3]={{1,2},{3,4},{5,6}}; D.char a[ ][3]={1,2,3,4,5,6} 7.下面程序段的运行结果是()。
char s[6]={‘A’, ‘B’, ‘\0’, ‘C’, ‘D’ , ‘\0’};
printf(“%s”,s);
A.A’, ‘B’ , B.AB C.ABC D.AB C
8.以下说法不正确的是()。
A.不同函数中可以使用相同的变量名。
B.形式参数是局部变量。
C.一个函数内部定义的变量只能在本函数范围内有效。
D.全局变量不能与局部变量同名。
9.以下叙述正确的是()。
A.递归函数中的形式参数是外部变量。
B.递归函数中的形式参数是自动变量。
C.递归函数中的形式参数可以省略。
D.递归函数中的形式参数只能有一个。
10.宏定义有效范围是从定义处到源文件结束处,可以用( )来提前结束宏定义的作用范围。
A.# ifndef B.# endif C.# undefined D.# undef
11.p1指向某个整型变量,要使指针p2指向同一变量,下列语句正确的是( )。
A. p2=*p1;
B.p2=**p1;
C.p2=&p1
D. p2=&*p1;
12.数组定义为“int a[4][5];”引用“*(*(a+1)+2)”表示( )。
A. a 数组中行下标为1列下标为2的元素的地址
B. a[1][0]+2
C. a 数组中行下标为1列下标为2的元素的值
D. a[0][1]+2
13.设有说明float (*p)[10]; ,其中p是( )。
A. 具有10个指针元素的一维指针数组.
B.指向10个实型变量的函数指针.
C.指向具有10个实型元素的一维数组的指针.
D. 10个指向实型变量的指针.
14.若有以下说明语句,则( )是错误的。
char *ps=“ABCDEFGH”; char str[30];
A. printf(“%c\n”, *ps);
B. strcpy(str,ps+5);
C. printf(“%s\n”,ps+3);
D. str[0]=ps;
15.对于“struct node{double x;char c;}*p;”,()是错的。
A.p->x=97
B.p.x=97.0
C.p->c=97
D.(*p).c=’a’
16.下列说法中错误的是()。
A. 枚举类型的变量之间以及枚举类型的变量与枚举元素之间可以做判断比较。
B.枚举类型中枚举元素的值按定义时的顺序分别是0、1、2、……,不可以在定义
时指定为其它值。
C. 枚举类型中的枚举元素是常量。
D. 一个整数不能直接赋给一个枚举变量,应先进行强制类型转换。
17.以下说法中不正确的是。
A. 若malloc(或calloc)函数执行成功,函数返回一个指向分配域起始地址的指针,
否则返回空指针(NULL)。
B. 为了将一个结构体变量的值传递给另一个函数,可用该结构体变量做实参,形参
也必须是同类型的结构体变量;也可用指向该结构体变量的指针做实参。
C.结构体变量的地址就是结构体变量中的每个成员的地址。
D. 若想将链表中的某个结点删除,只要撤消它与其它结点的链接关系即可。
18.执行如下语句后,表达式的值为67是()。
struct per{ int num;struct per *next} ;
struct per a[3]={65,&a[1],67,&a[2],69,‘\0’},*p;p=&a[0];
A (p++)->num
B (++p)->num
C (*p).num++
D p->num++
二、判断正误
1.程序文件中若有语句getchar ( );该程序文件头应有予编译命令# include “math.h”。
2.整型变量a = 5, b = 7 ; 表达式b/a * 100的值是140。
3.C语言的语句if(表达式)中的表达式只能为逻辑表达式。
4.定义数组时,可以用变量作为各下标长度。
5.数组在内存中顺序占用连续的存储区,用数组名代表其首地址。
6. 如果字符串str1与str2相同,则函数strcmp(str1,str2)返回值为一个正数。
7.任何被调函数都要在主调函数中进行函数声明。
8.定义在某函数中的静态局部变量,在函数调用结束时,其占用的存储单元被释放。
9.不同函数中可以定义相同名字的变量,它们代表不同的对象,互不干扰。
10.用static声明的外部变量只限于在本文件中使用,不能被其它文件引用。
11.在宏名作用域内所有与宏名相同的字符串都将被替换。
12.若实参和形参都是指针变量,当在被调用的函数体内改变形参指针变量的值时,实参指针变量的值不会改变。
13.允许main()函数有2个形式参数,一个是整型变量,一个是指针数组。
14. 在程序中声明一个结构体类型后,系统将在内存中为此结构体类型分配存储空间。
15. 共用体变量的地址和它各成员的地址都是同一地址。
16.若有“int a=6,b=8,c=a|b;”,则变量c的值是14。
17.函数feof(fp)的参数fp是文件指针。
此函数若返回1表示文件已经结束。
18.系统自动定义了3个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出、标准出错输出,若fp指向stdout,则语句“fprintf(fp,“%d”,a);”同“printf(“%d”,a);”作用相同。
三、阅读程序,说明每个程序的作用,并回答问题1.
main( )
{ char a,b,c,t;
scanf(“%c,%c,%c”,&a,&b,&c);
if (a>=b) {t=a;a=b;b=t;}
if (a>=c) {t=a;a=c;c=t;}
if (b>=c) {t=b;b=c;c=t;}
printf(“%3d,%3d,%3d”,a,b,c);
}
运行时输入G,A,E,输出什么?
2.
main( )
{ int a,b; char c;
scanf(“%d,%d”,&a,&b);
if (a<=b)
if (a=b) c=’M’;
else c=’B’;
else c=’H’;
printf(“%c\n”,c);
}
运行时输入673,851,输出什么?
3.
main( )
{char ch;
scanf(“%c”,&ch);
switch(ch)
{case ‘A’:printf(“85--100\n”);break;
case ‘B’:printf(“70--84\n”);break;
case ‘C’:printf(“60--69\n”);break;
case ‘D’:printf(“<60\n”);break;
default :printf(“error\n”);
}
}
运行时输入B,输出什么?
运行时输入F,输出什么?
4.
main( )
{int n,t=1;
for (n=6;n<=20;n++)
{if (n%3!=0)
t=t*n;
else
continue;
if (t>=1000)
break;
}
printf(“%d”,t);
}
运行程序,输出什么?
5.
main( )
{int t=97,n,m; char k=‘‘;/*k的值是空格*/ for (n=7;n>0;n=n-2)
{for (m=1;m<=8-n;m++)
printf(“%c”, k);
for (m=1;m<=n;m++)
printf(“%c%c”, t ,k);
t++;
}
}
运行程序,输出什么?
6.
# include "stdio.h"
# define N 4
main()
{char str[N][20],chang[20]; int i,j;
for (i=0;i<="" p="">
for (i=0;i<n-1;i++)< p="">
for (j=i+1;j<n;j++)< p="">
if (strcmp(str[i],str[j])>0)
{ strcpy(chang,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],chang);
}
for (i=0;i<="">
}
运行时依次输入下面4个字符串,输出什么?study hard copy file
he run program
we love motherland
7.
void zpx(char b[],int t)
{ int m,n; char k;
for(n=0; n<="" p="">
for(m=0; m<="" p="">
if (b[m]>b[m+1])
{k=b[m]; b[m]=b[m+1]; b[m+1]=k;}
}
main()
{ int i;
char a[10]={'D','F','A','E','C','B','I','J','H','G'}; zpx(a,10); for (i=0;i<10;i++)
printf("%c ",a[i]);
}
运行程序,输出什么?
8.
main( )
{ void inv(int *x , int n);
int i,a[7]={ 2,3,4,5,6,7,8};
for(i=0;i<6;i++) printf(“%d ,“,a[i]);
printf(“%d\n” ,a[6]);
inv(a,7);
for (i=0;i<7;i++) printf(“%d “ ,a[i]);
}
void inv(int *x , int n)
{int *p1, *p2, *p3, t, m=(n-1)/2;
p2=x; p3=x+n-1; p1=x+m;
for( ; p2<=p1; p2++, p3--)
{t=*p2; *p2=*p3; *p3=t;}
}
运行程序,输出什么?
9.
# include "stdio.h"
main()
{char *a[4],str[4][20];int num[4]={0};
int i,j;
for(i=0;i<4;i++) a[i]=str[i];
for(i=0;i<4;i++) /*分别给str的各行输入一个字符串*/ gets(a[i]);
j=calculat(a,num);
printf("%d\n",j);
for(i=0;i<4;i++) printf("%d,",num[i]);
}
int calculat(char *b[4],int shu[4])
{int m,n,s=0;
for(m=0;m<=3;m++)
{ n=0;
while(*(b[m]+n)!='\0')
{if (*(b[m]+n)=='A')
shu[m]++;
n++;
}
}
for(m=0;m<=3;m++) s=s+shu[m];
return(s);
}
运行时输入下面4个字符串,输出什么?DefAAAGHAA
HUAHAJAGA
NJAABHAAA
UHGAAAbeAAAAM
10.
# include "stdio.h"
# define N 3
main()
{struct worker
{int num;
int age;
char name[20];
};
struct worker wk[N],x;
FILE *fp; int i,n;
if ((fp=fopen("data5","wb+"))==NULL)
{printf("can not open file\n");
exit(0);
}
for(i=0;i<n;i++)< p="">
scanf("%d,%d,%s", &wk[i].num, &wk[i].age, wk[i].name); for(i=0;i<n;i++)< p="">
fwrite(&wk[i],sizeof(struct worker),1,fp);
scanf("%d",&n);
fseek(fp,24*(n-1),0);
fread(&x,sizeof(struct worker),1,fp);
printf("num=%d,age=%d,name=%s",x.num,x.age,http://ww /doc/e92571868.html,); fclose(fp);
}
运行时输入以下3行数据,回车后再输入2,输出什么?
601,23,boxes
602,24,editor
603,25,vehicle
四、程序填空
1.程序的作用是:将随机从键盘输入的两个实型数,按从大到小的顺序输出。
例如输入6.95,8.74,输出8.74,6.95。
main( )
{ float a,b,t;
s canf(“%f,%f”,&a,&b);
if (________) {t=a; a=b; b=t;}
printf(“%5.2f,%5.2f”,a,b);
}
2. 程序的作用是:从键盘输入10个整型数,将其中的偶数累加到sum,输出sum值和偶数的个数。
main( )
{ int i=10,j=0,n,sum=0;
while (i>0)
{ scanf(“%d”,&n);
if(n%2==0)
{sum=sum+n;j++;}
i--;
}
printf(“%d,%d”,__________);
}
3. 程序的作用是:将从键盘输入的30个实数按照从大到小的顺序排列,然后输出。
# define N 30
main( )
{int i,j,k; float a[N] ,t;
for(i=0;i<n;i++)< p="">
scanf(“%f”,&a[i]) ;
for(i=0;i<n-1;i++)< p="">
{ k=i;
for(j=i+1;j<n;j++)< p="">
if (a[j]>a[k]) k=j;
________________________
}
for(i=0;i<n;i++)< p="">
printf(“%d ”, a[i]) ;
}
五、编写程序
1、使用数组和循环编写:输入100个整数,分别统计其中能被3整除的有几个、能被5整除的有几个。
2、使用循环编写:输出如下图案:
*
***
*****
*******
</n;i++)<>
</n;j++)<>
</n-1;i++)<>
</n;i++)<>
</n;i++)<>
</n;i++)<>
</n;j++)<>
</n-1;i++)<>。