当前位置:首页 » 工作应聘 » c面试题及答案

c面试题及答案

发布时间: 2021-03-03 15:47:43

Ⅰ C语言 试题解答

1.
#include <stdio.h>
void main()
{
float X = 0;
double Y;
printf("输入商品的原价:\n ");
scanf("%f", &X);

if (X < 1000)
{Y = X;}
else
if ( X < 2000)
{Y = 0.9*X;}
else
if ( X < 3000)
{Y = 0.8*X;}
else
{Y = 0.7*X;}

printf("折扣后应支付: %.2f\n", Y);
}
2.

#include <stdio.h>
#define N 3
void main()
{
int a[N]={0};
int i,max,min;
printf("输入要比较的三个数字:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<N;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
printf("最大版值为权%d\n最小值为%d",max,min);
}

Ⅱ 求 大一C语言期末笔试题及答案 ,谢谢~

一、 单项选择题(每小题2分,共40分) 将正确选项涂写在答题纸相应位置上。
1.使用一些图框表示各种类型的操作,其中输出框是_A___
A) B) C) D)
2.下面程序执行后,输出结果为__B__
A)-1,1,0 B)0,1,1 C)0,2,1 D)0,2,0
main()
{ int a=-1,b=1,c;
c=a++||++b;
printf("%d,%d,%d\n",a,b,c);
}
3.在下列标识符中,哪个是不合法的__A__
A)a+b B)_321 C)max D)name
4.设int型的数据长度为2个字节,则unsigned int型数据的取值范围是__B__
A)0~28-1 B)0~216-1 C)-215~215-1 D)-28~28-1
5.以下叙述正确的是__C__
A)在C程序中,可以有两个以上的main函数。
B)在编译C程序时,可发现注释中的拼写错误。
C)C程序的每行可以书写多条语句。
C)scanf和printf是C语言提供的输入输出语句。
6.正确的赋值语句是_A___
A)a=2+(b=1); B)a=+b=3 C)a=b=c D)y=int(x)
7.下列程序的运行结果是__C__
A)10 B)2*5=10 C)a*b=10 D)2*5=a*b
#include〈stdio.h〉
main()
{ int a=2 ,b=5 ;
printf("a*b=%d\n",a*b);
}
8.下面程序片段执行后,y的值为__D__
A)2 B)0 C)6 D)4
int x=2 ,y=0;
y=x;
if(x<5) y=y+2;
x=6;
9.以下对C语言函数的描述中,正确的是_A___
A)调用函数时,参数可以是表达式
B)函数的定义可以是嵌套
C)函数必须有返回值
D)所有函数必须在同一个程序文件中定义
10.在C 语言中,函数返回值的类型由__D__决定。
A)调用函数时临时决定 B)return语句中的表达式类型
C)调用函数的主调函数类型 D)定义函数时所指定的函数类型
11.以下程序的输出结果是_D___
A)10 B)11 C)12 D)13
#define MA(x) x*(x+3)
main()
{ int a=1,b=2;
printf("%d\n",MA(a+b));
}
12.正确的数组定义是__A__
A)char a[ ]={'A','B','C','\0'}; B)int a[3]={1,2,3,4,5};
C)char a="ABC\0"; D)int a[ ] ="ABC";
13.设有数组定义:float a[ ]={1,2,3,4,5};则数组a所占的内存空间为_B___
A)10个字节 B)20个字节 C)30个字节 D) 40
14.设有数组定义:int a[ 3];则正确的赋值为__C__
A)a[3]=5; B)a=1,2,3; C)a[0]=3; D)a={1,2,3};
15.下列程序执行后的输出结果是(B )
A)abcd0you B)abcd C)you D)abcdeyou
main( )
{ char arr[10] ="abcde";
strcat (arr,"you");
arr[4]='\0';
printf("%s\n",arr);
}
16.有如下程序段
int *p1,a=10 ,**p2;
p1=&a; p2=&p1; **p2=a+10;
执行该程序段后,a的值为__B__
A)编译出错B)20 C)随机数 D)10
17.对于基类型相同的两个指针变量,能够进行运算的是__A__
A)= B)*C)/ D)+
18.设有以下定义:
int a[4][5]={1,2,3,4,5,,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int (*p)[5]=a;
则下列能够正确表示数组元素a[2][3]的表达式是__C__
A)*((*p+3)[2]) B)*(*(*p+6)) C)*(*(a+2)+3) D)*(*p+2)+3
19.下列程序的输出结果是__B__
A)3 B)4 C)5 D)6
struct abc
{ int a,b; };
main( )
{ struct abc x[2]={ {1,2},{3,4}};
int t;
t=x[0].a*x[1].b;
printf("%d\n",t);
}
20.对于C语言的文件,正确的结论是__A__
A)文件操作必须先打开文件 B)文件的存取只能是随机方式
C)文件又由数据行组成 D)只能处理二进制文件
二、 填空题(1~5题,每空2分,6~7题,每空3分,共25分)
1.设有以下变量定义,并已赋确定的值
char w; int x; float y; double z;
则表达式:w*x +z-y所求值的数据类型位 double 。
2.在使用Turbo C调试C程序时,按F9键是指 编译、连接 。
3.如果一个函数只能被本文件中其他函数所调用,它称为 内部函数 。
4.在对一个文件读写之前要 打开文件 。
5.下面出错信息的含义是 重复声明main 。
Redeclaration of 'main'
6.程序的功能是:输出所有能被3整除且个位数为6的3的位数。
#include <stgio.h>
main()
{ int i;
for(i=106; i<996; i+=10 )
if(i%3==0) printf(“%d\n”,i) ;
}
7.以下程序用递归法求解 ,当最后一项的值小于0.00001时,累加结束。
main()
{ double s,x;
double sum(double,double,double *);
scanf("%lf",&x);
s=1.0;
if( x>1 )
{ printf("s=%10.5lf\n",sum(1.0,x,&s); )
else printf("data error!\n");
}
double sum(double t,double p, double *a )
{ t=t/p;
if(t>=0.00001)
sum(t,p,a);
*a+= *a+=t ;
return(*a);
}

三、修改程序题(每个*found*下面都有一处错误,共有5处错误,每处3分,共15分)
1.下面的程序将输入的两个整数按大小顺序输出。请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
/**********found**********/
void swap(int *p1,*p2)
{ int temp; (int*temp)
temp=*p1;
/**********found**********/
p1=p2;
*p2=temp; (*p2=*temp)
}
main()
{ int a,b;
int *p_1,*p_2;
scanf("%d%d",&a,&b);
p_1=&a; p_2=&b;
if(a<b) swap(p_1,p_2);
printf("\n%d,%d\n",a,b);
}
2.建立字符串“Hi xxxxxx How are you.”,在字符串xxxxxx的位置输入自己的姓名,最后输出完整的字符串。如:姓名为“Christian”,则输出为“Hi Christ How are you.”。请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#include <string.h>
/**************found******************/
void fun(char string,char name ) (void fun(char *string,char *name ))
{ int i=0;
while(name[i]!='\0' && i<6)
{ string[3+i]=name[i]; (string[3+i]=' ')
i++;
}
/************************found ***************/
for(; i<6; i++)
string[6+i]=' ';/* 代表空格 */
}
main( )
{ char str[30]={"Hi xxxxxx How are you."},c[10];
gets(c);
fun(str,c);
/************************found ***************/
printf("\ns",str[0]); (printf("\ns",str);)
}
四、程序设计题(每题10分,共20分)
1.函数fun 的功能是:在a数组的n个数中找出最小数、最大数以及它们的下标,并由m数组传回。
注意:不要改动给出的部分源程序,仅要求编写函数fun。
#include <conio.h>
#include <stdio.h>
#define M 10
void fun(int a[ ],int rn[2],int n)
{

}
main( )
{
int i,a[M],b[2];
printf("input a array:\n");
for(i=0; i<M; i++)
scanf("%d",&a[i];
fun(a,b,M);
printf("The result is :\n");
printf("最小数的下标为:%d ",c[0]);
printf("最大数的下标为:%d ",c[1]);
}
2.不得修改main函数,编写sort函数的函数体。输入5个国名并按字母顺序排列后输出。
#include "string.h"
main()
{
void sort(char *name[],int n);
static char *name[]={ "CHINA","AMERICA","AUSTRALIA",
"FRANCE","GERMAN"};
int i,n=5;
sort(name,n);
for(i=0; i<n; i++) printf("%s\n",name[i]);
}
void sort(char *name[],int n)
{

}

Ⅲ 一道c语言面试

强制来类型转换,a+b 变是一个源unsigned int 类型,usigned int 的范围 0~4294967295,不存在负数,这样便产生了数据溢出,数据补一位再减去14,即2^32-14,所以会比6要大

Ⅳ c语言常见面试题

C语言面试常见问题
预处理器(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)
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢?

Static

6. 关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。

Const

7.关键字const有什么含意?
我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)
如果应试者能正确回答这个问题,我将问他一个附加的问题:
下面的声明都是什么意思?

const int a;
int const a;
const int *a;
int * const a;
int const * a const;

/******/
前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

Volatile

8. 关键字volatile有什么含意?并给出三个不同的例子。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1) 并行设备的硬件寄存器(如:状态寄存器)
2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3) 多线程应用中被几个任务共享的变量

