IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言企业常问面试题 -> 正文阅读

[C++知识库]C语言企业常问面试题

------------------------C语言试题1START-------------------

一、选择题

1、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()。

A、float型
B、int型
C、long型
D、double型
参考答案:B

2、一个指向整数的数组指针可以定义为()。

A、int (*ptr)[]
B、int *ptr[]
C、int *(ptr[])
D、int ptr[]
参考答案:A

3、若有定义:int a[3][4]={{1, 2}, {0}, {1, 2, 3}};则a[1][1]的值为()。

A、3
B、{1, 2}
C、1
D、0
参考答案:D

4、下面这段代码输出的i的值是()。

int i=3;
while(i--)
printf(“%d\n”, i);
A、3  2  1  0
B、2  1  0
C、1  0
D、2  1
参考答案:B

5、以下程序的打印结果是()。

#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
int main(void)
{
      int i = 0;
      while(i < NUM)
         printf("%d", i++);
      printf("\n");
      return 0;
}
A、01234567
B、012345
C、123456
D、01
参考答案:A

6、已知声明:
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=1;则不能表示数组a中的元素的表达式是()。

A、*p
B、a[10]
C、*a
D、3[p]
参考答案:B

7、以下定义语句中正确的是()。

A、char a='A' b='B';  						
B、float a=b=a;
C、int a=10,*b=&a;  						
D、float *a,b=&a;
参考答案:C

8、设有如下的程序段:
char str[ ]=“Hello”;
char ptr;
ptr=str;
执行上面的程序段后,
(ptr+5)的值为()。

A、'o'
B、'\0'
C、不确定的值
D、'o'的地址
参考答案:B

9、若有int *p1, *p2,k; 不正确的语句是()。

A、p1=&k              
B、p2=p1 
C、*p1=k+12           
D、k=p1+p2 
参考答案:C

10、在循环语句的循环体中执行break语句,其作用是()。

A、跳出该循环体,提前结束循环
B、继续执行break语句之后的循环体各语句
C、结束本次循环,进行下次循环
D、终止程序运行
参考答案:A

11、为表示、“a和b都大于0”,应使用的C语言表达式是()。

A、(a>0)&&(b>0)
B、a&&b
C、(a>0)||(b>0)
D、(a>0)&(b>0)
参考答案:A

12.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )

A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
参考答案:D

13、有以下程序:

 int  func(char *s)
 {   
     char *t=s;         
     while(*t++){;}   
     t--;   
     return(t-s);
 }
int main(void)
{
     char *s = "abcdefghijk";
     int n = func(s);
     printf("%d\n", n);
}

程序的执行结果是( )

A.字符串s的长度
B.比较两个串的大小
C.将串s复制到串t
D.求字符串s所占字节数
参考答案:B

14、设有如下程序段,下面描述中正确的是 ( )。

int k=10; while(k=0) k=k-1;
A 循环执行一次 
B循环是无限循环 
C循环体语句一次也不执行 
D循环体语句执行一次  
参考答案:C

15、以下函数调用语句中含有( )个实参。
   func((e1,e2),(e3,e4,e5));

A 2   B 3   C 5   D 语法错误
参考答案:A

16、以下程序的输出结果为( )。

  	#define ADD(x) x*x
  	main( )
  	{ 
int a=4,b=6,c=7,d=ADD(a+b)*c;
  		printf("d=%d",d);
  	}
A d=70   B d=80   C d=140   D d=700
参考答案:D

17、若有以下定义,则p+5表示_______.

 int  a[10],*p=a;
  A元素a[5]的地址             B元素a[5]的值
  C元素a[6]的地址             D元素a[6]的值
参考答案:A

18、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )

A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
参考答案:D

19、以下叙述中错误的是( )

A.函数的形参存放在数据段中
B.函数可以返回地址值
C.可以给指针变量强制赋一个浮点数作为地址值
D.可以给指针变量赋NULL
参考答案:A

20、有以下程序

 #include<stdio.h>
 void fun(char *  (*p)  )
 {    
     ++p;   
     printf("%s\n",*p);
 }
 int main(void)
 {    
     char *a[ ]={"Morning","Afternoon","Evening","Night"};    
     fun(a);
 }

程序的运行结果是( )

A.Afternoon
B.fternoon
C.Morning
D.orning
参考答案:A

二、填空题

1、以下代码试图就出a、b、c的最小值:

 #include<stido.h>
int  main(void)
{    
    int a,b,c,t1,t2;    
    scanf("%d%d%d",&a,&b,&c);    
    t1=a<b? A  a:b;            
    t2=c<t1? B  c:t1;   
    printf("%d\n",t2);
}

2、已有定义如下:

struct node
{
    int data;
    struct node *next;
}*p;

以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间,请填写所需空间的大小 struct node
*p = (struct node *)malloc( sizeof(struct node) );

3、表达式(int)((double)5/2+2.5)的值是: 5
4、

 int  main(void)
 {   
     char *cptr,c;   
     void *vptr,v;   
     c=10;  
     v=0;
 }  

