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

ops/2025/2/11 20:50:29/

1、下面函数的功能是( )

1

2

3

4

5

6

int sss(char s[], char t[])

{

    int i = 0;

    while(s[i] && t[i] && (t[i] == s[i])) i++;

    return (s[i] - t[i]);

}

A、求字符串的长度

B、比较两个字符串的大小

C、将字符串s复制到字符串t中

D、将字符串s接续到字符串t中

答案:B

解析:本题定义函数中传入两个指针,根据形式应该分别指向两个字符串。定义循环变量后,while循环中前两个条件的含义是遍历这两个字符串到'\0'位置结束,第三个条件是判断两字符串的对应位置是否是相同字符。循环结束后要么两个字符串相等,要么两个字符串不等,此时返回两字符串结束位置字符的ASCII码差。所以函数功能是比较两个字符串的大小,选择选项B。

2、 下列选项,不正确的是

A、for(int a=1;a<=10;a++);

B、int a=1; do { a++; }while(a<=10)

C、int a=1; while(a<=10) { a++; }

D、for(int a=1;a<=10;a++)a++;

答案:B

解析:本题考查的是基本语法,do while语句末尾需要加分号,int a=1; do { a++; }while(a<=10);(√),所以选择选项B。

3、

1

2

3

4

unsigned char *p1;

unsigned long *p2;

p1 = (unsigned char *)0x801000;

p2 = (unsigned long *)0x810000;

请问p1+5= 什么?p2+5= 什么?

A、801005 810005

B、801005 810020

C、801005 810014

D、801010 810014

答案:C

解析:本题考查的是指针的偏移,指针偏移是以其指向的类型大小为单位的。例如:int * p,指针p指向的类型为int,所以执行 p+n,指针p会移动 n*sizeof(int)大小的空间。在本题中,p1指针指向的是unsigned char,+5移动5*sizeof(unsigned char)大小的空间,p2指针的移动同理。本题还需注意将移动的大小转为16进制,sizeof(unsigned long)一般为4字节,所以本题选择选项C。

4、 在16位C编译系统上,以下程序的输出结果是().

1

2

3

4

5

void main()

{

int y=2456;

printf ("y=│%3o│ y=│%8o│y=│%#8o│ y=│%08o│",y,y,y,y);

}

A、y=│2456│ y=│□□□□2456│ y=│□□□02456│ y=│00002456│

B、y=│4630│ y=│□□□□4630│ y=│□□□04630│ y=│00004630│

C、y=│2456│ y=│□□□□2456│ y=│###02456│ y=│00002456│

D、y=│4630│ y=│4630□□□□│ y=│###04630│ y=│00004630│

答案:B

解析:代码中首先定义了一个int型变量并赋值为2456,这个数据是十进制数据。下面的输出都是以八进制输出的,将2456转换为八进制为4630,排除选项A、C。%3o限制域宽为3,数据实际长度为4,所以会原样输出数据。%8o限制域宽为8,会自动补空格,对其方式为右对齐。%#8o在%8o的基础上会显示进制输出。%08o相较于%8o的不同是前面自动补0。综上,选择选项B。

5、 定义符号常量pi。const float pi= 3.1415926f; 这句话是否正确

A、正确

B、错误

答案:A

解析:常量在定义初始化时可以进行赋值操作,并且这句代码符合语法规则,选择选项A。

6、 在x86的机器上执行:

1

2

int a = 0xabcd1234; 

char b = ((char*)&a)[0];

请问b是多少

A、0xa

B、0x4

C、0xab

D、0x34

答案:D

解析:阅读题目后,通过x86机器这一信息可以得到:存储方式为小端存储,即低位存在低地址,高位存在高地址。char * 得到a地址中一个字节的大小的空间,由于是小端存储,则这段空间中存的是0x34,由于[0]与*可以互换,所以[0]将数据0x34取出赋值给b,b的值为0x34,选择选项D。

7、 

1

2

unsigned int a = 0x1234;

unsigned char b = *(unsigned char *)&a; 

在 32 位大端模式处理器上变量 b 等于()

A、0x00

B、0x12

C、0x34

D、0x1234

答案:A

解析:32位处理器上,unsigned int 占4个字节,变量a=0x1234即0x0000 1234。下面定义了一个指向unsigned char空间大小的指针,由于是大端存储,故指向地址中的内容为0x00,所以解引用后赋给变量b的值为0x00,选择选项A。

8、 代码段

1

2

3

4

5

