嵌入式C高级编程笔试B(有答案)3.25

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

<<嵌入式C高级编程笔试>>试卷B
一、选择题(35*2’)
1. 语句printf(″s\\t″)的输出结果为( B )
A s\\t
B s\t
C s\
D s
*2. 程序中定义以下宏 #define S(a,b) a*b
若定义 int area; 且令area=S(3+1,3+4),则变量area的值为( A )
A. 10 B. 12 C. 21 D. 28
正确标识符 D
A ?a
B a=2
C a.3
D a-3
3. float a = 3.2;(int)a;printf("a = %d, \n", a);打印什么,运行后a的类型是(D)
A. 3.000000, int
B. 3, int
C. 3.0 float
D. 既不是3,也不是3.000000, float
4.有以下代码:
void func()
{
int a;
a++;
printf("a = %d\n", a);
}
那么变量a储存在( A )
A. 栈
B. 堆
C. 正文段
D. 未初始化数据段
5. 在C语言中, char型数据在内存中的存储形式是( D )
A、补码
B、反码
C、原码
D、ASCII码
*6. 执行下列语句中,sum变量的值是( B )
int sum=0
for(int i=0;i<10;i++,sum+=i);
A 45
B 55
C 0
D 编译错误
假如p指向整型变量x, 则(*p)++等价B
A p++
B x++ C*(p++) D&x++
7. 为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与( C )组成配对关系。

A. 缩排位置相同的if
B. 在其之前未配对的if
C. 在其之前未配对的最近的if
D.同一行上的if
8. 设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( B )。

A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
9.有函数
void func()
{
static int c;
c++;
printf("%d\n", c);
}
那么连续调用两次,打印的结果是?( B )
A. 1, 1
B. 1, 2
C. 123495,123496(因为c没初始化,内部的值随机,第二次会比第一次加1)
D. 123495, 123495(因为c没初始化,内部的值随机,并且,值不会增加)
10.如果有以下代码:
char string[] = "love me please";
char *p = string;
char *q = p + 4;
*q++ = '\0';
printf("\"%s\"", p);
printf("\"%s\"", q);分别打印:( B )
A. "love me please" ""
B. "love" "me please"
C. "love me please" "me please"
D. 因为常量字符串不能修改,会发生段错误
11.free(p);
哪个是错误的( D )
A. p的值必须是malloc的返回值
B. 一个指针不能被连续free两次
C. free了p以后p是野指针,应该置为NULL
D. free了以后p的值会自动置为NULL,所以*p = 9会段错误
12.下列描述中不正确的是( C )。

A. 字符型数组中可能存放字符串。

B. 可以对字符型数组进行整体输入、输出。

C. 可以对整型数组进行整体输入、输出。

D. 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。

13.不能把Hello!赋给数组b的语句是( B )。

A. char b[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!’};
B. char b[ 10];b=“Hello!”;
C. char b[10]; strcpy(b,“Hello!”);
D. char b[10]=“Hello!”;
14. 对于循环队列,下列叙述中正确的 D
A)队头指针是固定不变的
B)队头指针一定不大于队尾指针
C)队头指针一定小于队尾指针
D)队头指针可以大于队尾指针,也可以小于队尾指针
15. 有以下程序
#include <stdio.h>
main()
{
int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d\n”,m,n,*p,*q);
}
程序运行后的输出结果为 B
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2
16. 若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是: A A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1]
17. 下面函数的功能是 A
fun(char *a,char*b)
{
while((*b=*a)!=’\0’)
{
a++;b++;
}
}
A将a所指字符串赋给b所指空间
B使指针b指向a所指字符串
C将a所指字符串和b所指字符串进行比较
D检查a和b所指字符串中是否有’\0’
18. 设有以下函数:
void fun(int n,char *s){……}
则下面对函数指针的定义和赋值均正确的是 A
A void (*pf)( );pf=fun;
B void *pf();pf=fun;
C void *pf();*pf=fun;
D void (*pf)(int,char);pf=&fun;
19. #include <stdio.h>
main ( )
{
int n=2,k=0;
while(k++&&n++>2);
printf(“%d %d\n”,k,n);
}
程序运行后的输出结果是( )D
A、0 2
B、1 3
C、 5 7
D、1 2
20. 有如下代码:
struct test
{
char *name;
int age;
};
int main()
{
char myname[] = "hello, world";
struct test a1, a2;
= myname;
a1.age = 13;
a2 = a1;
[0] = 'm';
printf("%s\n", );
}
输出的结果为:( A )
A. mello, world
B. hello, world
C. 编译无法通过
D. 会段错误
21. 以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。

