数学系列:
1.写一个函数返回参数二进制中 1 的个数 例: 15 0000 1111 4 个 1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int count_one_bits(unsigned int value)
{
int i = 0;
while (value)
{
if (value % 2 == 1)
i++;
value >>= 1;
}
return i;
}
int main()
{
int value = 0;
scanf("%d", &value);
printf("%d\n", count_one_bits(value));
system("pause");
return 0;
}
2.有一个字符数组的内容为:“student a am i”,请你将数组的内容改为“i am a student”
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<assert.h>
void reverse(char* left,char* right)
{
assert(left);
assert(right);
while(left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void reverse_str(char* str,int len) //此处也可以写成(char str[])
{
char *start = str;
char *end = str;
len -= 2;
reverse(str, str+len );
while (*end != '\0')// 使循环 整个字符串
{
while ((*end != '\0') && (*end != ' '))//找到一个单词
end++;
reverse(start, end - 1);
start = end + 1;
if (*end != '\0')
++end;
}
}
int main()
{
char str[] = "student a am i";
int len = sizeof(str) / sizeof(str[0]); //数组长度+1
reverse_str(str,len); //实现字符逆序
printf("%s\n", str);
system("pause");
return 0;
}
3.编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int main()
{
char a;
scanf("%c", &a);
if ((a<='z') && (a>='a'))
{
printf("%c\n", a-32);
}
else if ((a >= 'A') && a <= 'Z')
{
printf("%c\n", a+32);
}
system("pause");
return 0;
}
4.输出1到100出现9的次数
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
{
count++;
}
if (i / 10 % 10 == 9)
{
count++;
}
}
printf("出现的次数:%d\n", count);
getchar();
return 0;
}