C语言-操作符练习

1,表达式求值(整型提升)

2,小乐乐走台阶

3,序列中删除指定数字

4,最高分与最低分成绩之差

5,字母的大小写转换

6,判断是不是字母

7,最高分数

8,水仙花数


1,表达式求值(整型提升)

复制代码
#include<stdio.h>
#include<string.h>

//表达式求值
// 
// 一,隐式类型转换(整型提升)
// 
//int main() {
//
//	//负数整型提升
//	char c = -1;//-1是整数,32个比特位
//	//10000000000000000000000000000001
//	//11111111111111111111111111111110
//	//11111111111111111111111111111111  ->  -1的补码
//	//11111111  c的类型是char  占一个字节,所以是8个比特位
//	//    
//
//	return 0;
//}
//整型提升例子1
//int main() {
//	char a = 5;
//	//00000000000000000000000000000101
//	//00000101   a
//	char b = 126;
//	//00000000000000000000000001111110
//	//01111110   b
//	char c = a + b;
//	//00000000000000000000000000000101   a
//	//00000000000000000000000001111110   b
//	//00000000000000000000000010000011
//	//10000011  c   
//	// 发生整型提升
//	//11111111111111111111111110000011   补码
//	//11111111111111111111111110000010   补码减1
//	//10000000000000000000000001111101   取反->得原码
//	//值为-125
//	printf("%d\n", c);//打印一个整数,但c是一个字符类型,发生整型提升
//	return 0;
//}
//整型提升例子2
//int main() {
//	char a = 0xb6;
//	short b = 0xb600;
//	int c = 0xb6000000;
//	if (a==0xb6)//发生整型提升
//	{
//		printf("a");
//	}
//	if (b == 0xb600)//发生整型提升
//	{
//		printf("b");
//	}
//	if (c == 0xb6000000)
//	{
//		printf("c");
//	}
//	return 0;
//}
////整型提升例子3
int main() {
	char c = 1;
	printf("%u\n", sizeof(c));//1
	printf("%u\n", sizeof(+c));//4    整型提升(变成int4字节)
	printf("%u\n", sizeof(-c));//4

	return 0;
}

2,小乐乐走台阶

复制代码
#include<stdio.h>
#include<string.h>

//小乐乐走台阶
//每次可以选择走一阶或者走两阶,那么一共有多少种走法
//输入一个整数n(n阶台阶)
//输出一个整数,即小乐乐可以走的方法数
	//       |1   n=1      //一个台阶(1种走法)
	//       |   
	//fib(n)=|2   n=2      //二个台阶(2种走法)
	//       |
	//       |fib(n-1)+fib(n-2)  n>2   //n个台阶(走一个台阶+走两个台阶后的走法)
int fib(int n) {
	if (n <= 2)
		return n;
	else
		return fib(n - 1) + fib(n - 2);
}
int main() {
	int n = 0;
	//输入
	scanf("%d", &n);
	//计算
	int m = fib(n);
	//输出
	printf("%d\n", m);
	return 0;
}

3,序列中删除指定数字

复制代码
#include<stdio.h>
#include<string.h>

