1.unsigned INT reverse_bit(unsigned int型の値) 、
関数値の戻り値は、左から右にビット反転パターンの値です。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
unsigned int reverse_bit(unsigned int value)
{
int ret = 0;
int tmp = 0;
for (int i=0; i < 32; i++)
{
ret = ret << 1;//左移一位,保存前一位
tmp = value & 1;//取出最后一位
value = value >> 1;//值右移, 取下一位
ret = ret | tmp;//最后一位赋给ret
}
return ret;
}
int main()
{
int input = 0;
printf("请输入一个数字:\n");
scanf("%d", &input);
printf("%u\n",reverse_bit(input));
system("pause");
return 0;
}
2.このように2つの数の平均値を(+ bの)/ 2を使用しません。
#include<stdio.h>
#include<stdlib.h>
int Avg_Num(int a, int b)
{
int num = 0;
num = (b - a) / 2 + a;
return num;
}
int main()
{
int a, b;
printf("请输入两个数字:\n");
scanf_s("%d %d", &a, &b);
printf("%d\n",Avg_Num(a, b));
system("pause");
return 0;
}
これは、2オペレータによる右シフトに相当します
int Avg_Num(int a, int b)
{
return ((a&b) + ((a^b) >> 1));
}
3.プログラミング:
数のデータのセットが一度だけ表示されます。
他のすべての数字はペアです。
この番号を探してください。(使用ビット動作)
任意の数または任意の数の0排他的
XOR 0の同数
int Seek_num(int arr[],int len)
{
int ret = 0;
for (int i = 0; i < len; i++)
{
ret = ret^arr[i];
}
return ret;
}
int main()
{
int arr[] = { 2, 2, 3, 4, 5, 7, 3, 5, 4 };
int len = 0;
len = sizeof(arr) / sizeof(arr[0]);
printf("%d\n",Seek_num(arr,len));
system("pause");
return 0;
}
4.コンテンツの文字列があります:「学生ですが、私は」、
あなたが読んで、配列の内容は、「私は学生です」。
要件:
あなたはライブラリ関数を使用することはできません。
のみ(関わらず、スペースや文字列の長さの数の)オープンスペースの限られた数。
最初に「私は学生です」を取得する逆の順序で再び各スペースで区切られた文字列の後に、「私はtneduts MA」を取得、最初の分析は逆の順序で2回使用されなければならない問題を参照してください。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char* start, char* end)
{
while (start < end)
{
char tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
void str_reverse(char* str)
{
int len = strlen(str);
reverse(str, str + len - 1); //全部逆置
while (*str != '\0')
{
char* pos = str;
while ((*str != ' ') && (*str != '\0'))
{
str++;
}
reverse(pos, str - 1); //每个单词的逆置
if (*str != '\0')
{
str++;
}
}
}
int main()
{
char str[] = "student a am i";
printf("原字符串为:%s\n", str);
str_reverse(str);
printf("翻转后的字符串为:%s\n", str);
system("pause");
return 0;
}