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;
}
相关推荐
IvanCodes3 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae5 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
无敌贵点大王5 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
Logic1016 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
qq_2518364577 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理8 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手8 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长9 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Escalating_xu10 小时前
【C 语言项目】数组和函数综合实践:从零实现控制台扫雷游戏
c语言