上述程序有何错误:

不能定义void型普通变量 [每空2分]

5、用变量m给出下面的定义

1 一个整型数 int m;
2 一个指向整型数的指针 int *m;
3 一个指向指针的指针,它指向的指针是指向一个整型数 int *p= 10;
int *m = p;
4一个有10个整型数的数组 int m[10];
5一个有10个指针的数组,该指针是指向一个整型数的 int *m[10]; m = 10;
6一个指向有10个整型数数组的指针 int (*p)[10];
7 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int *m(int m){ return m;}
8 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int *m[10];m=m(x);m(intn){return n;}

三、简答题

1、指出下面代码的不妥之处:

 void get_memory(T_S8 *p, T_S16 nNum)
 {
        p = (T_S8 *)malloc(sizeof(T_S8) * nNum);
 }
 void Test(void)
 {
        T_S8 *str = NULL;
        get_memory(str, 100);
        strcpy(str, "hello");
 }

答 :T_S8,T_S16未宏定义 值传递不能改变str的值,所以实参str的值仍然为NULL,不能执行strcpy(str,“hello”) , 会发生段错误。

2、以下程序的运行结果如何?原因?

char *get_memory(void)
{
   char p[] = "hello world";
   return p;
}
int main(void)
{
   char *str = NULL;
   str = get_memory();//此处无须括号
   printf("%s", str);//未解引用
}

答:编译出错。 结果不确定,函数调用结束,数组p的空间被释放,不用再次引用

3、以下test函数的运行结果如何?原因?

void test(void)
{
   char *str = (char *) malloc(100);
   strcpy(str, “hello”);
   free(str);
  
   if(str != NULL)
   {
      strcpy(str, “world”);
      printf("%s", str);
   }
}

答:输出 world 。 指针所指空间被free后不能再次被引用

四、编程

1、写一个程序,计算1到100的累加和。

int i=1,sum=0;
for(i=1;i<=100;i++)
{
		sum += i;
}
	printf(%d\n”,sum);

2、写一个函数,将作为实参出进去的字符串反转。

void reserverString(char str[])
{
	char tmp;
	int i, j;
	for (i = 0, j = strlen(str) - 1; i < j; i++, j--)
	{
		tmp = str[i];
		str[i] = str[j];
		str[j] = tmp;
	}
}

------------------------C语言试题1END-----------------------

------------------------C语言试题2START--------------------

一、选择题

1、在函数中未指定存储类别的局部变量,其隐含的存储类别是()。

