暑假第十九天之每天一些题系列

暑假第十九天之每天一些题系列

一、选择题

  • 下面哪个选项可以交换指针p和q所指的int型变量的值

A.

temp = p;
p = q;
q = temp;

B.

temp = *p;
*p = *q;
*q = temp;

C.

temp = &p;
*p = *q;
q = *temp;

D.

temp = p;
*p = *q;
q = temp;

答案解析:

temp = *p;*p = *q;*q = temp;,对指针解引用拿到指向的内容,才能完成交换,故答案为B

  • 若有变量定义: int a = 5,*p = &a, *q = &a; 则下面不能做的运算是

A. a=(*p)*(*q);
B. q=a;
C. a=p-q;
D. p=q;

答案解析:

a是整形,而q是整形指针,类型不兼容,是错误的运算

  • int x, y=5, *p=&x; 则能完成x=y的选项是

A. x=*p;
B. *p = &y;
C. x=&y;
D. x=y;

答案解析:

ABCD能完成x=y的选项是D

  • 若有变量定义: int a[][3] = {1,2,3,4,5,6,7}; 则数组a的第一维的大小是____

A. 1
B. 2
C. 4
D. 3

答案解析:

二维数组a的列数为3,一共有七个元素,故共有三行,所以第一维的大小是3

  • 若有以下数组定义和函数调用,则函数fun的原型为____
int a[3][4] = {1};
fun(a);

A. fun(int a[][4]);
B. fun(int a[][]);
C. fun(int a[3][]);
D. fun(int a[]);

答案解析:

二维数组不能省略列,只能省略行,故选A

二、填空题

  • 若有定义: int x = 6,n = 5; 则计算 x += n++ 后 x 的值为

答案解析:

x+=n++等价于x=x+n++;x=6+5=11,故x的值为11

  • 写一个表达式,表示一个整数既是奇数又是3的倍数

答案解析:

n=3*(2i-1),i可正可负

  • 若有 int x ,则执行下面语句 x = 4; x += x *= x+x; 后 x 值是

答案解析:

赋值运算符结合性从右至左,故先算x+x=8,再算x*=8得x=4*8=32,再算x+=32得x=x+32=32+32=64。

三、算法题

题目描述:

字符串压缩. 输入字符串只包含 a-z 字母以及结束标志,请编写函数实现对连续出现的相同字符进行压缩,例
如: ”xxxyyyyz” 压缩后字符串为 ”3x4yz” , ”yyyyyyy” 压缩后为 ”7y”

思路:

运用for循环来遍历,用count变量来记录当前字符个数,当遇到当前元素与下一个元素不相同时,打印;若count为1,说明只有一个该字符则打印该字符就好, 否则打印count和当前字符%d%c;这里的%d表示有多少个当前元素,注意打印完后要将count归为1

代码如下:

#include<stdio.h>
#include<string.h>
void enshort_str(char arr[], int len)
{
	int count = 1;
	int i = 0;
	for (i = 0; i < len; i++)
	{
		if (arr[i] == arr[i + 1])
		{
			count++;
		}
		else//说明此时前后两个字符不相等了,打印
		{
			if (count == 1)//等于1说明只有一个该字符,只打印该字符就好了
			{
				printf("%c", arr[i]);
			}
			else//否则打印count和字符
			{
				printf("%d%c", count, arr[i]);
			}
			count = 1;//每次打印完需要将count置为1
		}
	}
}
int main()
{
	char arr[] = "xxxyyyyz";
	int len = strlen(arr);
	enshort_str(arr, len);
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵小赵福星高照~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值