C语言——简单的相关测试题
来源:互联网 发布:电脑微信群发软件 编辑:程序博客网 时间:2024/03/29 17:48
1、 请编码实现以下功能的函数
功能:实现对一个8 bit数据(unsigned char类型)的指定位(例如第n位)的置0或者置1操作,并保持其他位不变。
函数原型:
void bit_set(unsigned char *p_data, unsigned char position, int flag)
函数参数说明:
p_data 是指定的源数据,position是指定位(取值范围1~8);flag表示是置0还是置1操作
#include<stdio.h>
void bit_set(unsigned char *p_data, unsigned int position, int flag)
{
if (flag)
{
*p_data = *p_data | (1 << (position - 1));
}
else
{
*p_data = *p_data &(~(1 << (position - 1)));
}
}
int main()
{
unsigned char tmp = 15;
unsigned char* p = &tmp;
unsigned int position = 0;
while (position>8||position==0)
{
printf("请输入操作位数》\n");
scanf("%d", &position);
}
bit_set(p,position,0);
printf("%d", tmp);
system("pause");
return 0;
}
2、 请实现字符串右循环移位函数,比如:“abcdefghi”循环右移2位就是“hiabcdefg”.
函数原型:void RightLoopMove(char *pStr, unsigned short steps)
函数参数说明:
pStr : Point to a ‘\0’ terminated string
steps : The rotate shift numbers
#include<stdio.h>
void Reverse(char* left, char*right) //翻转字符串函数
{
char tmp = 0;
while (left < right)
{
tmp = *left;
*left++ = *right;
*right-- = tmp;
/* left++; right--;*/
}
}
void RightLoopMove(char *str, unsigned short steps)
{
int len = strlen(str);
Reverse(str, str + len - 1); //整体翻转
Reverse(str, str + steps - 1); //前steps个翻转
Reverse(str + steps, str + len - 1); //后面的全部翻转
}
int main()
{
char p[] = "abcdefghi";
unsigned short steps = 2;
RightLoopMove(p, steps);
printf("%s", p);
system("pause");
return 0;
}
3. 请编写程序实现字符串到整数的转换,例如输入字符串“12345”,输出整数12345
即实现atoi;
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int My_atoi(char*str)
{
int flag = 0;
long long int ret=0;
assert(str != NULL); //1.NULL指针
if (!*str) //2.空字符串
return 0;
//首先判断第一个数字+-,还是其他,其他停下,数字继续走,遇见不是数字的停下。
if ((*str == '+')||((*str<='9')&&(*str>='0')))
flag = 1;
if (*str == '-')
flag = -1;
if (flag) //如果flag等于0,证明第一个字符不是+-,也不是数字。
{
if (*str == '+' || *str == '-')
str++;
while ((*str <= '9') && (*str >= '0'))
{
ret *= 10;
ret += (*str - '0');
*str++;
if (ret > INT_MAX)
break;
}
ret = ret*flag;
if (ret > INT_MAX) return INT_MAX;
if (ret < INT_MIN) return INT_MIN;
return ret;
}
return 0;
}
int main()
{
char *p = "1232";
int a=My_atoi(p);
printf("%d", a);
system("pause");
return 0;
}
- C语言——简单的相关测试题
- 简单单链表的实现—C语言
- C语言实现串,和简单的主函数测试
- C语言实现简单的记忆力测试游戏
- C语言测试题
- C语言测试题
- C语言测试题
- C语言测试题
- C语言测试题
- C语言测试题的讲解分析
- C语言测试题的讲解分析
- C语言测试题的讲解分析
- 经典的c语言测试题
- C语言测试题的讲解分析
- 有趣的C语言测试题
- C语言测试题的讲解分析
- C语言测试题的讲解分析
- 简单的c语言
- 用类描述电脑CPU的速度和硬盘的容量
- [Codevs P1391]伊吹萃香
- Leetcode #2
- 学习rocketmq(1)安装启动入门,是rocketmq可以外网访问
- python lambda
- C语言——简单的相关测试题
- nginx+php上传大文件
- TCP/IP协议-为什么说TCP是可靠连接
- 计算机发展
- .html文件是白色的,而不是浏览器的图标
- 基于CentOS搭建个人网盘
- random
- 玩转Kotlin--彻底弄懂Lambda和高阶函数
- 疫情控制 40