C语言基础模拟题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言基础模拟题及答案
一、选择题(每题 1 分,共 20 分)
1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。

A、循环
B、递归
C、转移
D、嵌套
2. 下列标识符中,合法的是_______ 。

A) unsigned B) 5ab C) INT# D)_num2
3. 若float x ;x = 10/4 ;x的值是。

A、2.5
B、2.0
C、3
D、 2
4. 表达式!x 等价于。

A、x==0
B、x==1
C、x != 0
D、x != 1
5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。

A、算术运算、赋值运算、关系运算
B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算
D、关系运算、算术运算、赋值运算
6. 能将高级语言编写的源程序转换为目标程序的是。

A、链接程序
B、解释程序
C、编译程序
D、编辑程序
7. 下列语句定义pf为指向float类型变量f的指针,是正确的。

A、float f, *pf = f;
B、float f, *pf = &f
C、float *pf = &f, f;
D、float f, pf = f;
8. 一个C程序的执行是从。

A、本程序的main函数开始,到main函数结束
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。

A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B、(x>=1)||(x<=10)||(x>=200)||(x<=210)
C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D、(x>=1)||(x<=10)&&(x>=200)||(x<=210)
10. 对两个数组a和b进行如下初始化
char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?};
则以下叙述正确的是。

A、a和b数组完全相同
B、a和b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
11. 是不正确的字符常量。

A、'\n'
B、'1'
C、"a"
D、'\101'
12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。

A、k=(a>b)?1:0;
B、k=a>b;
C、k=a<=b;
D、a<=b ? 0 : 1;
13. 设变量定义为“int x, *p=&x”,则&*p相当于。

A、p
B、*p
C、x
D、*&x
14. 有两个字符数组a、b,则以下正确的输入语句是。

A)gets(a,b); B) scanf(“%s%s”,a,b);
C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”);
15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。

A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回给实参
D、由用户指定传递方式
16. C语言规定,函数返回值的类型是由。

A、return语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型所决定
17. 若已定义char s[10]; 则在下面表达式中不表示s[1]的地址的是。

A、s+1
B、 s++
C、&s[0]+1
D、&s[1]
18. 下列关于switch语句和break语句的说法中,正确的是。

A、break语句是switch语句中的一部分。

B、在switch语句中可以根据需要使用或不使用break语句。

C、在switch语句中必须使用break语句。

D、以上三个结论中有两个是正确的。

19. 以下对二维数组a的正确说明是。

A、int a[ ][3]={ 0 };
B、int a[3][ ]={ {1},{2},{3} };
C、int a[1][3]={ 1,2,3,4 };
D、int a[2][3]={ {1,2},{3,4},{5,6} };
20. 以下结构体类型和变量的定义,正确的是。

A、struct student
B、struct
{ int number, {int number,
char name[20], char name[20],
}s; };s;
C、struct student
D、struct student
{ int number; {int number;
char name[20]; char name[20];
}s; };s;
二、填空题(每空 2 分,共 20 分)
1.写出语句printf ("%d, %o, %x", 0x12, 12, 012); 的输出结果①。

2.C语言运算符中,优先级最低的是②。

3.int x; float y;且执行scanf(“%3d%f”,&x,&y);语句时,从第一列开始输入数据12345 678 ,则x 的值是③y的值是④。

4.定义int i=1;执行while(i++<5)后i的值为⑤。

5.执行下列语句char s[4]=”DEF”,*p; p=s;后,*(p+3)的值是⑥。

6.构成数组的各个元素必须具有相同的⑦。

5.在C语言中,二维数组元素在内存中的存放顺序是⑧。

7.在C语言中,逻辑“假”值为⑨。

8.字符串”ab\034\\\x79”的长度为⑩。

三、读程序,写结果(每题4分,共20分)
1.写出下列程序段的输出结果。

#include main( ) {int k ;
for( k=10; k != 0; k-- ) ; printf ( "%d", k ); }
3.写出下列程序的输出结果。

#include main( )
{ struct st { int x, y;
} a[4]={{10,20},{30,40},{50,60},{70,80}}; struct st *p=a; printf("%d,", (*a).x); printf("%d,", a[2].y);
printf("%d\n", (*(p+3)).x); }
5.写出下列程序的输出结果。

