小学生都看得懂的C语言入门(1): 基础/判别/循环

c基础入门, 小学生也可以都看得懂!!!!

安装一个编译器, 这方面我不太懂, 安装了DEV-C++  ,体积不大,30M左右吧, 感觉挺好用,初学者够了.

介绍下DEV 的快键键:

恢复 Ctrl+Z  重做 Ctrl+Y  剪切 Ctrl+X  拷贝 Ctrl+C  粘贴 Ctrl+V  搜索替换内容 Ctrl+F
编译 F9  运行 F10  编译运行 F11  设置注释 Ctrl+/ 取消注释再重复一次即可  (keep it in heart!)
复制行 Ctrl+E   删除行 Ctrl+D
整体左移一个tab位置 shift+tab   整体右移一个tab位置 tab
整体代码缩进对齐 Ctrl+Shift+A

1. hello world 

C基础框架

#include <stdio.h>
int main()
{
printf("hello world");
return 0;
}
#include <stdio.h>
int main()
{
printf("23+32=%d\n",23+32);
int price=0; //定义变量类型与初始值   可以定义两个变量int price1,price2   
printf("please input the price:");
scanf("%d",&price); //输入一个数 & 与指针有关 若不是输入整数,则默认为初值0 
int change=100-price;
printf("找您%d元",change);
return 0;
}
#include <stdio.h>
int main()
{
    int a=0;
    int b=0;
     
    scanf("%d %d",&a,&b); //也可以是逗号,那么输入也是1,3 输入要遵循"%d %d"形式 
    printf("%d %d\n",a,b); 
return 0;
}

2.数据类型, int类型的数据之间的运算得到的还是int 1/10=0, 但是1.0/10=0.1了

#include <stdio.h>
int main()
{
int foot=5;
int inch=7;  //整数的运算结果还是整数,会导致结果不准确,只需要将/12 改成12.0!!  10/3=3,10.0/3=3.333333 
//scanf("%d %d",&foot,&inch) ;

printf("身高是%f米\n",((foot+inch/12)*0.3048));

printf("身高是%f米\n",((foot+inch/12.0)*0.3048));
//也可以定义变量中修改
double foot1=5; //双精度浮点数 
double inch1=7;
//scanf("%lf %lf",&foot1,&inch)1 ;  //改成lf格式 
printf("身高是%f米\n",((foot1+inch1/12)*0.3048)); 
return 0;
}

得到:

身高是1.524000米
身高是1.701800米
身高是1.701800米

3. 计算时间差:

#include <stdio.h>
int main()
{
int h1,m1;
int h2,m2;
scanf("%d %d",&h1,&m1);
scanf("%d %d",&h2,&m2);
int t1=h1*60+m1;
int t2=h2*60+m2;
int t=t2-t1;
printf("the diff of the time is %d小时%d分钟",t/60,t%60);
return 0;
}

输入:

2 40
3 12
the diff of the time is 0小时32分钟

用if 语句计算时间差修改

#include <stdio.h>
int main()
{
int h1,m1;
int h2,m2;
scanf("%d %d",&h1,&m1);
scanf("%d %d",&h2,&m2);
int ih=h2-h1;
int im=m2-m1;
if (im<0) {
    im=60+im;
    ih--;
}
printf("the diff of time is %d hours %d minutes",ih ,im);
return 0;
}

2 15

3 40
the diff of time is 1 hours 25 minutes

4.交换两个数

#include <stdio.h>
int main()
{
// 运算顺序 * / % + - =赋值  a=b=6 表示,a=(b=6)赋值是从右向左!! 
//
int a=5;
int b=6;
int t;
t=a;
a=b;
b=t;
printf("a is %d,b is %d",a,b);
return 0;
}

a is 6,b is 5

5. n++ \++n区别

#include <stdio.h>
int main()
{
// 调试之前一定要先编译!!!很重要 
// 复合赋值 s+=1, s*=a+b  n++  n-- 分别加1 减1 也有++n,--n,  
//结果不同,n++ 表示+1之前的值,++n 是加一之后的值 ,

int a;
a=10;
printf("a++=%d\n",a++); //10
printf("a=%d\n",a);//11
printf("++a=%d\n",++a); //12
printf("a=%d\n",a); //12
return 0;
}

a++=10
a=11
++a=12
a=12

6.关系运算符

#include <stdio.h>
int main()
{
//关系运算符
printf("%d \n",5>3); //1
printf("%d \n",5<=3); //0
printf("%d \n",5<=3+4); //1 加法优先 
//关系运算符的优先级 大于 赋值  int x=a>0  就是先判别a>0 再赋值 
// 6>5>4 从左向右判别, 最后等于0 
//   /*   */ 多行注释 
return 0;
}

7. if else语句

#include <stdio.h>
int main()
{
// 语法 if(){}else{}
int a,b;
printf("please input two integers:");
scanf("%d %d",&a,&b);
int max=0;
if(a>b){
max=a;
}else{
max=b;
}
printf("%d",max); 
return 0;
}