//序列中删除指定数字 
int main() {
	int n = 0;
	scanf("%d", &n);
	int arr[n];//C99标准 
	//接收n个数字
	int i = 0;
	for ( i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	int del = 0;
	//接收删除的值
	scanf("%d", &del);
	int j = 0;//j作为下标锁定的位置就是来存放不删除的数据的
	for ( i = 0; i < n; i++)
	{
		if (arr[i]!=del)
		{
			arr[j++] = arr[i];
		}
	}
	for ( i = 0; i < j; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
} 

4,最高分与最低分成绩之差

复制代码
#include<stdio.h>
#include<string.h>

// 最高分与最低分成绩之差
//写法一
//int main() {
// 	int n = 0;
//	scanf("%d", &n);
//	int arr[n];//C99标准 
//	//接收n个数字
//	int i = 0;
//	for ( i = 0; i < n; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//	//找出最大值
//	int max = arr[0];
//	for ( i = 0; i < n; i++)
//	{
//		if(arr[i]>max)
//	}
//	//找出最小值
//	int min = arr[0];
//	for (i = 0; i < n; i++)
//	{
//		if (arr[i] < min)
//	}
//	printf("%d\n", max - min);
//	return 0;
//}
//写法二
int main() {
	int n = 0;
	scanf("%d", &n);
	int arr[n];
	int i = 0;
	int max = 0;
	int min = 100;
	//输入
	for ( i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
		if (arr[i]>max)
			max = arr[i];
		if (arr[i] < min)
			min = arr[i];

	}
		printf("%d\n", max - min);
	return 0;
}

5,字母的大小写转换

复制代码
#include<stdio.h>
#include<string.h>

//字母的大小写转换 
//写法一:
//int main() {
//	char ch = 0;
//	while (scanf("%c",&ch)==1) {
//		if (ch >='a'&&ch<='z')
//			printf("%c\n", ch - 32);
//		else if (ch>='A'&&ch<='Z')
//			printf("%c\n", ch + 32);
//	}
//	return 0;
//}
//写法二
int main() {
	char ch = 0;
	//scanf读取成功时,返回的是读取的数据的个数
	//scanf函数在读取失败的时候返回EOF
	while (scanf("%c", &ch) == 1) {
		if (ch >= 'a' && ch <= 'z')
			printf("%c\n", ch - 32);
		else 
			printf("%c\n", ch + 32);
		getchar();//解决 \n
	}
	return 0;
}

6,判断是不是字母

复制代码
#include<stdio.h>
#include<string.h>

// 判断是不是字母
//写法一
//int main() {
//	char ch = 0;
//	while (scanf("%c", &ch) == 1) {
//	if ((ch >= 'a' && ch <= 'z')||(ch >= 'A' && ch <= 'Z'))
//		printf("%c is an alphabet.\n", ch);
//	else 
//		printf("%c is not an alphabet\n", ch);
//	getchar();//解决 \n
//	}
//	return 0;
//}
//写法二
int main() {
	char ch = 0;
	//%c的前面加空格
	//跳过下一个字符之前的所有空白字符
	while (scanf(" %c", &ch) == 1) {
		if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
			printf("%c is an alphabet.\n", ch);
		else
			printf("%c is not an alphabet\n", ch);
	}
	return 0;
}

7,最高分数

复制代码
#include<stdio.h>
#include<string.h>

// 最高分数
int main() {
	int i = 0;
	int max = 0;
	int score = 0;
	for ( i = 0; i < 3; i++)
	{
		scanf("%d", &score); 
		if (score>max)
		{
			max = score;
		}
	}
	printf("%d\n", max);
	return 0;
}

8,水仙花数

复制代码
#include<stdio.h>
#include<string.h>

#include<math.h>
// 水仙花数
int main() {
	int i = 0;
	for ( i = 10000; i <=99999; i++)
	{
		//判断i是否为水仙花数
		int sum = 0;
		int j = 0;
		for ( j = 0; j <=4; j++)
		{
			int k = (int)pow(10, j);
			sum += (i % k) * (i / k);
		}
		if (sum==i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}
相关推荐
带娃的IT创业者4 小时前
Python 异步编程完全指南:从入门到精通
服务器·开发语言·python·最佳实践·asyncio·异步编程
爱编码的小八嘎6 小时前
C语言完美演绎3-15
c语言
一只鹿鹿鹿7 小时前
信息安全等级保护安全建设防护解决方案(总体资料)
运维·开发语言·数据库·面试·职场和发展
喵叔哟7 小时前
9. 【Blazor全栈开发实战指南】--Blazor调用JavaScript
开发语言·javascript·udp
wuqingshun3141597 小时前
如何停止一个正在退出的线程
java·开发语言·jvm
我命由我123457 小时前
Element Plus - Form 的 resetField 方法观察记录
开发语言·前端·javascript·vue.js·html·html5·js
朱包林7 小时前
Python基础
linux·开发语言·ide·python·visualstudio·github·visual studio
海阔天空任鸟飞~7 小时前
蓝汛-BT897-添加按键提示音
c语言·单片机·蓝汛
Barkamin8 小时前
队列的实现(Java)
java·开发语言
hixiong1238 小时前
C# OpenvinoSharp使用RAD进行缺陷检测
开发语言·人工智能·c#·openvino