#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;
}
#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;
}