另一种:

#include <stdio.h>
int main()
{
// 语法 if(){}else{}
int a,b;
printf("please input two integers:");
scanf("%d %d",&a,&b);
int max=b;
if(a>b){
    max=a;
} 
printf("%d",max); 
return 0;
}

注意: if 要是没有{} 时, 紧跟着if() 后面的语句作为条件成立时的执行语句!

8.应用实例-计算工资

#include <stdio.h>
int main()
{
const double rate=8.25;
const int standard=40;
double pay=0.0;
int hours;
printf("please input working hours:");
scanf("%d",&hours);
printf("\n");
if (hours>standard)
pay=standard*rate+(hours-standard)*rate*1.5;
else
pay=hours*rate;
printf("salaty is %f:\n",pay);
}

please input working hours:100

salaty is 1072.500000:

 

9.循环语句

实例1

#include <stdio.h>
int main()
{
//循环 while(条件判断){循环体} 循环体中要有改变条件的程序,否则为死循环 
//判断一个数字是几位数
int x;
int n=0;
scanf("%d",&x);
n++;//一定有一位数了 
x/=10; 
while(x>0){
    n++;
    x/=10;
} 
printf("%d\n",n); 
return 0;
}

对比以下

#include <stdio.h>
int main()
{
int x;
int n=0;
scanf("%d",&x);
while(x>0){
    n++;
    x/=10;
} 
printf("%d\n",n); 
return 0;
}
//这个方法不能数0 .输入0 得到的是0 不是1

可以增加if 判别进行修正

#include <stdio.h>
int main()
{
int x;
int n=0;
scanf("%d",&x);
if(x>0) {

while(x>0){
    n++;
    x/=10;
} }else{
    n=1;
}
printf("%d\n",n); 
return 0;
}

也可以用 do while 修正

#include <stdio.h>
int main()
{
//do-while 循环 do{循环体语句} while(循环条件); 第一次进入不用判别条件 
int x;
int n=0;
scanf("%d",&x);
do{    
    n++;
    x/=10; //这两行可以交换位置 
} while(x>0);
printf("%d\n",n); 
return 0;
}
// 输入0 得到1

实例2--阶乘

#include <stdio.h>
int main()
{
//阶乘
int i=1;
int n;
scanf("%d",&n);
int f=1;
while(i<=n){
    f*=i;
    i++;
} 
printf("%d!=%d\n",n,f) ;
return 0;
}

10

10!=3628800

用for 修改上述

#include <stdio.h>
int main()
{
//for 循环 for(初值;终值;步长变化){} 
int i=1;
int n=4;
//scanf("%d",&n);
int f=1;
for (i=1;i<=n;i++){
    f*=i;
} 
printf("%d!=%d\n",n,f) ; 
return 0;
}

4!=24

进一步改进:

#include <stdio.h>
int main()
{
//改进 i可以从2开始,省去一轮循环,并且当n=1时,循环不被执行,正确!! 
int i=1;
int n=4;
int f=1;
for (i=2;i<=n;i++){
    f*=i;
} 
printf("%d!=%d\n",n,f) ; 
return 0;
}

再次改进 从n开始乘

#include <stdio.h>
int main()
{
//改进 从n开始乘 
int i=1;
int n=4;
int f=1;
for (i=n;i>1;i--){
    f*=i;
} 
printf("%d!=%d\n",n,f) ; 
return 0;
}

最后改进, 不用引入变量i, 让n自己变小

#include <stdio.h>
int main()
{
//改进 让n自己变小 ,不用变量i 
int n=4;
int f=1; 
int n0=n;
for (n=n;n>1;n--){
    f*=n;
} 
//或者
//for (;n>1;n--){
//    f*=n;
//}
printf("%d!=%d\n",n0,f) ;  
return 0;
}

注意for 的初始值 终值.

//int i;
//for(i=0;i<5;i++) {
//    printf("i=%d",i); //0 1 2 3 4
//}
//printf("\n最后i=%d",i); //循环结束之后i=5 


for(i=1;i<=5;i++) {
    printf("i=%d",i); //12345
}
printf("\n最后i=%d",i); //循环结束之后i=6

//上述两个循环同样走5次,但是结果不同 int i;
//for(初始条件;条件;每轮动作) 

最后提一个问题....

提问待解决??

#include <stdio.h>
int main()
{
//int i=1;//定义可以放在for 循环里面,因为只有在循环中才用到了i, for 之外没有用到 
int n=4;
int f=1;
for (int i=1;i<=n;i++){
    f*=i;
} 22
printf("%d!=%d\n",n,f) ; 

//这个出错了  只有在C99 中才可以在for中定义变量 ,如何修正??? 
return 0;
}

 

posted @ 2018-05-09 12:48  xy小崽子  阅读(1182)  评论(0编辑  收藏  举报