黑马程序员——C语言基础1
来源:互联网 发布:java字符串切割 编辑:程序博客网 时间:2024/05/17 03:10
------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;}
从键盘上输入一个整型数据和一个浮点型数据,分别赋值给了i和p;
输入数据时候可以用空格,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 常量表达式:语句1;break;
case 常量表达式:语句2;break;
....
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;}
- 黑马程序员——C语言基础
- 黑马程序员——C语言基础
- 黑马程序员——C语言基础
- 黑马程序员——1、C语言(基础语法)
- 黑马程序员——C语言基础1
- 黑马程序员——C语言基础---数组1
- 黑马程序员——C语言基础---指针1
- 黑马程序员——C语言基础---结构体1
- 黑马程序员——C语言基础篇---基础语法
- 黑马程序员——C语言基础---基础语法
- 黑马程序员—Java语言基础1
- 黑马程序员—Java语言基础1
- 黑马程序员——C语言基础——指针
- 黑马程序员——C语言——基础运算
- 黑马程序员————C语言基础概念
- 黑马程序员——C语言基础——排列
- ——黑马程序员——C语言基础--数据类型
- 黑马程序员——C语言——基础语法
- 多项式加减 List
- SQL语句做报表统计
- Cocos2dx -lua QuickXDev拓展
- 【第六章·图】思维导图
- 树网的核
- 黑马程序员——C语言基础1
- 解决系统改变字体大小的时候导致的界面布局混乱的问题
- 《富爸爸致富需要做的6件事》读书笔记
- Android 获取通讯录联系人信息
- uva 11021 Tribles (概率,递推)
- android对按钮的监听(基础)
- Genymotion:超赞的安卓虚拟机
- [leetcode 143] Reorder List
- 实现微信分享步骤 和 功能实现详解