Skip to content

Latest commit

 

History

History
337 lines (222 loc) · 5.55 KB

安衡达面试.md

File metadata and controls

337 lines (222 loc) · 5.55 KB

01

下列叙述中正确的是()。
A)程序设计就是编制程序
B 程序的测试必须由程序员自己去完成
C 程序经调试改错后还应进行再测试
D 程序经调试改错后不必进行再测试

    
D

02

下列关于栈的描述正确的是()。
A)在栈中只能插入元素而不能删除元素
B 在栈中只能删除元素而不能插入元素栈是特殊的线性表只能在一端插入或删除元素
C 栈是特殊的线性表只能在一端插入或删除元素
D 栈是特殊的线性表,只能在一端插入元素而在另一端删除元素

C

03

以下叙述中错误的是()。
A  C语句必须以分号结束
B  复合语句在语法上被看作一条语句
C  空语句出现在任何位置都不会影响程序运行
D  赋值表达式末尾加分号就构成赋值语句

C

04

以下能正确定义且赋初值的语句是()。
A  int n1=n2=10;
B  char c=32;
C  float f=f+1.1;
D  double x=12.3E2.5;

B

05

有以下程序段
    int n,t=1,s=0; 
    scanf("%d",&n);
    do{s=s+t; t=t-2;} 
    while (t!=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是()。
A 任意正奇数
B 人员负偶数数
c 任意正偶数
D 任意负奇数

D

06

设变量已正确定义,则以下能正确计算f=n!的程序段是()。
A)   f=0;for(i=1;i<=n;i++)   f*=i;
B)   f=1;for(i=1;i>=2;i--)   f*=i;
C)   f=1;for(i=n;i>1;i++)    f*=i;
D)   f=1;for(i=n;i>=2;i--)   f*=i;

D

07

有以下程序
main(){
	int k=5,n=0; while(k>0)
    {switch(k) {
    default: break; 
    case 1:n+=k; 
    case 2:
    case 3: n+=k;}
    k--;}
    printf("%d\n",n);
}

程序运行后的输出结果是

7

08

设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。
Α  *p=*q;
B   p=q;
C  *p=&n1;
D   p=*q; 	

A

09

设函数 fun 的定义形式为void fun(char ch, float x) {..}则以下对函数fun的调用语句中,正确的是()。
A      fun("abc",3.0);
B      t=fun('D',16.5);
C      fun('65',2.8);
D      fun(32,32);

D

10

#include "stdio.h"
struct STU{
    int num;
    float TotalScore;
};
void f(struct STU p){
    struct STU s[2] = {{ 20044,550 } , { 20045,537 }};
    p.num = s[1].num;
    p.TotalScore = s[1].TotalScore;
}
int main(void){
    struct STU s[2] = { {20041,703},{20042,580} };
    f(s[0]);
    printf("%d %3.0f\n",s[0].num,s[0].TotalScore);
}
程序运行后的输出结果是()。

20044550

11

中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展一让标准C支持中断具代表事实是,产生了一个新的关键字interrupt下面的代码就使用了interrupt 关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的结果interrupt double compute_area (double radius){
	double area = Pl * radius * radius; 
	printf(" Ar ea = %f", area); 
	return area;
}

(1)中断不应该有返回值
(2)中断子程序中应该尽量少使用浮点类型因为不可重入以及printf也是不可重入的在不同平台移植会出错。
(3)中断不应该传参

12

在windows下写出运行结果char str[]=" Hello"; 
	char *p=str; 
	int n=10; 

则:
	sizeof(str)= (  6  ) 
    sizeof(p) = (  4  ) 
    sizeof(n) = (  4  )
    

void func(char str[100]){  4  }
sizeof(str)=( )

13

对于一个频繁使用的短小函数,在C语言中应用(    宏定义    )宏定义实现,在C++中应用(    内联函数       )实现https://www.nowcoder.com/questionTerminal/b76ada8b1eca4061a21bc87abbd0b48f?orderByHotValue=0&pos=298&mutiTagIds=569_609_614

14

若采用10MHz的晶体振荡器,则MCS-51单片机的振荡周期为(          )ns机器周期为(              )us
    
10M的晶振下你的
    振荡周期为  1S/10M=0.1us振荡周期为  0.1us状态周期为  0.1us*2=0.2us机器周期为  0.2us*6=1.2us.

15

一个 32 位的机器该机器的指针是(      )个字节
    
    4
    
指针是多少位只要看地址总线的位数就行了80386以后的机子都是32的数据总线所以指针的位数就是4个字节

16

设有定义double a[10],*s=a;,能够代表数组元素a[3]的是(         )
A.  (*s)[3]
B.  *(s+3)
C.  *s[3]
D.  *s+3
    
s指向数组首元素,s+3表示指针s向后移动3个位置,即指向数组的第4个元素a[3],用间址符*即可引用a[3]。            
    
    B

17

void main(void){
    union{
        char ch[2];
        int d;
    }s;
    
    s.d = 0x4321;
    printf("%x ,%x \n",s.ch[0],s.ch[1]);
}

 16 位编译系统上程序执行后的输出结果是21  ),(  43

18

#include "stdio.h"
//#includ "myfun.c"
void fun(){
    char s[80],c;
    int n = 0;
    while((c = getchar () ) != '\n' )
        s[n++] = c;
    n--;
    while(n >= 0)
        printf("%c",s[n--]);
}

void main(void){
    fun();
    printf("\n");
}

当编译连接通过后运行程序T18 输入Thank!则输出结果是:()
    
    !knahT

19

有以下程序
#define f(x) (x*x) 

main(){
	int i1, i2; 
	i1=f(8)/f(4) ; 
	i2=f(4+4)/f(2+2);
	printf("%d, %d\n",i1,i2);
}  

程序运行后的输出结果是()
    
    4               3

20

有这样的定义: int a, b;交换两个变量的值而不使用其他存储空间请写出算法:()
 
int a=10,b=12; //a=1010^b=1100;  
    
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;