回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。
假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。
1)一个参数既可以是const还可以是volatile吗?解释为什么。
2); 一个指针可以是volatile 吗?解释为什么。
3); 下面的函数有什么错误:

int square(volatile int *ptr)
{
return *ptr * *ptr;
}

下面是答案:
1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
2); 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。
3) 这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:

int square(volatile int *ptr)
{
int a,b;
a = *ptr;
b = *ptr;
return a * b;
}

由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:

long square(volatile int *ptr)
{
int a;
a = *ptr;
return a * a;
}

位操作(Bit manipulation)

9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
对这个问题有三种基本的反应
1)不知道如何下手。该被面者从没做过任何嵌入式系统的工作。
2) 用bit fields。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到 Infineon为其较复杂的通信芯片写的驱动程序,它用到了bit fields因此完全对我无用,因为我的编译器用其它的方式来实现bit fields的。从道德讲:永远不要让一个非嵌入式的家伙粘实际硬件的边。
3) 用 #defines 和 bit masks 操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案如下:

#define BIT3 (0x1 << 3)
static int a;

void set_bit3(void)
{
a |= BIT3;
}
void clear_bit3(void)
{
a &= ~BIT3;
}

一些人喜欢为设置和清除值而定义一个掩码同时定义一些说明常数,这也是可以接受的。我希望看到几个要点:说明常数、|=和&=~操作。

