C语言练习(三)字符串左旋结果

简介: C语言练习(三)字符串左旋结果


在小端机器中,下面代码输出的结果是:( )

#include <stdio.h>
int main()
{
    int a = 0x11223344;
    char *pc = (char*)&a;
    *pc = 0;
    printf("%x\n", a);
    return 0;
}

假设,a变量的地址为0x64,则a变量在内存中的模型为:

0x64| 44 |

0x65| 33 |

0x66| 22 |

0x67| 11 |

char*类型的指针变量pc指向只能指向字符类型的空间,如果是非char类型的空间,必须要将该空间的地址强转为char*类型。

char *pc = (char*)&a; pc实际指向的是整形变量a的空间,即pc的内容为0x64,即44,

*pc=0,即将44位置中内容改为0,修改完成之后,a中内容为:0x11223300

因此:选择C

下列程序段的输出结果为()

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));

unsigned long pulArray[] = {6,7,8,9,10};

unsigned long *pulPtr;

pulPtr = pulArray; // 数组名代表数组首元素地址,因此pulptr指向的是数组中第一个元素的位置

*(pulPtr + 3) += 3; // pulptr+3访问的是数组中第三个元素(数组下标从0开始),故将9改为9+3=12

printf("%d,%d\n",*pulPtr, *(pulPtr + 3)); // 打印第一个和第三个元素,因此:打印6和12

选C

以下哪个操作可以避免野指针的出现?

ABCD都对

下面关于assert宏的描述哪个是正确的?

答案是B.assert宏仅在调试模式下起作用。

assert宏在程序编译的时候通常是被禁用的,当编译选项中加入"-DNDEBUG"时,assert宏就会被禁用,因此assert宏仅在调试模式下起作用。当assert宏的表达式结果为false时,程序会终止执行。assert宏可以用于任何类型的表达式,不仅仅限于整数类型。

下面关于"指针"的描述不正确的是()

A选项目前还没学,目前只需要了解free不会更改指针的指向。

B选项强调了32位系统,所以没问题。

CD选项是定义本身。

所以排除法也可以确定是A。

下面代码的执行结果是( )

str1和str2是两个数组,数组的操作方式是将右边常量字符串的内容拷贝进来,所以他们是两个空间,只是内容相同,所以str1 != str2。而str3和str4是两个指针,编译器在处理的时候,会将相同的常量字符串做成同一个地址,所以,str3和str4指向的是同一个常量字符串,所以str3 == str4,故选C。

字符串左旋结果

void rotate(char* str,int n,int sz,char* arr)
{
  int i = 0, j = 0; 
  for (i = n; i < sz; i++)
  {
    arr[j] = str[i];
    j++;
  }
  if (n > 0)
  {
    for (i = 0; i < n; i++)
    {
      arr[j] = str[i];
      j++;
    }
  }
  for (i = 0; i < sz; i++)
  {
    printf("%c", arr[i]);
  }
}
int main()
{
  char str[100] = " "; int n = 0, i = 0; char arr[100] = "";;
  printf("请输入一串字符串:");
  while ((str[i] = getchar()) != '\n')
  {
    i++;
  }
  str[i] = 0;
  int sz = i;
  printf("请输入你要左旋的个数");
  scanf("%d", &n);
  rotate(str, n, sz,arr);
  return 0;
}
相关文章
|
1月前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现2
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现
|
5天前
|
C语言
C语言中 字符串和数字的相互转换
C语言中 字符串和数字的相互转换
10 1
|
13天前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
|
13天前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
16天前
|
C语言 C++
C语言利用ASCII码表统计字符串每个字符出现的次数
C语言利用ASCII码表统计字符串每个字符出现的次数
15 0
|
16天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
16天前
|
C语言
换硬币问题(C语言代码练习)
换硬币问题(C语言代码练习)
|
18天前
|
存储 C语言
C语言中字符串的引用与数组元素操作
C语言中字符串的引用与数组元素操作
21 0
|
18天前
|
安全 C语言
指针与字符串:C语言中的深入探索
指针与字符串:C语言中的深入探索
15 0
|
1月前
|
存储 C语言
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