2022年6月15日
转义字符,(让某个字符不再是之前的意义)
数数"c:\test\32\test.c"字符串中有多少个字符
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int main() { printf("%d \n",strlen("c:\test\32\test.c")) return 0 ; }
答案是13
因为 \t 被记为一个转义字符, \32 也被记为一个转义字符,
这时候要查一下ASCII表看看 \32 表示什么
因为 \ddd //ddd表示1~3个8进制数字,如\32和\032一样
\xdd //dd表示1~2个十六进制数字(:A~F表示10~15)
\32 对应→,也被记为一个转义字符,因此答案是13
另外,若不想让\t表示转义字符,需将\t写为\\t
条件,
进入驾校你要学习,认真(1)即可通过,摆烂(0)就会挂科,最后判断是否通过。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int judge = 0; printf("您进入了驾校,请问考前是否复习(1/0)? >: \n"); scanf("%d" , &judge ); if(judge = 1) printf("通过\n"); else printf("挂科\n"); return 0 ; }
但是一个代码块内,if只能用一次吗?
这里又犯了判断等于的错误
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int judge = 0; printf("您进入了驾校,请问考前是否复习(1/0)? >: \n"); scanf("%d", &judge); if (judge = 1) printf("通过\n"); else printf("挂科\n"); printf("\n此时judge=%d\n", judge); return 0; }
输入0,输出judge = 1
所以,应该是
if(judge == 1)
printf("ao");
循环中的while语句,
为了通过科目一,你需要在考前刷题,驾校一点通一共有2186道摸呢题,你需要刷完才能过。
刷题(n/2186),循环,每一次经过让knowledge +1
→判断是否刷完
→通过
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { printf("您进入了驾校一点通\n开始刷题\n"); int knowledge = 0 ; while(knowledge<2186) { printf("您刷了一道题目,知识+1\n"); knowledge++; printf("您已经刷了%d道题目\n" , knowledge); } if(knowledge>=2186) printf("您通过了科目一考试"); return 0 ; }
替换knowledge++的方法,如一次性+10
printf("您刷了一道题目,知识+10\n"); knowledge = ("%d",knowledge) + 10 ;
自定义函数,
用新建的自定义函数,如取名add(两数相加)和addpro(三数相加)
需要在主要代码块前先定义一下之后要用到的函数。
想一想这里为什么是add(int x , int y);而之后都是直接用已经有了的变量add(num1 , num2);
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int add(int x, int y)//定义add为两数相加 { int z = x + y;//这里等效于int z = 0;并且z = x + y; return z; } int addpro(int x, int y, int z)//定义addpro为三数相加 { int w = x + y + z; return w; } int main() { int sum = 0; int num1 = 2; int num2 = 4; int num3 = 8; int num4 = 16;//我找了三个数哦 sum = add(num1, num2); printf("%d \n", sum); sum = addpro(sum, num3, num4); printf("%d \n", sum); return 0; }
若不定义addpro,就会报错,并提示“函数不接受三个参数”。
思考一下如何只定义一个函数,就能满足任意数相加,而不啻于定义多个add(pro,plus,extra,evolved)函数
那么,自定义函数有什么用呢,sum = x + y他不香吗?
遇到复杂的运算,一次要好多步,那么可以首先定义一波,之后就能像用快捷键一样“一键就叫”。
数组,
定义:一组相同类型元素的集合。
如--int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个存放10个整数数字的数组,其中每个数都有一个序号与之对应0,1,2,3,4,5,6,7,8,9
这里想简单的创建一个数组,并打印其中的一个数。
#include <stdio.h> int main() { int arr[10] = {1,2,3,4,5,6,7,8,9,10};//创建数组 printf("%d \n" , arr[4]);//打印序号为4的数,也即5 return 0 ; }
如果想把数组中的每一个数都打印一遍,可使用循环语句。
//错误例,笑 #include <stdio.h> int main() { int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int i = 0 ; int m = 0 ; while(i<10) { printf("数值i从%d升级为%d \n",i , m ) ; i++; } return 0; }
//真实例 #include <stdio.h> int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int i = 0; while (i <10) { printf("%d \n ", arr[i]); i++; } return 0; }
操作符简单介绍,
算术计算符:+ - * / %(取mod)
取mod介绍
如果用 / 除,结果为2
#include <stdio.h> int main() { int a = 5/2; printf("%d \n",a ); return 0; }
如果用 % ,取mod,结果为1
#include <stdio.h> int main() { int a = 5%2; printf("%d \n",a ); return 0; }
移位操作符
左移<<和>>右移
整型1占4个字节--32bit
1的二进制表达为00000000000000000000000000000001
左移2后,左边丢弃,右边补0
00000000000000000000000000000100结果为1*2^2=4
#include <stdio.h> int main() { int a = 1; int b = a<<2; printf("%d \n" , b); return 0 ; }
而a本身不变。
位操作符(二进制位)
&按位与
#include <stdio.h> int main() { int a = 3; int b = 5; int c = a & b;//c来接收值 printf("%d\n", c); return 0; }
结果为1,
3的二进制011,5的二进制101
3=011
5=101→001→1 找交集
tips:
|按位或
3=011
5=101→111→7 找并集
^按位异或
对应的二进制位相同,则为0;对应的二进制位相异,则为1。
#include <stdio.h> int main() { int a = 3; int b = 5; int c = a^b; printf("%d \n",c); return 0 ; }
结果为6
赋值操作符
int a = 10 ;//一个=叫赋值 ==两个叫判断相等 a = a + 10;//给a+10再赋给a a += 10;//a在自己本身+10 a = a - 10;// a -= 10;//&= |= ^= /= *= <<= >>=复合操作符 return 0;
单目操作符,双目操作符,三目操作符
a + b 左右各1个(共两个操作数),所以叫双目操作符
单目操作符
!逻辑反操作
c语言中,0表示假,其他一切表示真
int a = 10;
printf("%d",!a);//→0
但若!0得到的答案默认为1
-和+负值与正值
int a = -2
-a→2 +a→-2
故与数学相同,+无实际价值,通常省略
sizeof计算变量或类型所占空间大小
单位字节,
变量
int a = 4; printf("%d \n",sizeof (a));
结果为4,因为一个基本整型占4个字节的空间
同时对变量来说,也可用sizeof a 直接计算
但对于类型如(int)、(long int)来说则不行,必须加上(括号)
数组
int main() { int arr[10] = { 0 };//10个整型元素的数组 printf(" % d \n", sizeof (arr)); //计算一下数组的元素个数 //数组总大小/每个元素的大小=个数 printf("%d \n", sizeof(arr) / sizeof(arr[0])); return 0; }
↑元素个数的计算方法↑
0 评论:
发表评论