#define MIN -2147483647
int findmax {int x[],int n}
{ int i,max;;
for {i=0;i<n;i++}
{ max =MIN;
if(max<x[i]) max=x[i];}
return max;
}
造成错误的原因是 D
A)定义语句int i,max:中max 未赋初值
B)赋值语句max=MIN;中,不应给max 赋MIN值
C)语句if(max<x[i]) max=x[i];中判断条件设置错误
D)赋值语句max=MIN;放错了位置
22. 有以下程序
#include <stdio.h>
main()
{int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf(“%d,%d,%d\n”,m,n,*p,*q);
}
程序运行后的输出结果为 B
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2
*23. 若x=4,则x*=x+2的值为( B )
A 36
B 24
C 18
D 20
下面结构体定义语句,错误B
A struct ord{int x; int y; int z;};struct ord a;
B struct ord{int x; int y; int z;} struct ord a;
C struct ord{int x; int y; int z;} a;
D struct {int x; int y; int z;} a;
24. 下列关于C语言文件的叙述中正确的是:( C )
A) 文件由一系列数据依次排列组成,只能构成二进制文件
B) 文件由结构序列组成,可以构成二进制文件或文本文件
C) 文件由数据序列组成,可以构成二进制文件或文本文件
D) 文件由字符序列组成,其类型只能是文本文件
25. 冒泡排序在最坏情况下的比较次数是( C )
A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2
26. 以下叙述中错误的是( C )
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
27. 若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( C )A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;
28. 在一个C语言源程序文件中所定义的全局变量,其作用域为:( D )
A) 所在文件的全部范围 B) 所在程序的全部范围
C) 所在函数的全部范围 D) 由具体定义位置和extern 说明来决定范围
*29.以下关于typedef的叙述中错误的是( A )
A 用typedef可以增加新的类型
B 用typedef可以定义各种类型名,但不能用来定义变量
C 用typedef只是将已有的类型用新的标识符来代表
D 使用typedef有利于程序的通用和移植
D
Main()
{
FILE *Fp;int a[10]={1,2,3,0,0},i;
Fp=fopen(“d2.dat”,”wb”);
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
Fp=fopen(“d2.dat”,”rb”);
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i <10;i++) printf(“%d”,a[i])
}
A 123000000
B 1231230000
C 1230123000 D1230012300
30. 若int k=8;则执行下列程序后,变量k的正确结果是
main()
{int k=8;
switch(k)
{case 9:k+=1;
case 10:k+=1;
case 11:k+=1;break;
default:k+=1;}
printf("%d\n",k);}
A)12
B)11
C)10
D)9
正确答案: D
31. 若int i,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是A)9
B)8
C)3
D)2
正确答案: C
32. #include "stdio.h"
main()
{ int i=6;
while(i--)
printf("%d",--i);
printf("\n");}
A)531
B)420
C)654321
D)死循环
正确答案: B
33.下列关于指针变量赋空值的说法错误的是
A)当赋空值的时候,变量指向地址为0的存储单元
B)赋值语句可以表达为变量名=′\0′;
C)赋值语句可以表达为变量名=0;
D)一个指针变量可以被赋空值
正确答案: A
34. 以下二维数组c的定义形式是
A)int c[3][]
B)float c[3,4]
C)double c[3][4]
D)float c(3)(4)
正确答案: C
35. 阅读下列程序,则执行后输出的结果是
#include "stdio.h"
int k=1;
main()
{fun(k);
printf("%d\n",k);}
fun(int k)
{ k++;
k=k*6;}
A)1
B)2
C)6
D)12
正确答案: A
二、编程题(30 ’)
1.编程打印如下图形:
难点在三角形左边的空格的控制,嵌套一个循环语句完成此任务。

#include<iostream.h>
int main(){
int i,j;
for (i=1;i<=4;i++){
for(j=4-i;j>0;j--) cout<<" ";//三角形每行前部的空格
for(j=1;j<=2*i-1;j++) cout<<" *";
cout<<endl;
}
for(i=1;i<=3;i++) cout<<" * * *\n";
return 0;
}
2. 请编写函数fun, 函数的功能是: 判断字符串是否为回文?若是,函数返回1,主函数中输出: YES, 否则返回0, 主函数中输出NO。

回文是指顺读和倒读都一样的字符串。

#include<stdio.h>
#include<string.h>
#define N 7
int fun(char *str)
{
int i, j = strlen(str) ;
for(i = 0 ; i < j / 2 ; i++)
if(str[i] != str[j - i - 1]) return 0 ;
return 1 ;
}
int main()
{ char s[N] ;
printf("Enter a string: ") ; gets(s) ; printf("\n\n") ; puts(s) ;
if(fun(s)) printf(" YES\n") ;
else printf(" NO\n") ;
}。

相关文档
最新文档