暑假第十九天之每天一些题系列
Posted 小赵小赵福星高照~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暑假第十九天之每天一些题系列相关的知识,希望对你有一定的参考价值。
暑假第十九天之每天一些题系列
一、选择题
- 下面哪个选项可以交换指针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;
}
以上是关于暑假第十九天之每天一些题系列的主要内容,如果未能解决你的问题,请参考以下文章