第三次学习c语言
{mtitle title="运算符及输入输出符C"/}
第一学习输入输出符,第二学习运算符,第三进行练习
普通运算符的基础理解还不错,对于位运算符,移位运算符和逗号表达式理解不是非常明白,只能超过了没有一点想法,此外实验了几道题目,也是前面的会,后面的能猜到用什么,但是输出不完整。
//printf是一个库函数=》C语言已经实现好了,要想使用库函数,必须引用头函数stdio.h
//要想换行要在其中加入\n
//占位符第一个字符为%,第二个字符为占位符的类型,
// %d表示代入的值必须是十进制整数,%s表示代入的是字符串,%c表示字符,,%f小数,%p指针(用来打印地址)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
printf("Change World\n");
printf("Change world\nHello world");
printf("There are %d apples, %d bananas\n", 3, 9);
//第一个占位符就占的是第一个逗号后面的内容,第二个就占用第二个逗号后面的内容
printf("%s是一个动漫人物\n", "王麻子");
printf("%5d\n", 123); // 不足五位会在左边(前面)加空格,因为输出值默认为右对齐
printf("%5d\n", 123456); // 超过是多少就输出多少
printf("%-5d\n", 123); //在%后面添加-号会导致输出的值变为左对齐,会在后面加空格
//printf允许限定占位符的最小宽度
printf("Number is %.2f\n", 0.5); //限定小数位数是在%后添加 .2 表示小数点后两位
printf("%6.2f\n", 1.2); //代表数据的宽度是6,这个宽度包含小数点的,且要求小数点后两位
//空格 空格 1 . 2 0
int score = 0;
int a = 0;
int b = 0;
//printf("请输入成绩:");
//从键盘获取一个数据,写道变量score里面,&为取地址符号
//scanf("%d", &score); //要想使用score需要在最前面加 #define _CRT_SECURE_NO_WARNINGS
//第一个参数是占位符,第二个参数表示用户输入的参数存入变量中
//程序开始后,控制台会等待输入
//scanf中有什么输入什么,如果在%d后加入\n,必须输入\n才能继续
//printf("成绩是:%d\n", score);
scanf("%d%d", &a, &b);
//scanf()返回值的含义
//正常情况下会返回读取的变量个数
//如果没有任何读取项或者匹配失败返回0
//如果没有读取任何数据前,发生读取错误,或者读取到文件结尾,返回常量EOF(-1)
//end of file 文件结束的标志
//读取多个数值时,如果想要提前结束按ctrl+z
int ret = scanf("ret = %d\n", );
printf("数字是:%d,%d\n", a, b);
int year = 0;
int month = 0;
int day = 0;
scanf("%d-%d-%d",&year, &month, &day);
//scanf里面有什么就输入什么,比如上述2025-12-2
printf("%d%d%d\n", year, month, day);
return 0;
}#include<stdio.h>
int main()
{
int a = 1 + 2;
int b = 5 - 3;
int c = 5 - 16;
//负数也是可以被输出的
int d = 3 * 5;
float e = 3.3 * 5.5;
printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%f\n", a, b, c, d, e);
float x = 6 / 4;
int y = 6 / 4;
//整数除法,只会返回整数部分,丢弃小数部分
float z = 6.0 / 4;
//如果想要出现小数就要变成浮点数6.0
float w = 7.0 / 22;
printf("x=%f\ny=%dz=%f\nw=%f\n", x, y, z, w);
int g = 3 % 2;
int h = -8 % -3;
//只能用于整数不能用于浮点数
printf("g=%d\nh=%d\n", g, h);
//赋值操作符
//int a = 100其实就是运算符,就是吧100给了a,a =200就是把200给到了a
//复合运算符
//+=,-=,*=,/=,%=,》=(右移),《=(左移),&=,|=,^=
int j = 5;
j += 3; //其实就是j = j + 3
printf("j=%d\n",j);
//单目运算符
int i = 7;
//i++; //相当于给i自增1,把++放在i的前面也是给i加了1(++i),
//++在前,先自增,在赋值 ++在后,先赋值,后自增
int k = ++i;//相当于把i自增1,在把值赋给k
int l = i++;//把i赋值给l,在给i自增1
//--也是和++一样的运算规律
printf("i = %d\n", i);//输出的是在k自增和在l自增后的 9
printf("k = %d\n", k);//输出的是 8
printf("l = %d\n", l);//输出的是 8
//移位运算符,移的是比特位bit
//左移在右边补零,在左边掉0 左移是乘法,2的乘方运算
int num = 10;
int num1 = num << 1; // 输出的是20 10*2的一次方
int num2 = num << 2; // 输出的是40 10*2的二次方
printf("num=%d\nnum1=%d\nnum2=%d\n", num, num1, num2);
int nmu = 10;
int nmu1 = nmu >> 1; // 输出的是5 10/(2的一次方)
int nmu2 = nmu >> 2; // 输出的是2 10/(2的二次方)
printf("nmu=%d \nnmu1=%d \nnmu2=%d \n", nmu, nmu1, nmu2);
int unm = -1; //非常特殊,如果这个数字是-1,移位后还是-1
int unm1 = unm >> 1;
int unm2 = unm >> 2;
printf("unm=%d\nunm1=%d\nunm2=%d\n", unm, unm1, unm2);
int umn = -100;
int umn1 = umn >> 1;
int umn2 = umn >> 2;
printf("umn=%d\numn1=%d\numn2=%d\n", umn, umn1, umn2);
//位操作符
//按位与 & 按位或 | 按位亦或 ^ 按位取反 ~
/*
0101 1011
0001 1001
按位与 对应位上都是1,结果才会出现1,只要对应位上出现0,结果就是0 0001 1001
按位或 对应位上都是0,结果才会出现0,只要对应位上出现1,结果就是1 0101 1011
按位异或 对应位上一样,结果出现0,对应位上出现不一样的,结果就是1 0100 0010
按位取反 原来是0,结果就是1,原来是1,结果就是0
*/
int mun1 = -3;
int mun2 = 5;
printf("%d\n", mun1 & mun2);
printf("%d\n", mun1 | mun2);
printf("%d\n", mun1 ^ mun2);
printf("%d\n", ~0);
//关系运算符
int m = 11;
int n = 12;
printf("%d\n", m > n);
printf("%d\n", m < n);
printf("%d\n", m >= n);
printf("%d\n", m <= n);
printf("%d\n", m != n);
printf("%d\n", m == n);
//输出0表示假,输出1表示真
//逻辑运算符
/*
逻辑与 &&
逻辑或 ||
逻辑非 !
*/
//逗号表达式 从左向右一次执行,整个表达式的结果就是最后一个表达式的结果
int o = 1;
int p = 2;
int q = (o > p, o = p +10, a, b = a + 1);
printf("%d\n", q);
return 0;
}