6

7

8

#include <stdio.h>

int main() {

    int i = 1;

    sizeof(i++);

    printf("%d\n", i);

    return 0;

}

的输出为()

A、1

B、4

C、2

D、8

答案:A

解析:sizeof内的运算没有意义,不会执行。计算机会在编译时将sizeof(i++)翻译成sizeof(i++的数据类型),所以本题i最后的值为1,选择选项A。

9、 在32位小端的机器上,如下代码输出是什么:

1

2

3

4

5

char array[12] = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08};     

 short *pshort = (short *)array;     

 int *pint = (int *)array;     

 int64 *pint64 = (int64 *)array;     

 printf("0x%x , 0x%x , 0x%llx , 0x%llx", *pshort , *(pshort+2) , *pint64 , *(pint+2));

A、0x201 , 0x403 , 0x807060504030201 , 0x0

B、0x201 , 0x605 , 0x807060504030201 , 0x0

C、0x201 , 0x605 , 0x4030201 , 0x8070605

D、0x102 , 0x506 , 0x102030405060708 , 0x0

答案:B

解析:由于采用小端存储,所以低位存放低地址,高位存放高地址。所以将数组元素按从高位到低位可以写成0x0807060504030201,指针pshort指向的类型是short类型,占两个字节,所以第一个输出应该是0x201。*(pshort+2)是pshort指针向高地址移动两个short类型占的空间,所以现在指向的0506所在的地址,第二个输出为0x605。*pint64所指向的类型是int64,占八个字节,又因为它指向的是数组首地址,故第三个输出为0x807060504030201。

*(pint+2)中,指针pint指向的类型是int,占四个字节,移动前指向数组首地址,移动后正好越过了已经赋值的数组区域,因为数组是部分初始化,没有赋值的区域会自动赋0,所以第四个输出为0x0。综上,选择选项B。

10、 不能把字符串"HELLO!"赋给数组b的语句是()

A、char b[10] = {'H','E','L','L','O','!','\0'};

B、char b[10];b = "HELLO!";

C、char b[10];strcpy(b,"HELLO!");

D、char b[10] = "HELLO!";

答案:B

解析:数组名是一个常量,不能被赋值。故选择选项B。


http://www.ppmy.cn/ops/124103.html

相关文章

从开发效率到查询性能:JPA 和 MyBatis 在企业系统中的完美结合

1. 为什么选择 JPA 处理单据&#xff1f; 单据类操作通常包括创建、更新、删除、查询&#xff08;增删改查&#xff09;等操作。这些操作对于系统的正确性和稳定性至关重要&#xff0c;而 JPA 提供的优雅封装和一致性控制正好符合这些需求。 1.1 JPA 的缓存和延迟加载 JPA 提…

正则表达式-入门

什么是正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 正则表达式是对字符串执行模式匹配的技术 快速入…

c# 可空引用类型

在 C# 8 中&#xff0c;引入了可空引用类型&#xff08;Nullable Reference Types&#xff0c;NRT&#xff09;&#xff0c;这是一项增强特性&#xff0c;旨在提高代码的安全性并减少运行时的 NullReferenceException。以下是关于可空引用类型的详细讲解。 什么是可空引用类型…

【RPC】—Thrift协议 VS Protobuf

Thrift协议 & VS Protobuf ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 文章目录 Thrift协议 & VS Pro…

springboot系列--web相关知识探索三

一、前言 web相关知识探索二中研究了请求是如何映射到具体接口&#xff08;方法&#xff09;中的&#xff0c;本次文章主要研究请求中所带的参数是如何映射到接口参数中的&#xff0c;也即请求参数如何与接口参数绑定。主要有四种、分别是注解方式、Servlet API方式、复杂参数、…

数据结构--List的介绍

目录 1. 什么是List Collection中有那些方法&#xff1f; add(E e)方法 addAll(Collection c)方法 clear()方法 contains(Object o)方法 containsAll(Collection c)方法 equals(Object o)方法 hashCode()方法 isEmpty()方法 iterator()方法 remove(Object o)方法 …

【最新华为OD机试E卷-支持在线评测】补种未成活胡杨(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

Java之反射

目录 反射 定义 主要用途 反射相关的类 Class类中【获得类相关方法】 Class类中【获得类中属性相关的方法】 Class类中【获得类中注解相关的方法】 Class类中【获得类中构造器相关的方法】 Class类中【获得类中方法相关的方法】 获得Class对象 代码示例1 代码示例…