黑马程序员——C语言基础1

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

.数据类型和变量

1.变量的初始化

(1)int i=5;
(2)int i;  i=5;

(3)int i; scanf("%d",&x);

2.常量 

关键字:const
如:const floatPI=3.1415926;
定义了一个常量以后这个常量是不允许被改变的;

3.标准输入输出

使用输入输出函数是一定要包含头文件 #include<stdio.h>
(1)
输出函数
printf(format string,data list);

format string :格式字符串
data list :
数据列表可以是一个或多个数据,多个时要用给隔开;
如:printf("%d\n%d",a,b);
几个常用的格式字符:
%d(
输出十进制整型数据)
%hd(
输出十进制短整型数据)
%ld(
输出十进制长整型数据)
%c(
输出字符型数据)
%f(
输出浮点型数据)
%f
:默认输出六位小数,不够六位的时候小数位要补0,多于六位的时候四舍五入保留六位小数;
如:printf("%d\n%c\n%f",23,'a',4.23);
结果是:23
           a

           4.230000
(2)scanf(format string,address list);
address list :变量的地址

#include<stdio.h>
 
intmain()
{
        int i;
        float p;
       
        scanf("%d%f",&i,&p);
        printf("%d\n%f\n",i,p);       
        return 0;
}





从键盘上输入一个整型数据和一个浮点型数据,分别赋值给了ip

输入数据时候可以用空格,tab,回车来进行分隔,最后输入回车结束!!


4.枚举类型

关键字:enum
格式:enum名称{成员1,成员2,成员3....};
:enum city{beijing,shanghai,guangzhou};
定义枚举类型的变量:
(1)
可以声明枚举类型接着就定义枚举类型变量
   
如:enum city{beijing,shanghai,guangzhou}city1,city2;
(2)
可以声明枚举类型以后在定义变量
   
如:enum city city1,city2;
(3)
还可以不写名称直接定义枚举类型接着定义变量(不常用)
   
如:enum{beijing,shanghai,guangzhou} city1,city2;


5.数组

(1)一维数组
在内存中分配连续的一组存储空间,存放相同数据类型的数据;
格式:数据类型数组名 [数组的长度]
定义数组是必须指定数组的长度
数组的下表是从0开始的
如:int a[5];
数组的初始化:int a[]={1,2,3,4,5};(方括号中的长度可以省略不写)
数组元素的赋值:
如:for(i=0;i<5;i++)a[i]=i;
还可以为数组中的元素逐个赋值;
(2)
二维数组
如:int a[3][4]表示一个三行四列的二维数组;
赋值:

for(inti=0;i<3;i++)
{
for(intj=0;j<4;j++)
a[i][j]=3*i+j;       
}





.操作符和表达式



1.算术运算符

+-*/%(取余运算符)

++--:只能对变量进行运算

2.赋值运算符

= -=+=*=/=,%=;

3.逻辑运算符

&&||,!

先算前面的表达式的值,若前面的表达式的结果已经确定了整个表达式的结果,后面的表达式就不用计算了

4.sizeof();

5.if else 语句

1.if语句和elseif语句的区别

(1)

#include<stdio.h>
 
int main()
{
        int grade;
        char letter_grade;
 
        printf("Please input a mark out of100:");
        scanf("%d",&grade);
 
        if(grade<=100 &&grade>=80)
        {
                letter_grade='A';
        }
        if(grade<80 && grade>=70)
        {
                letter_grade='B';
        }
        if(grade<70 && grade>=60)
        {
                letter_grade='C';
        }
        if(grade<60 && grade>=50)
        {
                letter_grade='D';
        }
        if(grade<50 && grade>=0)
        {
                letter_grade='F';
        }
        if(grade<0)
        {
                printf("输入错误!!\n");
        }
 
        printf("A mark of %d is an%c\n",grade,letter_grade);
 
        return 0;
}




(2)

#include<stdio.h>
 
int main()
{
        int grade;
        char letter_grade;
 
        //printf("Please input a mark outof 100:");
        //scanf("%d",&grade);
 
 
    //输入一个满足条件的grade,如果不满足条件要一直输入,直到满足条件为止
        do
        {
                printf("请输入一个成绩(0~100之间的数):");
               scanf("%d",&grade);
 
        }while( grade<0 || grade>100 );
       
 
         if(grade>=80)
        {
                letter_grade='A';
        }
        else if(grade>=70)
        {
                letter_grade='B';
        }
        else if(grade>=60)
        {
                letter_grade='C';
        }
        else if(grade>=50)
        {
                letter_grade='D';
        }
        else
        {
                letter_grade='F';
        }
       
        if(grade<=100 &&grade>=0)
        {
                printf("A mark of %d is an%c\n",grade,letter_grade);
        }
        return 0;
}



在程序1中如果输入的是90,那么没一个if语句都要执行一遍,而在程序2中如果输入90则执行第二个elseif语句

2.开关语句switch

格式:switch(表达式)
{
case 常量表达式:语句1break
case 常量表达式:语句2break
....
default:语句n+1
}


