刚好看到逻辑类型,今天早上有个很好玩的事情,一早上醒来圆圆的小狗跑到了床下,然后她说
“你是不是打我的小狗了”
我;”我没有,我什么都不知道”
”他的屁股都扁了“
我:“我怎么知道,他的屁股扁了关我什么事"
“你怎么知道他的屁股扁了”
我“不是你说的嘛”
“我诈你的”,然后走了
我“……”不是,自己的妹妹是个傻子,怎么破????
一,逻辑类型
#include<stdbool.h>
int main(){
bool a=true;
bool b=false;
printf("%d\n",a);
printf("%d\n",b);
实际上并没有真正的BOOL量的类型,还是整数?反正输出1 0
1.1 逻辑运算
!【逻辑‘非’】,&&【这个念AND AND,逻辑‘与’】,||【这个念OR OR,逻辑’或‘】
1.2 短路
说,从左到右边运算,左边不行了,就不算右边了,说不要把赋值和复合赋值写进去
但是???&&就算算出右边,左边的也不满足条件啊,那不还是不行,算不算有什么意义,我没懂为撒特意说?
int a=-1;
if(a>0&&a==0){
printf("OK\n");
}else{
printf("A\n");
}
printf("%d\n",a);
int b=0;
if(a>0&&b==0){
printf("OK\n");
}else{
printf("A\n");
}
printf("%d\n",a);
二,条件运算和逗号运算
2.1 条件
条件 【问号】 条件符合的值(操作)【冒号】 条件不符合的值(操作)
==IF(条件){条件符合的值}ELSE{条件不符的值}
什么从右边向左算
不建议用
2.2 逗号
//int a=3+4,5+6;
int b=(3+4,5+6);
//printf("%d\n",a);
printf("%d\n",b);
括号里面的,逗号运算,就是后面那个,11,?
说主要是FOR用到
三,函数
3.1 求和
#include<stdio.h>
void sum(int begin,int end)
{
int i;
int sum=0;
for(i=begin;i<=end;i++){
sum+=i;
}
printf("%d到%d的和是%d",begin,end,sum);
}
int main(){
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}
3.2 定义和调用
void cheer()
{
printf("cheer\n");
}
int main(){
cheer();
反正要带那个小括号
????他知道是哪里调用他,会返回第二次调用他的地方??
3.3 返回
#include<stdio.h>
int max(int a,int b)
{
int ret;
if (a > b) {
ret = a;
}
else {
ret = b;
}
return ret;
}
int main() {
int a, b, c;
a = 5;
b = 6;
c = max(10, 12);
c = max(a, b);
c = max(c, 23);
printf("%d\n", max(a, b));
return 0;
}
求和是没有返回值的,输出的结果是函数自己运算的结果,但是!没有能产生一个int变量给下面的语句进行其他操作,也不能输出
返回会产生一个变量,能带入其他的运算
3.4 先后关系
#include<stdio.h>
int max(int a, int b);//声明
int main() {
int a, b, c;
a = 5;
b = 6;
c = max(10, 12);
c = max(a, b);
c = max(c, 23);
printf("%d\n", max(a, b));
return 0;
}
int max(int a, int b)//定义
{
int ret;
if (a > b) {
ret = a;
}
else {
ret = b;
}
return ret;
}
可以放后面,先给出一个生命,但是,函数定义INT MAIN(){}里面都不行,原型可以放里面外面,
定义和声明都要一致
int max(int f, int t);//声明
int max(int , int );//声明
不检查参数名称,只检查参数类型,对机器没什么意义,对人有
3.5 参数传递
类型管的不严,会自动类型转换
void swap(int a,int b)
{
int c=a;
a=b;
b=c;
}
int main(){
swap(5,6);
printf("a=%d,b=%d",a,b);
return 0;
}
平行空间?类似CAD的图纸和视图?
只能传值!!!!而不是把变量A B传进去
#include<stdio.h>
void swap(int a,int b)
{
int c=a;
a=b;
b=c;
}
int main(){
int a=5;
int b=6;
swap(a,b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
3.6 本地变量
int a = 0;
int b = 0;
printf("a=%d\n", a);
{
printf("a=%d\n", a);
int a = 7;
printf("a=%d\n", a);
}
{
int a = 7;
int i = 7;
}
printf("a=%d\n", a);
3.7 其他
3.7.1,没有参数时
#include<stdio.h>
void swap(void);
//原型要把参数写全,不写,视为不确定用什么参数
//但是,刚注意我写了VOID,不懂
int sum();
int main() {
int a = 5;
int b = 6;
swap(a, b);
printf("a=%d b=%d\n", a,b);
return 0;
}
void swap(double a, double b) {
int c = a/2;
a = b/2;
b = c;
printf("a=%f b=%f\n", a, b);
}
int sum(int a, int b) {
int i = a + b;
return i;
}
总结就是,好好写,都对上
3.7.2 逗号
f(a,b)//只是一个标点符号,输入两个值
f((a,b))//一个值
3.7.3 其他
不可以嵌套函数,INT MAIN()也是一个函数,return0还是有人看的
四,数组
4.1 平均数和输出
int x = 0;
double sum=0 ;
double ret = 0;
int i = 0;
scanf_s("%d", &x);
while (x > 0) {
sum += x;
i++;
ret = sum / i;
scanf_s("%d", &x);//我又忘了捏
}
printf("和是%.0f,平均数是%.3f\n",sum, ret);
scanf放在循环里面真的可以把我整神,还有输出,double不可以%d输出,但是可以%。0F
#include<stdio.h>
int main(){
int x = 0;
double sum=0 ;
double ret = 0;
int i = 0;
int number[100];
//能放100个数的数组
scanf_s("%d", &x);
while (x > 0) {
number[i] = x;
//i会不断递增,把X的值放进,I的位置上的那个单元?
{
int t;
printf("%d", i);
for (t = 0; t < i; t++) {
printf("%d\t", number[t]);
}
printf("\n");
}//检查数组的内容,大循环里面的小循环,进入这个循环就会把数组的数挨个输出一遍
//所以除了开头,number【1】只代表这个数组里面,序号为1的一个变量
sum += x;
i++;
ret = sum / i;
scanf_s("%d", &x);
}
printf("和是%.0f,平均数是%.3f\n大于平均数的数是",sum, ret);
int cnt ;
for (cnt = 0; i > cnt; cnt++) {
//遍历他?循环判断,大于平均数输出!
if (number[cnt] > ret) {
printf("%d\t", number[cnt]);
}
}
printf("\n");
return 0;
}
4.2 定义
数组——变量类型【数组里面的东西的变量类型】变量名称[元素数量]
数组的单元——变量名称[下标OR索引,从0开始计数],0——下标-1
#include<stdio.h>
void f();
int main() {
f();
printf("here\n");
return 0;
}
void f() {
int a[10];
a[10] = 0;
}
越界!