A、静态(static
B、外部(extern
C、自动(auto)
D、寄存器(register)
参考答案:C

2、以下各C语句中正确的是()。

A、char st[4][5]={ "ABCDE" };
B、char *s = "ABCDE"; s[2] = 'Z';
C、char s[5] = {'A', 'B', 'C', 'D', 'E'};
D、char *S; scanf("%S", S);
参考答案:C

3、若有定义:int a[3][4]={{1, 2}, {0}, {1, 2, 3}};则a[1][1]的值为()。

A、3
B、{1, 2}
C、1
D、0
参考答案:D

4、在Linux下的32位C程序中,请计算sizeof的值()。
char str[] = “Hello”;
char *p = str;
请计算:sizeof§ = ( )

A、1		
B、4		 
C、5	  
D、6
参考答案:B

5、

#include <stdio.h>
int main(void)
{
     float x = 0.1;
     if(x == 0.1)
         printf("Equal");
     else
         printf("Not Equal");
     return 0;
}

则运行的结果是()。

A、Equal
B、Not Equal
C、运行错误
D、输出依赖于编译器
参考答案:B

6、下面程序段的运行的结果是()。

char *s="abcde";
s+=2;printf("%d", s);
A、cde
B、字符'c'
C、字符'c'的地址
D、无确定的输出结果
参考答案:A

7、不能把字符串“Hello!”赋给数组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!";
参考答案:B

8、若a为二维数组,则a[1][3]等价于()。

A、*((a+1)+3)
B、*(a[1]+3)
C、(*(a+1)+3) 
D、&a[1]+3
参考答案:B

9、break语句的正确用法是()。

A、无论在任何情况下,都中断程序的执行,退出到系统下一层。
B、在多重循环中,只能退出最靠近的那一层循环语句。
C、跳出多重循环。
D、只能修改控制变量。
参考答案:B

10、有以下程序

#include<stdio.h>
int main(void)
{   
    int y=9;   
    for( ; y>0; y--)  
    {     
        if(y%3 == 0)       
            printf("%d",--y);   
    }
}

程序的运行结果是( )

A.741
B.963
C.852
D.875421
参考答案:C

11、已知字符‘A’的ASCⅡ代码值是65,字符变量c1的值是‘A’,c2的值是‘D’。
则执行语句printf(“%d,%d”,c1,c2-2);后,输出结果是( )

A.A,B
B.A,68
C.65,66
D.65,68
参考答案:C

12、有以下程序

 #include<stdio.h>
 void fun(char *  (*p)  )
 {    
     ++p;   
     printf("%s\n",*p);
 }
 int main(void)
 {    
     char *a[ ]={"Morning","Afternoon","Evening","Night"};    
     fun(a);
 }

程序的运行结果是( )

A.Afternoon
B.fternoon
C.Morning
D.orning
参考答案:A

13、有以下程序

main()
	{ int  a=1, b=3, c=5;
	  int  *p1=&a, *p2=&b, *p=&c;
	  *p =*p1*(*p2);
	  printf("%d\n",c);
	}执行后的输出结果是 
A 1			B 2			C 3			D 4
参考答案:C

14、在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是( )

A  p向高地址移了一个字节		B  p向高地址移了一个存储单元
C  p向高地址移了两个字节		D  p与a+1等价
参考答案:A

15、若有以下定义,则对a数组元素的正确引用是_________.
int a[5],*p=a;

 A.*&a[5]   B.a+2  C.*(p+5)  D.*(a+2)
参考答案:D

16、设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是( )

  A  for(p=a;a<(p+10);a++);
  B  for(p=a;p<(a+10);p++);
  C  for(p=a,a=a+10;p<a;p++);
D  for(p=a;a<p+10; ++a);
参考答案:B

17、在C语言程序中,以下说法正确的是( )。

 A函数的定义可以嵌套,但函数的调用不可以嵌套
 B函数的定义不可以嵌套,但函数的调用可以嵌套
 C函数的定义和函数的调用都不可以嵌套
 D函数的定义和函数的调用都可以嵌套
参考答案:B

18、下面程序的输出结果()。

#include <stdio.h>
struct A{
int i;
char j;
char *ptr;
long Array[100];
char b[2];
char *c;
};
int main()
{
     printf("%d\n", sizeof(A)); 
     return 0;
}
A、415
B、416
C、420
D、421
参考答案:C

19、如下C程序输出的是()。

#include <stdio.h>
int mul(int a, int b, int c)
{
     return a*b*c;
}
int main(void)
{
     int (*function_pointer)(int, int, int);
     function_pointer = mul;
     printf("The product of three numbers is: %d",
     function_pointer(2, 3, 4));
     return 0;
}
A、不确定
B、编译出错
C、无输出
D、The product of three numbers is: 24
参考答案:D

20、设有如下枚举类型定义:

enum language { Basic=3, Assembly, Ada=100, COBOL, Fortran};
枚举变量Fortran的值为()。

A、4
B、7
C、102
D、不确定
参考答案:C

二、填空题

1、用变量m给出下面的定义
一个整型数   int m;
一个指向整型数的指针   int *m;
一个指向指针的指针,它指向的指针是指向一个整型数   int *p = 10;int *m = p;
一个有10个整型数的数组 int m[10];
一个有10个指针的数组,该指针是指向一个整型数的 int *m[10]; m = 10;
一个指向有10个整型数数组的指针  int (*p)[10];
一个指向函数的指针,该函数有一个整型参数并返回一个整型数  int *m(int m){ return m;}
一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int *m[10];m=m(x);m(int n){return n;}

2、以下程序的输出结果是 54321

 #include  <stdio.h>
 int  main(void)
 {   
     int  n=12345, d;     
     while(n!=0)
     {      
         d=n%10;  
         printf("%d",d);      
         n/=10;
     }
 }

3、给定结构

struct  A
{
	char t:4;
	char k:4;
	unsigned short i:8;
	unsigned long m;
};
sizeof(A) =  8

4、若有以下定义,则p+5表示_元素a[5]的地址.

  int  a[10],*p=a;

5、写出以下两段程序的执行结果。如果程序无法编译,请指出出错部分并写明原因;如果程序陷入死循环,请回答“死循环”。
如果执行结果出现内存错误,请指出出错部分并写明原因。

 int  main(void)
 {   
     char s[ ]="man";   
     int i;   
     for(i=0;  s[i];   i++) 
     {   
         printf("\n%c%c%c%c",s[i], *(s+i), *(i+s), i[s]);
     }
 } 

(1) mmmm (2)aaaa (3)nnnn

三、简答题

1、以下程序的运行结果如何?原因?

void get_memory(char **p, int num)
{
       *p = (char *)malloc(num);
}
int  main(void)
{
       char *str = NULL;
       get_memory(&str, 100);
       strcpy(str, "hello");
       printf("%s", str);
}
答:输出 hello 。

2、关键字static的作用是什么?

【参考答案】关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

3、头文件中的 ifndef/define/endif 干什么用?

【参考答案】防止该头文件被重复引用。

四、编程

1、定义一个整形变量a,并将a的第5位清0,第7位置1,其他位不变。

int a;
a = a & (~(0x01 << 5));
a = a | (0x01 << 7);

2、写一个函数,交换传进去的两个参数的值。

void swap(int *p1,int *p2)
{
		int temp;
		temp = *p1;
		*p1 = *p2;
		*p2 = temp;
}

------------------------C语言试题2END--------------------

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-27 17:12:03  更:2022-05-27 17:13:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 4:09:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码