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 Number
int 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 --> 13
printf("%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