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;
}
相关推荐
tod1132 小时前
C++核心知识点全解析(二)
开发语言·c++·面试经验
载数而行5202 小时前
算法系列2之最短路径
c语言·数据结构·c++·算法·贪心算法
weixin_440401692 小时前
Python数据分析(空值、重复值检测删除与设置)
开发语言·python·数据分析
消失的旧时光-19432 小时前
C++ 多线程与并发系统取向(五)—— std::atomic:原子操作与状态一致性(类比 Java Atomic)
开发语言·jvm·c++·并发
资深web全栈开发2 小时前
CoI - 组合优于继承:解耦的艺术
android·java·开发语言
低频电磁之道2 小时前
C++中预定义宏
开发语言·c++
工程师0072 小时前
MQTT 概念详解与 C# 实战
开发语言·c#·mqtt通信
代码改善世界3 小时前
栈和队列的实现与详解(C语言版):从底层原理到代码实战
c语言·开发语言
智者知已应修善业3 小时前
【冰雹猜想过程逆序输出】2025-4-19
c语言·c++·经验分享·笔记·算法