C工程师笔试题_第1页
C工程师笔试题_第2页
C工程师笔试题_第3页
C工程师笔试题_第4页
C工程师笔试题_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C工程师笔试题C工程师笔试题

一、选择题(每题2分,共40分)

1.下列哪个是C语言的关键字?

A.function

B.struct

C.class

D.object

2.下列哪个语句用于释放动态分配的内存?

A.delete

B.free

C.malloc

D.new

3.下列哪种循环语句不会执行循环体?

A.for

B.while

C.do-while

D.if

4.下列语句中,哪个是合法的数组定义方式?

A.intarray[10];

B.array[10]={1,2,3,4,5,6,7,8,9,10};

C.array={1,2,3,4,5,6,7,8,9,10};

D.intarray={1,2,3,4,5,6,7,8,9,10};

5.下列哪个函数声明是合法的?

A.intadd(inta,b);

B.intadd(inta,intb)

C.add(inta,intb)int;

D.intadd(a,b);

二、填空题(每题4分,共40分)

1.以下程序的输出结果是________。

```c

#include<stdio.h>

voidfoo(int*x){

*x+=5;

}

intmain(){

inta=10;

foo(&a);

printf("%d",a);

return0;

}

```

2.以下程序的输出结果是_________。

```c

#include<stdio.h>

intmain(){

intarray[5]={1,2,3,4,5};

for(inti=0;i<5;i++){

printf("%d",array[i]);

}

return0;

}

```

3.填写下面函数的返回值。

```c

intadd(inta,intb){

returna+b;

}

intmain(){

intresult=add(3,5);

printf("%d",result);

return0;

}

```

4.填写下面循环语句的条件。

```c

inti=0;

while(________){

printf("%d",i);

i++;

}

```

5.填写下面语句的范围。

```c

floatnumber=3.14;

________%f",number);

```

三、程序阅读题(每题10分,共30分)

1.下面是一个排序算法,请写出该函数的功能和实现思路。

```c

voidbubbleSort(int*array,intlength){

for(inti=0;i<length-1;i++){

for(intj=0;j<length-i-1;j++){

if(array[j]>array[j+1]){

inttemp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

}

```

2.下面是一个递归函数,请写出该函数的功能和实现思路。

```c

intfactorial(intn){

if(n==0||n==1){

return1;

}

else{

returnn*factorial(n-1);

}

}

```

3.下面是一个指针操作的代码,请写出该函数的功能和实现思路。

```c

voidswap(int*a,int*b){

inttemp=*a;

*a=*b;

*b=temp;

}

```

四、编程题(共40分)

请编写一个函数,输入两个整数,返回其中较大的数。

五、编程题(共40分)

请编写一个函数,输入一个字符串,将字符串中的大写字母转换为小写字母,并返回新的字符串。如果输入为空字符,则返回空字符。

六、编程题(共40分)

请编写一个函数,输入一个整数n,输出从1到n的所有整数的平方和。

答案略,供考生自行完善。1.C语言的关键字是一些具有特殊含义的单词,它们用于定义变量、控制程序流程、操作内存等。选项中只有B.struct是C语言的关键字,用于定义结构体类型。

2.释放动态分配的内存可以使用free()函数。选项中B.free是正确答案,它用于释放使用malloc()函数或calloc()函数动态分配的内存。delete是C++中的操作符,用于释放动态分配的内存。

3.循环语句是用于重复执行某一段代码的语句。选项中D.if不是循环语句,它是用于条件判断的语句。其他选择项都是循环语句,用于循环执行某一段代码。

4.合法的数组定义方式是A.intarray[10];这是一种定义了长度为10的整型数组的方式。其他选择项中,B中数组赋值方式错误,C中数组赋值方式不支持直接赋值,D中定义了一个整型变量而不是数组。

5.合法的函数声明是B.intadd(inta,intb)这是一种声明了返回值类型为int、两个参数类型都为int的函数的方式。其他选择项中,A中参数缺少类型声明,C中返回值缺少类型声明,D中参数缺少类型声明。

---

二、填空题

1.该程序的输出结果是15。函数foo()将a的地址传递给指针变量x,然后通过解引用操作修改了a的值,使其加上了5。最后在主函数中打印出a的值。

2.该程序的输出结果是12345。通过循环遍历数组array,依次打印出每个元素的值。

3.该函数的返回值是8。在main()函数中调用add()函数,传递了两个参数3和5。add()函数将两个参数相加得到结果8,并返回给主函数。主函数打印出8。

4.循环语句的条件是i<10。在while循环中,先打印出i的值,然后将i的值加1。当i的值大于等于10时,不满足循环条件,退出循环。

5.语句的范围是printf("%f",number),用来打印出变量number的值。其中"%f"是格式控制符,用于指定打印的数据类型为浮点数。

---

三、程序阅读题

1.该函数的功能是实现冒泡排序算法。冒泡排序的基本思想是通过相邻元素比较,并根据大小关系进行元素交换,从而将最大或最小的元素冒泡到数组的末尾或开头。具体实现方法是,通过双重循环遍历数组,每次比较相邻的两个元素,如果发现顺序不对则交换它们。

2.该函数的功能是计算阶乘。递归是一种自调用的方法,函数factorial()当输入参数为0或1时,直接返回1。当输入参数大于1时,函数通过递归调用自身来实现计算阶乘的功能。具体实现方法是,根据阶乘的定义,将n与n-1的阶乘相乘,从而得到n的阶乘。

3.该函数的功能是交换两个整数的值。通过指针操作可以实现对变量的间接访问和修改。该函数接受两个整型指针作为参数,通过解引用操作获取指针所指向的变量的值,并进行交换。具体实现方法是,将变量a的值赋给临时变量temp,将变量b的值赋给变量a,最后将临时变量temp的值赋给变量b,从而实现了两个变量值的交换。

---

四、编程题

```c

#include<stdio.h>

intmax(inta,intb){

if(a>b){

returna;

}else{

returnb;

}

}

intmain(){

intnum1,num2;

printf("请输入两个整数:");

scanf("%d%d",&num1,&num2);

intresult=max(num1,num2);

printf("较大的数是:%d",result);

return0;

}

```

该程序定义了一个函数max(),输入两个整数,通过if语句比较两个数的大小,返回较大的一个数。在主函数main()中,通过scanf()函数从用户输入中获取两个整数,然后调用max()函数,将返回的结果保存在变量result中,最后使用printf()函数打印出结果。

---

五、编程题

```c

#include<stdio.h>

voidconvertToLower(char*str){

inti=0;

while(str[i]!='\0'){

if(str[i]>='A'&&str[i]<='Z'){

str[i]=str[i]+32;

}

i++;

}

}

intmain(){

charstring[100];

printf("请输入一个字符串:");

fgets(string,sizeof(string),stdin);

convertToLower(string);

printf("转换后的字符串:%s",string);

return0;

}

```

该程序定义了一个函数convertToLower(),输入一个字符串,遍历字符串中的每个字符,如果字符是大写字母,则将其转换为小写字母。在主函数main()中,通过fgets()函数从用户输入中获取字符串,然后调用convertToLower()函数进行大小写字母的转换。最后使用printf()函数打印出转换后的字符串。

---

六、编程题

```c

#include<stdio.h>

intcalculateSumOfSquares(intn){

intsum=0;

for(inti=1;i<=n;i++){

sum+=i*i;

}

returnsum;

}

intmain(){

intn;

printf("请输入一个整数:");

scanf("%d",&n);

intresult=calculateSumOfSquares(n);

printf("从1到%d的平方和为:%d",n,result);

ret

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论