2021.8.2错题整理

本文是一篇关于C语言编程基础的错题整理,涉及联合体大小、数组指针操作、字符串处理、时间复杂度分析、逗号表达式、整型和指针大小、内存管理等内容。通过解析典型题目,帮助读者巩固C语言的知识。
摘要由CSDN通过智能技术生成

 1.union test { int x; char y; float z; } ;  

在32位平台上,这个联合的大小是多少个字节?

4

①union联合体是由最大的成员决定的,因此找出最大成员

②在32位系统中,int、float、long都是32位,4个字节

2已知int a[3][4];则下列能表示a[1][2]元素值的是

A、*(*(a+1)+2)

B、*(a+1+2)

C、(&a[0]+1)[2]

D、*(a[0]+1)

这是一个三行四列的数组

*(a+1)表示第二行的首地址,和a[1]一样。

*(a+1)+2第二行第三个数字的地址

*(*(a+1)+2)就是第二行第三个数字的值

 3.下面的程序的输出是什么?

#include<stdio.h>

int main(void)

{

int n;

char y[10] = "ntse";

char *x = y;

n = strlen(x);

*x = x[n];

x++;

printf("x=%s\n",x);

printf("y=%s\n",y);

return 0;

}

A、x=atse,y=

B、x=tse,y=

C、x=atse,y=e

D、x=tse,y=e

B

解析:
1、char *x=y ;//指针变量x指向数组y的首地址
2、n=strlen(x) ;//即等价于求4=strlen(y[10])=4
3、*x=x[n]; //表示指针变量x指向x[4]=y[4]='/0',x[4]就是y[4]='\0',那么*x=x[n]就是把x指向的字符串首元素改为'\0',而y遇到第一个字符就是'\0',所以结束,y输出为空。
4、x++表示x+1之后x指向第二个字符t,所以第一个输出x=tse
原数组变为 “ /0tse/0”


 

4.下列程序段的时间复杂度是(    )
count = 1;
for(k=1;k<2n;k*=2)
for(i=1;i<4n;i+=2)
count++;

A、O(n2)

B、O(8n2) 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值