访问固定的内存位置(Accessing fixed memory locations)

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:
int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;

A more obscure approach is:
一个较晦涩的方法是:

*(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

中断(Interrupts)

11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf("\nArea = %f", area);
return area;
}

这个函数有太多的错误了,以至让人不知从何说起了:
1)ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。
2) ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。
3) 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
4) 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。

代码例子(Code examples)

12 . 下面的代码输出是什么,为什么?

void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
}
这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

13. 评价下面的代码片断:

unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
/*1's complement of zero */

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。
到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧...

动态内存分配(Dynamic memory allocation)

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?
这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是 P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:
下面的代码片段的输出是什么,为什么?

char *ptr;
if ((ptr = (char *)malloc(0)) == NULL)
puts("Got a null pointer");
else
puts("Got a valid pointer");

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是"Got a valid pointer"。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

15 Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

#define dPS struct s *
typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?
这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子:

dPS p1,p2;
tPS p3,p4;

第一个扩展为

struct s * p1, p2;
.
上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

晦涩的语法

16 . C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

int a = 5, b = 7, c;
c = a+++b;

这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:

c = a++ + b;

因此, 这段代码持行后a = 6, b = 7, c = 12。
如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题。

Ⅳ C语言试题答案

1、就近;花括号
2、取模,x%10
3、不会~~,窘
4、没用过TC,不会~~,窘
5、死循环,while(1);
6、/**/,注释
7、是回答10 和10l 吧~~前者int,2个字节或者4个字节,后者long ,4个字节
8、不会~~,窘
9、printf("%ld",in);
10、步骤
11、循环变量的初值,循环条件和循环变量的增量,
12、关键字???
13、不会~~,窘
14、#define EMI 6688
15、一元
16、六
17、18、19懒的看了,LZ自己用printf(),看看结果
20、D
21、A
22、B
23、A
24、A
25、
26、C
27、
28、B、D,多选?
29、
30、B
31、D
32、 C
不一定正确~~问老师吧,窘

Ⅵ c语言笔试题及答案

我就把主程序写给你啊

main()
{
int x;
long int f;
printf("Please input x: ");
if(x>0)
f=2x-1;
else if(x=0)
f=-7909;
else
f=-5x+27;
printf("F(x)=%ld",f);
}

还有你说的图一版 根本看不到、权、

Ⅶ c/c++ 面试题

const int StackSize=100;
template<class DataType>
class SeqStack
{
public:
SeqStack(){top=-1;}
~SeqStack(){}
void Push(int x);
int Pop();
private:
int data[100];
int top;
};
template<class DataType>
void SeqStack<DataType>::Push(int x)
{if(top==99) throw"上溢";
data[++top]=x;
}
template<class DataType>
int SeqStack<DataType>::Pop()
{
if(top==-1) throw"下溢";
x=data[top--];
return x;
}

Ⅷ 求C/C++面试题,好的话加分!!尽快!!!

我有本书《程序员面试宝典》,发给你看看 。要是觉得好的话别忘了给分

热点内容
鬼片高清画质。电影。 发布:2024-08-19 09:14:10 浏览:650
一家看电影网 发布:2024-08-19 08:57:54 浏览:155
韩国大尸度电影推荐 发布:2024-08-19 08:55:58 浏览:719
接吻电影的名字美国 发布:2024-08-19 08:41:41 浏览:758
韩剧女主高中就怀孕了剧名 发布:2024-08-19 08:00:29 浏览:692
蓝色头发电影女主角 发布:2024-08-19 07:51:59 浏览:849
台湾电影老师上了学生 发布:2024-08-19 07:36:20 浏览:964
两人吃屎的电影 发布:2024-08-19 07:25:07 浏览:450
有裸露下体的大尺度电影吗 发布:2024-08-19 07:20:50 浏览:790
好看的电影在线观看免费 发布:2024-08-19 06:55:37 浏览:912