#include "stdio.h" void main() { int a[10]={1,2,3,-4,5,6,7,-8,9,10},s=0; for(int i=0;i<10;i++) { if (a[i]<0) break; s+=a[i]; }
printf("%d",s); }
四、程序填空题(每空 2 分,共 20 分)
1.下列程序,求数组中主对角线元素之和。

main()
{ int a[3][3],s=0; for(int i=0;i<3;i++ )
2.写出下列程序的输出结果。

#include
void sub(int x, int y, int *z) { *z=y-x;} main( ) {int a,b,c; sub(7,3,&a); sub(2,a,&b); sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c); }
4.写出下列程序的输出结果。

#include "stdio.h" void main() { int k, j, a[5][5], b[5]; for(k=0; k<5; k++) for(j=0; j<5; j++) a[k][j]=k*5+j+1; for(k=0; k<5; k++) { b[k] = 0; for(j=0; j<5; j++) b[k] += a[k][j]; } for(k=0; k<3; k++) printf("%4d", b[k]);
}
for(int j=0;j<3;j++)
scanf("%d", ①);
for(i=0;i<3;i++)
for(int j=0;j<3;j++)
if( ②)
s+= ③;
printf("s=%d\n",s);
}
2.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、及其它字符的个数,请填空。

#include
void main()
{ int alpha,space,digit,other;
char *p,s[80];
alpha=space=digit=other=0;
gets(s);
for(p=s;*p!='\0';p++)
if( ④ )alpha++;
else if( ⑤ )space++;
else if( ⑥ )digit++;
else other++;
printf("alpha:%d space:%d digit:%d other:%d\n",alpha,space,digit,other);
}
输入10个数,按从大到小的顺序排序输出。

#include
void main()
{ int i,j,a[10],temp;
for(i=0;i<10;i++)

for(i=0;i<9;i++)
for( ⑧;⑨;j++)
if( ⑩)
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
五、编程题 ( 每题10分,共 20 分)
1.从键盘输入10个整数,求所有素数的和。

要求判断整数是否为素数的功能用函数实现。

2.a为float 型的一维数组,输入n个实数,去掉一个最大数,去掉一个最小数,求其他n-2个数的平均值(输出时要求保留一位小数.) 如输入 5 /* n=5 */
2.1
3.5
4.3 1.9 3.7
则输出3.5+2.1+3.7的平均值:3.1。

1-5 ADBAC 6-10 CBACD 11-15 CCABB 16-20 DBBAC
1、1
2、8,14,a
3、,
4、123
5、45.0
6、 6
7、’\0’
8、数据类型
9、按行
10、0
11、 5
三.1、0
2、-4,-6,-2
3、 10,60,70
4、15 40 65
5、 6
1、&a[i][j]
2、 i==j
3、 a[i][j]
4、(*p>='a'&&*p<='z')|| (*p>='A'&&*p<='Z')
5、 *p==' '
6、(*p>='0'&&*p<='9')
7、scanf("%d",&a[i]);
8、j=0
9 j<9-i
10、a[j]<a[j+1]< p="">
1
#include
#include
Void main(void)
{
Int a[10],i,sum=0;
Int f(int x);
for(i=0;i<10;i++)
{Scanf(“%d”,&a[i]);
if(f(a[i]) sum=sum+a[i];
}
Printf(“sum=%d”,sum);
}
Int function f(int x)
{
Int I,k=1;
For(i=2;i<=sqrt(x);i++)
If(x%i==0)
{k=0;
Break;
}
Return k
}
2
#include
Void main(void)
{
float a[100] ,sum=0,avg,max,min; int I,n;
scanf(“%d”,&n);
for(i=0;i<n;i++)< p="">
Scanf(“%f”,&a[i]);
max=a[0];
min=a[0];
sum=a[0];
for(i=1;i<n;i++)< p="">
sum=sum+a[i];
if(a[i]>max) max=a[i];
if(a[i]
}
Avg=(sum-max-min)/n-2;
Printf(“avg=%.1f”,ang);
}
</n;i++)<> </n;i++)<> </a[j+1]<>。

相关文档
最新文档