<C> 基础
一.数制
分为二进制 八进制 十进制 十六进制
二.C的第一个简单程序
1 #include<stdio.h> 2 int main() 3 { 4 printf("Hello World!"); 5 return 0; 6 }
1.C的基本类型
①整型:有符号(signed):int 32位 -2147483648~2147483647
short 16位 -32768~32767
long 32位 -2174783648~2174783647
无符号(unsigned):int 32位 0~4294967295
short 16位 0~65535
long 32位 0~4294967295
②浮点型(有符号,表示小数):float 32位
double 64位
③字符型:有符号(signed):char 8位 -127~128
无符号(unsigned ):unsigned char 8位 0~255
注:有符号的 最高位是符号位 0正 1负
2.常用转换符说明
%d 有符号的十进制整数
%f 浮点型(float和double)
%c 字符型
%p 指针
注:所有新定义的变量必须放在程序的最前面 声明的变量一定要放在最上面
三.流程结构
1.选择:
①二选一if else:
if后面的括号填条件表达式 例如:a>b a>=b a<b a<=b a==b a!=b
1 if() 2 { 3 4 } 5 else 6 { 7 8 }
②多选一switch:
switch后面的括号放整型变量或变量表达式/枚举类型
1 switch() 2 { 3 case 1: 4 5 break; 6 case 2; 7 8 break; 9 case 3: 10 11 break; 12 default: 13 14 break; 15 }
没有break是无法跳出的 不走其他选项的走default
例:'c' 下面可以写case 'c'或case 99 都可输出case内的结果
2.循环:
①知道次数的循环for:
1 for( ; ; ) 2 { 3 4 }
括号中 第一个空填的是 循环变量的起始位置 第二个空是 循环条件 第三个是 循环变量的变化方式 如 i++
②先判断后执行的循环while:
1 while() 2 { 3 4 }
括号中所填的是循环条件 循环次数最少0次
③先执行再判断的循环do while:
1 do 2 { 3 4 }while();
注:括号内容同上 都是循环条件 但是这个循环的循环次数最少1次
3.continue和break:
continue 表示结束本次循环 执行下一次循环
break 表示跳出循环
4.常用符号:
% 取余数
/ 取整数
/n 换行
/t 缩进
5.逻辑与 或 非:
&& 两个条件都要满足
|| 两个条件满足其中一个就可以
! 取反
注:非零返回的是0 0返回的是1 非零取两次反返回的是1 不是原来的值
四.流程结构练习
1.int shu = 8392 按从高到低输出每个位上面的数
1 #include<stdio.h> 2 int main() 3 { 4 int shu = 8392; 5 int i; 6 for(i=1000;i>=1;i=i/10) 7 { 8 printf("%d\n",shu/i); 9 shu = shu%i; 10 //这样每次都会改变shu的数值 11 } 12 return 0; 13 }
所以怎么样才能在输出最高位的同时 不改变shu的数值 于是 代码进行了下面的修改
1 #include<stdio.h> 2 int main() 3 { 4 int shu = 8392; 5 int i; 6 for(i=1000;i>=1;i=i/10) 7 { 8 printf("%d\n",shu/i%10); 9 } 10 return 0; 11 }
2.青蛙爬井 白天爬五米 黑天掉四米 井深十米 问第几天能爬出这个井
在解决这个问题的时候 要注意的是 有可能在白天的时候 青蛙就已经爬出来了 黑天就不用再算往下掉的了 所以我们要写一个标记
1 #include<stdio.h> 2 int main() 3 { 4 int day = 0; //记录天数 5 int runs = 0; //记录所爬的高度 6 int biaoji = 0; //0为白天 1位黑天 7 do 8 { 9 //首先判断黑天还是白天 10 if(biaoji == 0) 11 { 12 day = day + 1; 13 runs = runs + 5; 14 biaoji = 1; 15 } 16 else 17 { 18 runs = runs - 4; 19 biaoji = 0; 20 } 21 }while(runs<10); 22 printf("%d\n",day); 23 }
精简:
1 #include<stdio.h> 2 int main() 3 { 4 int day = 0; //记录天数 5 int runs = 0; //记录所爬的高度 6 int biaoji = 0; //0为白天 1位黑天 7 while(1) 8 { 9 day ++; 10 runs+=5; 11 if(runs>=10) 12 { 13 break; 14 } 15 runs-=4; 16 } 17 printf("%d\n",day); 18 }
3.乒乓球比赛 a不和b打 c不和x,z打 问 那这个比赛应该咋设计
1 #include<stdio.h> 2 int main() 3 { 4 char a,b,c; 5 for(a='x';a<='z';a++) 6 { 7 for(b='x';b<='z';b++) 8 { 9 for(c='x';c<='z';c++) 10 { 11 if(a!='x'&&c!='x'&&c!='z'&&a!=b&&b!=c&&a!=c) 12 { 13 printf("a=%c\n",a); 14 printf("b=%c\n",b); 15 printf("c=%c\n",c); 16 } 17 } 18 } 19 } 20 }