<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 }
posted @ 2018-03-31 21:11  Aaaaaalei  阅读(215)  评论(0编辑  收藏  举报