1. Hello World!
写一个程序 , 在控制台上输出 : Hello World!
#include <stdio.h>
int main()
{printf("Hello World!\n");return 0;
}
- main 函数是程序的入口 , 一个工程有且仅有一个 main函数
- 代码是从 main 函数的第一行开始的
2.sizeof
求 short , int , long ,long long 的数据类型所占的空间大小
#include <stdio.h>
int main()
{printf("The size of short is %zd types.\n", sizeof(short));printf("The size of int is %zd types.\n", sizeof(int));printf("The size of long is %zd types.\n", sizeof(long));printf("The size of long long is %zd types.\n", sizeof(long long));return 0;
}
C语言规定:
所以在一些编译器里面 , long 所占的空间大小是 8 .
3. 8进制与16进制
打印一个十进制数的八进制和十六进制 ,并且显示出前置标志
- 012 ---> 数字前面放0 , 默认是8进制数
- 0x12 ---> 数字前面放0x , 默认是16进制数
- %o 打印八进制数
- %X 打印大写的十六进制数
- %x 打印小写的十六进制数
法一 : 手动添加前置标志
#include <stdio.h>
int main()
{printf("0%o 0x%X", 1234, 1234);return 0;
}
法二 : 使用 # : 控制前导显示
#include <stdio.h>
int main()
{printf("%#o %#X", 1234, 1234);return 0;
}
4. 逆置打印整数
通过 % 取余 拿到最后一个数
再通过 / 取整 得到 除了拿走最后的数的数值
#include <stdio.h>
int main()
{int input = 0;scanf("%d", &input);while (input){printf("%d ", input % 10);input /= 10;}return 0;
}
5. 多组数据 - 大写--> 小写
先了解两个函数 : getchar() , putchar();
这里的 EOF -----> End Of File
6.打印飞机(无输入)
int main()
{printf(" xx\n");printf(" xx\n");printf("xxxxxxxxxxxx\n");printf("xxxxxxxxxxxx\n");printf(" x x\n");printf(" x x\n");return 0;
}
7.十六进制转十进制
#include <stdio.h>
//十六进制转十进制
int main()
{printf("%15d\n", 0xABCDEF);return 0;
}
8.printf 函数的返回值
#include <stdio.h>//法一
//printf 函数的返回值
int main()
{int ret = printf("Hello world!");printf("\n");printf("%d\n", ret);return 0;
}//法二
//printf 函数的返回值
int main()
{printf("\n%d\n", printf("Hello world!"));return 0;
}
小练习:
#include <stdio.h>
int main()
{printf("%d", printf("%d", printf("%d", 43)));return 0;
}
9. 判断字母
多组输入 , 使用 while 循环输入 , 注意 ---> 还需要消耗掉字符('\n')---> 使用getchar( )
#include <stdio.h>
//判断字母
int main()
{int ch = 0;//多组输入while ((ch = getchar()) !=EOF){//判断并输出if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')){printf("YES\n");}else{printf("NO\n");}getchar();//处理\n}return 0;
}
还可以使用函数 isalpha
#include <stdio.h>
//判断字母
#include <ctype.h>
int main()
{int ch = 0;//多组输入while ((ch = getchar()) != EOF){//判断并输出if (isalpha(ch)){printf("YES!\n");}else{printf("NO\n");}getchar();}return 0;
}
10.字符金字塔
输入一个字符,用它构成一个三角形金字塔
#include <stdio.h>
//字符金字塔
int main()
{//输入一个字符char ch = 0;ch = getchar();//输出金字塔int i = 0;//每循环一次,打印一行//每一行有两部分组成,空格和字符for (i = 0; i < 5; i++){//空格int j = 0;for (j = 0; j < 4-i; j++){printf(" ");}//字符for (j = 0; j <=i; j++){printf("%c ", ch);}printf("\n");}return 0;
}
11. 字符转ASCII码值
//字符转ASCII码值
int main()
{//输入字符char ch = 0;ch = getchar();//输出printf("%d\n", ch);return 0;
}
12.按照格式输入并交换输出
int main()
{int a = 0;int b = 0;scanf("a=%d,b=%d", &a, &b);//交换int tmp = 0;tmp = a;a = b;b = tmp;printf("a=%d,b=%d", a, b);return 0;
}
13. 2的n次方计算
不使用累计乘法的基础上,通过移位运算( << )来实现
int main()
{int n = 0;while (scanf("%d", &n) != EOF){printf("%d\n", 1 << n);}return 0;
}
14. 出生日期的输入输出
//出生日期的输入输出
int main()
{int year = 0;int month = 0;int day = 0;//按照格式输入scanf("%4d%2d%2d", &year, &month, &day);//输出printf("year=%4d\n", year);printf("month=%02d\n", month);printf("day=%02d\n", day);return 0;
}
15.输出一组ASCII码值
//ASCII码值
int main()
{char arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){printf("%c", arr[i]);}return 0;
}
16.计算MBI指数
#include <stdio.h>
//计算体重指数 --- MBI
int main()
{//输入int weight = 0;int high = 0;double BMI = 0.0;scanf("%d %d", &weight, &high);//计算BMI指数BMI = weight / ((high / 100.0) * (high / 100.0));//输出printf("%.2lf\n",BMI);return 0;
}
注意 : 进行除法时 , 如果等号两边都是整数 , 进行的是整数除法 ;只要除号两边至少有一个浮点数时 , 进行的是小数的除法;
17.计算三角形的周长和面积
C 语言提供了一个库函数 ---> 计算开方 ---> sqrt
书写时需要包含头文件 <math.h>
#include <math.h>
int main()
{double a = 0.0;double b = 0.0;double c = 0.0;double circumference = 0.0;//周长double area = 0.0;//输入scanf("%lf %lf %lf", &a, &b, &c);//计算circumference = a + b + c;double p = circumference / 2;area = sqrt(p * (p - a) * (p - b) * (p - c));//输出printf("circumference=%.2lf area=%.2lf\n", circumference, area);return 0;
}
18.计算球体的体积
//计算球的体积
#define PI 3.1415926
int main()
{double r = 0.0;//半径double v = 0.0;//体积//输入scanf("%lf", &r);//计算v = 4.0 / 3 * PI * r * r * r;//输出printf("%.3lf\n", v);return 0;
}
拓展 : 求某个数字的 n 次方 , 可以使用库函数 pow ---> 例如 :求2的6次方
//次方 -- pow
#include <math.h>
int main()
{int ret = (int)pow(2, 6);printf("%d\n", ret);return 0;
}
19.成绩的输入输出
//成绩输入输出
int main()
{int s1 = 0;int s2 = 0;int s3 = 0;//输入scanf("%d %d %d", &s1, &s2, &s3);//输出printf("score1=%d,score2=%d,score3=%d\n", s1, s2, s3);return 0;
}
20.变种水仙花数
把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个变种水仙花数。
655 = 6* 55 + 65 * 5
1461 =1*461 + 14*61 + 146*1
//变种水仙花数
// 求5位数中的所有Lily Number
//655 = 6*55 + 65*5
//1461 = 1*461 + 14*61 + 146*1
int main()
{int i = 0;for (i = 10000; i < 99999; i++){//判断 i 是否为Liny Numberint j = 0;int sum = 0;for (j = 10; j <= 10000; j *= 10){sum += (i / j) * (i % j);}if (sum == i){printf("%d ", i);}}return 0;
}
21.浮点数的个位数
//浮点数的个位数字
//方法一
int main()
{//从根源上获取整数int n = 0;scanf("%d", &n);//13.141 --> 13printf("%d\n", n % 10);return 0;
}//方法二
int main()
{double d = 0.0;scanf("%lf", &d);int n = (int)d;printf("%d\n", n % 10);return 0;
}
22.你能活多少秒?
一年约有3.156*10^7s,输入年龄,计算秒数
int main()
{int age = 0;//输入scanf("%d", &age);//计算long long second = age * 3.156e7;//输出printf("%lld\n", second);return 0;
}
- 3.156e7 ----> 3.156*10^7
- 当输入值为 200 时,int 类型的空间大小远远不够 ,应使用 long long 型 , 打印格式为 %lld