c语言有若干同学,笔试60,机试,c语言笔试题

本文提供了多组C语言的笔试题目,涵盖了预处理器、宏定义、无限循环、数据类型声明等方面。强调了预处理器计算常数表达式的能力、宏定义中的条件操作符使用、整型溢出问题、无限循环的实现方式、数据声明的细节以及指针运算。此外,还讨论了局部变量与全局变量的关系、内存分配和释放、链表操作等概念。这些问题旨在考察应聘者的C语言基础知识和实践经验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标签:笔试题目

时间:2018-04-06

【yjbys.com - 笔试题目】

预处理器(preprocessor)

1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

#define seconds_per_year (60 * 60 * 24 * 365)ul

我在这想看到几件事情:

1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)

2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号l,告诉编译器这个常数是的长整型数。

4) 如果你在你的表达式中用到ul(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。

2 . 写一个"标准"宏min ,这个宏输入两个参数并返回较小的一个。

#define min(a,b) ((a) <= (b) ? (a) : (b))

这个测试是为下面的目的而设的:

1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准c的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。

2)三重条件操作符的知识。这个操作符存在c语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。

3) 懂得在宏中小心地把参数用括号括起来

4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?

least = min(*p++, b);

3. 预处理器标识#error的目的是什么?

如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读c语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。

死循环(infinite loops)

4. 嵌入式系统中经常要用到无限循环,你怎么样用c编写死循环呢?

这个问题用几个解决方案。我首选的方案是:

while(1)

{

}

一些程序员更喜欢如下方案:

for(;;)

{

}

这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。如果他们的基本答案是:"我被教着这样做,但从没有想到过为什么。"这会给我留下一个坏印象。

第三个方案是用 goto

loop:

...

goto loop;

应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的basic/fortran程序员。

数据声明(data declarations)

5. 用变量a给出下面的定义

a) 一个整型数(an integer)

b)一个指向整型数的指针( a pointer to an integer)

c)一个指向指针的的指针,它指向的指针是指向一个整型数( a pointer to a pointer to an intege)r

d)一个有10个整型数的数组( an array of 10 integers)

标签:笔试题目

时间:2018-04-04

【yjbys.com - 笔试题目】

一、判断

1、有数组定义inta[2][2]={{1},{2,3}};则a[0][1]的值为0。()

2、int(*ptr)(),则ptr是一维数组的名字。()

3、指针在任何情况下都可进行>,=,<=,==运算。()

4、switch(c)语句中c可以是int,long,char,float,unsignedint类型。()

5、#defineprint(x)printf("theno,"#x",is")

二、填空

1、在windows下,写出运行结果,每空2分,共10分。

charstr[]="Hello";

char*p=str;

intn=10;

sizeof(str)=()

sizeof(p)=()

sizeof(n)=()

voidfunc(charstr[100])

{}

sizeof(str)=()

2、voidsetmemory(char**p,intnum)

{*p=(char*)malloc(num);}

voidtest(void)

{char*str=NULL;

getmemory(&str,100);

strcpy(str,"hello");

printf(str);

}

运行

test函数有什么结果?()

标签:笔试题目

时间:2018-03-30

【yjbys.com - 笔试题目】

1. 输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:

struct ListNode

{

int m_nKey;

ListNode* m_pNext;

};

A: 递归方法逆序输出,栈方法逆序输出。 (任意实现一种既可)

void PrintListUsingRecursicve(pListNode head)

{

if(head!=NULL)

{

PrintListUsingRecursicve(head->m_pNext);

printf("%d/n",head->m_nKey);

}

}

void PrintListUsingStack(pListNode head)

{

Stack s;

s.top=0;

pListNode p=head;

do{

push(&s,p->m_nKey);

p=p->m_pNext;

}while(p!=NULL);

while(!IsEmpty(&s))

{

printf("%d/n",pop(&s));

}

}

2. 二元树的深度

题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

标签:笔试题目

时间:2018-03-28

【yjbys.com - 笔试题目】

1、局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量?

答:extern

可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。

可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

4、语句for( ;1 ;)有什么问题?它是什么意思?

答:和while(1)相同。

5、do……while和while……do有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环

6、请写出下列代码的输出内容

标签:笔试题目

时间:2018-03-13

【yjbys.com - 笔试题目】

想考计算机C语言笔试的同学要注意了,接下来是yjbys小编为大家精心搜集的计算机C语言笔试题目及答案,供大家参考借鉴。

一、 填空题(本大题共25小题,每小题2分,共50分)

1.以下C语言提供的合法的数据类型说明关键字为 d 。

A. Float B. Signed C .interger D. char

2.C语言中的标识符只能由字母、数字、下画线组成,且第一个字符 c 。

A必须为字母B必须为下画线C必须为字母或下画线D可以是字母、数字或下画线中任何一种。

3.设有以下语句:

char a=3,b=6,c;

c=a^b<<2;

则 c 的二进制值是 a 。

A. 00011011

B. 00010100

C. 00011100

D. 00011000

4.假定w,x,y,z,m均为int型变量,有如下程序段

