C语言的一些基本例题
全部例题来自于C语言王道训练营 链接如下
B站链接.
书籍:《跟“龙哥”学C语言编程》
下面展示 可以运行的例子
#include<stdio.h>
#include<stdlib.h>
#define PI 3+2
int main() {
int i = 123;
i = PI * 2;
//PI=2:常量不可修改!!
printf("PI=%d\n", PI);
//PI=5
printf("i=%d\n", i);
//i=3+2*2=7
system("pause");
return 0;
}
下面展示 可以运行的例子
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0x7b;//十六进制
printf("the i=%d\n", i);//十进制数进行打印
//the i=123
i = 0173;//八进制
printf("the i=%d\n", i);
//the i=123
system("pause");
return 0;
}
下面展示 可以运行的例子
原码取反加一得到补码,补码取反加一得到原码
#include<stdio.h>
#include<stdlib.h>
//补码 对原码进行取反加一
int main()
{
int i, j, k;
i = -5; //5取反加一
j = 2;
k = i + j;
printf("k=%d\n", k);
return 0;
}
5的二进制数为101,称为原码。计算机用补码表示−5,补码是对原码取反后加1的结果,即计算机表示−5时会对5的二进制数(101)取反后加1。−5在内存中存储为0xfffffffb,因为对5取反后得0xfffffffa,加1后得0xfffffffb,对其加2后得0xfffffffd,它就是k的值。当最高位为1(代表负数)时,要得到原码才能知道0xfffffffd的值,即对其取反后加1(当然,也可以减1后取反,结果是一样的)得到3,所以其值为−3。
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//不同类型的整型变量的定义方法:溢出、防止溢出
int main()
{
int i = 10;
short a = 32767;//两字节
short b = 0;
long c = 100;
unsigned int m = 3;
unsigned short n = 4;
unsigned long k = 5;
b = a + 1;//b=-32768发生溢出
printf("b=%d\n", b);
system("pause");
return 0;
}
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//验证精度丢失现象的程序
int main()
{
float n = 1.456;
long double m = 1.456;
double e = 1e-6;
//float a = 1.23456789e10;
//因为float型数据能够表示的有效数字为7位,最多只保证1.234567e10的正确性
//要使结果正确,就需要把a和b均改为double型
double a = 1.23456789e10;
//float b;将b改为double型
double b;
b = a + 20;
printf("a=%f\n", a);
printf("b=%f\n", b);
system("pause");
return 0;
}
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char d, c = 'e';//占用一字节
char e = '\t';//横向跳格,显示4个空格
char f = '\b';
char h = '\\';
char i = '\0';
d = c - 32;
printf("\123\n");//转义八进制-十进制为83-打印字符s
printf("\x40\n");//转义十六进制-十进制64-打印@
printf("d=%c\n",d);
printf("c=%d\n",c);
printf("e=%chaha\n",e);
printf("abc\rd\n");//\r回到行首 得到dbc
printf("abc%cd\n",f);//\b是向前退一格
printf("%c\\\n",h);//要输出\,需要转义
printf("i=%cb\n",i);
system("pause");
return 0;
}
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char c, d;
c = 97;
d = 'a';
printf("c=%c,d=%c\n", c, d);
printf("c=%d,d=%d\n", c, d);
c = c - 32;//小写字母转换为大写字母
printf("c=%c\n", c);
system("pause");
return 0;
}
运行结果
c=a,d=a
c=97,d=97
c=A
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 5;
float f,g;
short m,s;
long l=66666666;
s = l+1;//爆了
printf("l=%d,s=%d\n",l,s);
f = i / 2;
g = (float)i / 2;
m = (short)i + 2;//不加short强转编译会警告
printf("i=%d,f=%f,g=%f,m=%d\n", i, f, g, m);
system("pause");
return 0;
}
运行结果
l=66666666,s=16555
i=5,f=2.000000,g=2.500000,m=7
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
char c;
scanf("%d", &i);//阻塞函数
printf("i=%d\n", i);
scanf("%c", &c);//这里没有阻塞,因为在执行scanf("%c",&c)语句时,不会忽略任何字符,所以scanf("%c",&c)读取了还在缓冲区中残留的'\n'
printf("c=%c", c);
system("pause");
return 0;
}
运行结果
1
i=1
c=
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//因为fflush函数具有刷新(清空)标准输入缓冲区的作用
int main()
{
int i;
int ret;//用来获取sancf的返回值
while (fflush(stdin),ret = scanf("%d", &i) != EOF)
{
printf("i=%d\n", i);
}
system("pause");
return 0;
}
运行结果
1
i=1
2
i=2
3
i=3
^Z
^Z
^Z
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//由于一次性输入一个字符串,然后回车,而scanf函数是循环匹配的,所以不能加fflush(stdin)
int main()
{
int ret;
char c;
while (scanf("%c", &c) != EOF)
{
if (c!='\n')
{
printf("%c", c - 32);
}
else{
printf("\n");
}
}
system("pause");
return 0;
}
运行结果
hello world
HELLO WORLD
china
CHINA
^Z
^Z
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 5;
double f;
float l;
char c;//字符不会忽略空格
int ret;
ret = scanf("%d %c%lf%f", &i, &c, &f, &l);
printf("i=%d,c=%c,f=%5.2lf,l=%5.2f,ret=%d\n", i, c, f, l, ret);
//%5.2f中的5代表输出的浮点数占5个空格的位置,2代表小数点后显示两位
system("pause");
return 0;
}
运行结果
1024 h 99.9 60.00
i=1024,c=h,f=99.90,l=60.00,ret=4
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
int main()
{
long a;
int g;
int s = 4 + 5 * 2 - 6 / 3 + 10 % 4;
printf("s=%d\n", s);
scanf("%d", &a);
printf("a=%d\n", a);
//倒序输出输入的数字
while (a!=0)
{
g = a % 10;
printf("%c", g + 48);//数字变字符
a = a / 10;
}
printf("\n");
system("pause");
return 0;
}
运行结果
s=14
1024
a=1024
4201
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//判断浮点数是否等于某个值
int main()
{
float f = 234.56;
int a;
//if(f==234.56) 直接跳到return 0
if (f - 234.56 > -0.0001 && f - 234.56 < 0.0001)
{
printf("f 等于 234.56\n");
}else
{
printf("f 不等于 234.56\n");
}
while (scanf("%d", &a) != EOF)
{
//若写成if (3 < a < 10),那么无论a是大于3还是小于3,对于3
if(3<a&&a<10){
printf("a在3和10之间\n");
}
else
{
printf("a不在3和10之间\n");
}
}
system("pause");
return 0;
}
运行结果
f 等于 234.56
5
a在3和10之间
12
a不在3和10之间
^Z
^Z
^Z
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//逻辑与、逻辑或的短路运算
int main()
{
int i = 0,j;
//判断是否是闰年
while (scanf("%d", &i) != EOF)
{
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
printf("i is leap year\n");
}
else {
printf("i is not leap year\n");
}
}
j = 1;//当j不为0时,j==0为假,后面一个表达式不会执行
j == 0 && printf("system is error\n");
j = 0;//当j为0时,j==0为真,后面一个表达式不会执行
j == 0 || printf("system is error\n");
j = 10;
i = !!j;
printf("i=%d\n", i);
system("pause");
return 0;
}
运行结果
2000
i is leap year
2010
i is not leap year
2022
i is not leap year
^Z
^Z
^Z
i=1
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//位运算符<<、>>、~、|、^、&依次是左移、右移、按位取反、按位或、按位异或、按位与
int main()
{
short i = -5;
int a[5] = { 11,4,5,4,11 };
int f = 0;
i >> 1;//单独的i右移或者左移不会改变i的值
i = i >> 1;//i值改变
//低位丢弃,正数的高位补0,负数的高位补1,相当于除以2。
//负数右移,对偶数来说是除以2,但对奇数来说是先减1后除以2
printf("i>>1后i=%d\n", i);
//找到数组中不重复的数
for (i = 0; i < 5; i++)
{
f = f ^ a[i];
//负数右移,对偶数来说是除以2,但对奇数来说是先减1后除以2
}
printf("a[5]中不重复的数=%d\n", f);
i = 5;
f = 7;
//只有对应的两个二进位都为1时,结果位才为1
printf("i&f=%d\n", i & f);//二进制101与111按位与
//只要对应的二个二进位有一个为1时,结果位就为1
printf("i|f=%d\n", i | f);
//按位取反:数位上的数是1变为0,0变为1
printf("~i=%d\n", ~i);//按位取反得到-6
system("pause");
return 0;
}
运行结果
i>>1后i=-3
a[5]中不重复的数=5
i&f=5
i|f=7
~i=-6
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//条件运算符的优先级高于赋值运算符
int main()
{
int a, b, c, max;
//快速找到三个数里的最大值
while (scanf("%d%d%d", &a, &b, &c) != EOF)
{
max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
printf("max=%d\n", max);
}
system("pause");
return 0;
}
运行结果
1 2 3
max=3
5 55 555
max=555
159 357 456
max=456
^Z
^Z
^Z
请按任意键继续. . .
下面展示一些 可运行的代码
。
#include<stdio.h>
#include<stdlib.h>
//sizeof不是函数,是C的关键字,是一个运算符
//自增自减注意分清是前加加还是后加加,自减类似
int main()
{
int i = -1;
int j;
//5++;//如果打开语句,会造成编译不通过
j = i++ > -1;//后++,等价于j=i>-1;i=i+1;
printf("i=%d,j=%d\n", i, j);
j = !++i;//前++,直接按照优先级结合
printf("i=%d,j=%d,sizeof(i)=%d\n", i, j, sizeof(i));
system("pause");
return 0;
}
运行结果
i=0,j=0
i=1,j=0,sizeof(i)=4
请按任意键继续. . .
第一次发表一篇完整的博客,对于一些遗漏,读者不要太过深究~
比较适合新手打基础大佬请绕路~
希望这些可以帮助你更好的理解C语言
马上就考研了 我居然还在纠结一些基础 真是闲的闲的闲的闲*10000!
过几天在更新后几章的内容
欢迎大家评论、收藏、点赞 !!!