刷c语言练习题(牛客网)

  题目来自牛客网,刷题链接:牛客网专项练习_校招题库练习题_行测题库考点考题 (nowcoder.com)icon-default.png?t=O83Ahttps://www.nowcoder.com/exam/intelligent

1、字符串“a+b=20\n”的长度是()

A、7

B、8

C、5

D、6

答案:A

解析:题目中问的是字符串的长度,而不是字符串的空间大小,所以答案应该是7,选择A选项。

2、有以下定义: char a; int b; float c; double d;则表达式a*b+d-c值的类型为:

A、float

B、int

C、char

D、double

答案:D

解析:本题考查的是计算时数据类型的隐式转换。一般都是低精度向高精度进行转换,所以应该选择精度最高的double类型。

3、 C语言源程序的最小单位是()

A、程序行

B、语句

C、函数

D、字符

答案:D

解析:程序行、语句、函数都是由字符构成的。C语言源程序的最小单位是字符,最小执行单元是函数。

4、 

1

2

3

4

5

6

7

8

int function(int a, int b, int c) {

    c =  a * b;

}

int main(void) {

    int c = 0;

    function(10,20, c);

    printf("%d", c);

}

上面代码的输出为()

A、200

B、100

C、20

D、0

答案:D

解析:题目中的这种参数传递方式是值传递,系统会为形参c开辟一个不同于实参c的独立空间,也就是说传递的是c的副本。在函数function()中并没有改变实参c的值,故选择选项D。

5、 

1

2

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

int *p = a;

下列表达式与 ++*p 相同的是()

A、*++p

B、a[0]

C、++a[0]

D、*p++

答案:C

解析:++*p,首先进行解引用取到1,接下来自增为2。*++p,指针先进行移动指向a[1],然后进行解引用取得a[1]的值,选项A错误。a[0]只是在访问数组,取得1,选项B错误。C选项先取得a[0]的值,然后进行自增,正确。D选项中是先取得a[0]的值,然后指针指向了a[1],没有改变a[0]的值,并且指针的指向还改变了,所以选项D错误。

6、 结构化程序设计强调()

A、程序的易读性

B、程序的效率

C、程序的规模

D、程序的可复用性

答案:A

解析:结构化程序设计是一种程序设计方法,它强调将程序划分为清晰、独立的模块或子程序,并使用顺序、选择(如if语句)和循环(如for或while循环)这三种基本控制结构来组织代码。这种方法的主要目的是提高程序的可读性、可维护性和可靠性。所以选择选项A。

7、 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )

A、char s[10]="abcdefg";

B、char t[]="abcdefg",*s=t;

C、const char *s ;*s="abcdefg";

D、char s[10];strcpy(s,"abcdefg");

答案:C

解析:C选项中的s是一个常量指针,不可以通过指针来修改这个常量,所以这样的赋值操作是错误的。常量指针是指这是一个指向常量的指针,这个常量不可以通过指针来修改。指针常量是说这个指针是一个常量,指针的指向不可以变。

8、 已知:char str1[8],str2[8]={"good"};,则在程序中不能将字符数组str2赋值给str1的语句是()

A、str1=str2;

B、strcpy(str1,str2);

C、strncpy(str1,str2,6);

D、memcpy(str1,str2,5);

答案:A

解析:数组名是一个地址常量,数组名之间不能彼此赋值。

9、 下列程序执行后的输出结果是()

1

2

3

4

int main() {

    char x = 0xFFFF;

    printf("%d\n",x--);

}

A、-32767

B、FFFE

C、-1

D、-32768

答案:C

解析:首先char类型空间只有一个字节也就是8个bit位,那么只能取后面十六进制数据的两个数来存,无论是大端存储还是小端存储,取得的数都应该是0xFF。由于数据在内存中是以补码的形式存储的,并且计算机默认数据是有符号的,那么应该求的0xFF的补码为-1。又因为printf中是后减减,那么输出的结果就应该是-1。

10、定义数组int A[6][9],若将其作为参数传入方法中,则对应的形参可以定义为()

A、int(*s)[9]

B、int *s[9]

C、int D[6][]

D、int D[][9]

答案:AD

解析:二维数组作为参数传递一定要保证列数是确定的,A选项定义的是一个二维数组指针,满足条件。B选项定义的是一个指针数组,错误。C选项把列数省略了,错误。D选项同样保证了列数能够传递,正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值