w=1; x=2; y=3; z=4;

m=(w>x)?w:x;

m=(m

m=(m

则程序运行后,m的值是 d 。

A 4 B 3 C 1 D 2

5.若执行以下程序时从键盘上输入9,则输出结果是 b 。

main()

{

int n;

scanf(“%d”,&n);

if(n++<10)

printf(“%d”\n,n--)

标签:笔试题目

时间:2018-03-07

【yjbys.com - 笔试题目】

一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)

1、有数组定义inta[2][2]={{1},{2,3}};则a[0][1]的值为0。()

2、int(*ptr)(),则ptr是一维数组的名字。()

3、指针在任何情况下都可进行>,=,<=,==运算。()

4、switch(c)语句中c可以是int,long,char,float,unsignedint类型。()

5、#defineprint(x)printf("theno,"#x",is")

二、填空题(共30分)

1、在windows下,写出运行结果,每空2分,共10分。

charstr[]="Hello";

char*p=str;

intn=10;

sizeof(str)=()

sizeof(p)=()

sizeof(n)=()

voidfunc(charstr[100])

{}

sizeof(str)=()

2、voidsetmemory(char**p,intnum)

{*p=(char*)malloc(num);}

voidtest(void)

{char*str=NULL;

getmemory(&str,100);

strcpy(str,"hello");

标签:笔试题目

时间:2018-01-28

【yjbys.com - 笔试题目】

C语言求职笔试题:

1、在64位高档机中,long占字节数为

a、4 b、8 c、32 d、 64 b

2、函数中局部变量生成于__中

a、堆 b、栈 c、静态存储区 d、代码存储区 c

3、不正确的附值或赋初值方式为__

a、char str[]="string";

b、char str[10]; str="string";

c、char *p="string"; c

d、char *p; p="string";

4、对于以下的变量定义,表达式___是正确的

struct node {

char s[10];

int k;

} p[4];

a、p->k=2;

b、p[0].s="abc";

c、p[0]->k=2;

d、p->s='a';

5、下面程序的输出__

#pragma pack(1) //如果#pragma pack(4)

void main()

{

struct test {

char c;

short s1;

short s2;

int i;

};

cout<

}

a、9 b、10 c、12 d、16

6、下面的程序段:

标签:笔试题目

时间:2017-12-27

【yjbys.com - 笔试题目】

1、C语言程序的基本单位是____ A) 程序行 B) 语句 C) 函数 D) 字符、C、1

2、C语言程序的三种基本结构是____ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构、A、1

3、C语言规定,程序中各函数之间 A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用、A、1

4、C语言中可处理的文件类型是( ) A) 文本文件和数据文件 B)文本文件和二进制文件 C) 数据文件和二进制文件 D)数据代码文件、B、1

5、C语言可执行程序的开始执行点是( ) A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数、C、1

6、C语言提供的合法的数据类型关键字是 A)double B) short C) integer D) char、B、1

7、C语言中,运算对象必须是整型数的运算符是 A) % B) \ C) %和\ D) * *、A、1

8、C语言中函数返回值的类型是由( )决定。 A) return语句中的表达式类型 B) 调用函数的主调函数类型 C) 调用函数时临时 D) 定义函数时所指定的函数类型、D、1

标签:笔试题目

时间:2017-12-27

【yjbys.com - 笔试题目】

1、编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。

char * search(char *cpSource, char ch)

{

char *cpTemp=NULL, *cpDest=NULL;

int iTemp, iCount=0;

while(*cpSource)

{

if(*cpSource == ch)

{

iTemp = 0;

cpTemp = cpSource;

while(*cpSource == ch)

++iTemp, ++cpSource;

if(iTemp > iCount)

iCount = iTemp, cpDest = cpTemp;

if(!*cpSource)

break;

}

++cpSource;

}

return cpDest;

}

2、请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。

int search(char *cpSource, int n, char ch)

{

int i;

for(i=0; i return i;

}

一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?

将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。

标签:笔试题目

时间:2017-12-26

【yjbys.com - 笔试题目】

一、 想说一说关于集中数据类型的sizeof问题,这题出现率40%

sizeof就是求在内存总占多少字节的问题,最基本的char 1字节 short 2字节 int 4字节

任何的指针都是4字节 sizeof(数组名)=数组占的大小(这里必须注意虽然数组名可作为只想数组首地址的指针,但是sizeof(数组名)求得的不是指针的大小,而是数组大小)

还有就是sizeof(结构体) sizeof(联合体)

举两个例子 struct stu {

Char a;

Int b;

Char c;

};

struct teacher {

Char a;

Char c;

Int b;

};

Sizeof (stu) =12 ;内存中这样存储 char 空空空 int char 空空空

内存4字节对其问题

Sizeof (teacher) =8 ;内存中这样存储 char char空空 int

关于联合体

Union std{

Char a[10];

Int b[3];

}

Sizeof(std)=12; 联合体公用内存,取其中所占内存最大的元素为联合体所占内存

以下为Windows NT下的32位C++程序,请计算sizeof的值

char str[] = “Hello” ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值