#include <stdio.h>
 
int main()
{
        char c;
        printf("Enter your letter gradeand press return:");
        scanf("%c",&c);
 
        switch(c)
        {
        case 'A':
                printf("Your mark isbetween 80 and 100\n");
                break;
        case 'B':
                printf("Your mark isbetween 70 and 79\n");
                break;
        case 'C':
                printf("Your mark isbetween 60 and 69\n");
                break;
        case 'D':
                printf("Your mark is between50 and 59\n");
                break;       
        case 'F':
                printf("grade is below50\n");
                break;
        default:
                printf("You have typed inan illegal letter\n");
        }
 
        return 0;
}





如果case后面没有break;的话,程序将一直执行知道遇到break,或者到了程序的末尾

3.循环

(1)for():
格式:for(expr1;expr2;expr3)statement
如:

#include<stdio.h>
int main()
{
int i;
for(i=0;i<3;i++)
{
printf("count=%d\n",i);
}
return 0;
}


输出的结果为:
count=0
count=1
count=2


(2)while()循环

格式:while(条件)
{
语句;
}


#include<stdio.h>
 
int main()
{
        int count=0;//统计输入的整数的个数
        int sum=0;//求和
        int a;//输入的整数
       
        printf("请输入若干个整数,输入负数结束!\n");
        printf("请输入第%d个整数:",count+1);
        scanf("%d",&a);
 
        while( a>=0 )
        {
                sum=sum+a;
                count++;
                printf("请输入第%d个整数:",count+1);
                scanf("%d",&a);
        }
 
        if(count!=0)
        {
                printf("一共输入了%d个整数\n",count);
                printf("这%d个整数的平均值为%f\n",count,sum/(double)count);
        }
        else
                printf("你没有输入整数!");
 
        return 0;
}




(3)do while 语句和while循环语句的区别:
while循环是先判断条件,如果满足则执行循环
do while是先循环一次,在判断条件,如果不满足的话,退出循环
while循环至少执行0次循环,而do while语句至少执行一次循环
(4)continue :终止本次循环,进行下一次循环


#include<stdio.h>
int main()
{
        int i=0;
        int a[3];
        int num;
/**
*要求输入10~20之间的整数,将这个整数放到数组a中,如果不是这个范围的数据的话,将提示重新输入
**/
 
 
 
        while(i<3)
        {
                
                printf("请输入第%d个数:",i+1);
                scanf("%d",&num);
 
                if(num>20||num<10)
                {
                       
                        printf("输入错误,请重新输入(输入10~20之间的整数)!!\n");
                       
                        continue;//返回到while循环的开始部分,后面的不再执行
                }
                a[i]=num;
                i++;
 
        }
 
        printf("\n数组a的数据为:\n");
        for(i=0;i<3;i++)
        {
               printf("a[%d]=%d\n",i,a[i]);
        }
 
        return 0;
}



break:结束循环

#include<stdio.h>
 
int main()
{
        //输入一个整数,计算这个整数的阶乘
        int n;
        int a=1;
        int i;
        printf("请输入一个整数:");
        scanf("%d",&n);
 
        for(i=1;;i++)
        {
                a*=i;
 
                if(i==n)
                {
                        break;
                }
        }
 
        printf("%d!=%d\n",n,a);
 
        return 0;
}



6.强制类型转换

float i=0; int j=(int)i;

7.运算符优先级从高到低的排列顺序:

  1):!
  
2):算术运算符
  
3):关系运算符
  
4):逻辑运算符

  5):赋值运算符

 

三.函数

格式:
返回值类型函数名(形参表)

:double area (double length,doublewidth);
函数要先声明在调用。
括号中的形参表中形参的名称是可以省略的
:double area (double,double)
但是实现函数的时候,一定要加上形参的名称


#include<stdio.h>
//求三角形的面积
doublearea(double width,double height)
{
        double area;
        area=width*height/2;
        return area;
}
 
intmain()
{
        double w,h;
 
        printf("请输入底的长度:");
        scanf("%lf",&w);
        printf("请输入高的长度:");
        scanf("%lf",&h);
 
        printf("这个三角形的面积是%.2f\n",area(w,h));
 
 
        return 0;
}





//求两个数的最大公约数:
#include<stdio.h>
//求两个数的最大公约数
//先找到两个数中最小的一个数min,
//最大公约数可能是这个最小的数min到1之间的数
//通过循环从大到小一次判断这几个数哪个是最大公约数
//如果a,b能够整除i,则i即为最大公约数
intzdgys(int a,int b)
{
        int i;
       
        int min=a;
        if(min>b)
        {
                min=b;
        }       
 
        for(i=min;i>=1;i--)
        {
                if(a%i==0 && b%i==0)
                {
                        break;
                }
        }
    return i;
       
}
 
intmain()
{
        int a,b;
        printf("请输入两个数:\n");
        scanf("%d%d",&a,&b);
 
        printf("%d和%d的最大公约数是%d\n",a,b,zdgys(a,b));
 
        return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值