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;
}
相关推荐
计算机安禾17 小时前
【c++面向对象编程】第41篇:函数模板与类模板:泛型编程的基石
开发语言·c++·算法
熊猫_豆豆17 小时前
麦克斯韦方程组(电磁效应Python展示)
开发语言·python·电磁感应·麦克斯韦方程组
SilentSamsara17 小时前
属性查找顺序:实例 → 类 → 父类的完整 MRO
开发语言·python·算法·青少年编程
运维行者_18 小时前
云计算连接性与互操作性
服务器·开发语言·网络·web安全·网络基础设施
郝学胜-神的一滴18 小时前
Qt 高级开发 010: 从跨界面传值到自定义信号
开发语言·c++·qt·程序人生·用户界面
社交怪人18 小时前
【浮点数相除的余】信息学奥赛一本通C语言解法(题号1029)
c语言·开发语言
努力弹琴的大风天18 小时前
如何用AI开发matlab/Simulink工具栏模块,实现相关的功能
开发语言·人工智能·matlab
小白学大数据18 小时前
Scrapling:极简高效的 Python 智能爬虫框架
开发语言·爬虫·python·数据分析
辣椒思密达18 小时前
Python爬虫中如何正确配置住宅IP代理?新手避坑指南
c语言·python
天下无敌笨笨熊18 小时前
C#常用三方库使用心得
开发语言·c#