C语言
一.C语言概述
1.C语言的特点
2.面对过程和面向对象豹程序设计思想
3.打印Hello World
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
#include<stdio.h>
int main()//主函数
{
int x, y, z;//变量说明
printf("input two number:\n");//输出
scanf("%d%d", &x, &y);//输入x,y值
z = max(x, y);//调用max函数
printf("max=%d", z);//输出
return 0;
}
int max(int a, int b)//定义max函数
{
if (a > b)
{
return a;//把结果返回主调函数
}
else
{
return b;//把结果返回主调函数
}
}
二.数据类型、运算符、表达式
1.数据类型
#include<stdio.h>
#define NAME "马云"//常量
#define AGE 50//常量
int main()
{
printf("%s今年%d岁\n", NAME,AGE);//常量
char name[] = "马化腾";//变量
int age = 50;//变量
printf("%s今年也%d岁\n", name, age);//变量
age = age + AGE;//变量可以改变
printf("两个人今年的一共%d岁\n",age);//变量
return 0;
}
整形数据
signed意思为有符号的 ,unsigned意思为无符号的,默认为signed。
#include <stdio.h>
int main()
{
signed short i;
unsigned short j;
i = -1;
j = -1;
printf("有符号的:%d\n",i);
printf("无符号的:%u\n", j);
return 0;
}
//有符号的:-1
//无符号的:65535
//64位输出
#include<stdio.h>
int main()
{
printf("int字节数:%d\n",sizeof(int));
printf("short字节数:%d\n", sizeof(short));
printf("long字节数:%d\n", sizeof(long));
printf("short int字节数:%d\n", sizeof(short int));
printf("long int字节数:%d\n", sizeof(long int));
printf("unsigned int字节数:%d\n", sizeof(unsigned int));
printf("unsigned short字节数:%d\n", sizeof(unsigned short));
printf("unsigned long字节数:%d\n", sizeof(unsigned long));
printf("unsigned short int字节数:%d\n", sizeof(unsigned short int));
printf("unsigned long int字节数:%d\n", sizeof(unsigned long int));
return 0;
}
//int字节数:4
//short字节数:2
//long字节数:4
//short int字节数:2
//long int字节数:4
//unsigned int字节数:4
//unsigned short字节数:2
//unsigned long字节数:4
//unsigned short int字节数:2
//unsigned long int字节数:4
#include<stdio.h>
int main()
{
int a = 10;
unsigned int b = -10;//无符号时使用%d输出系统会自动转换成有符号
unsigned int c = -10;//无符号时使用%u输出系统不会自动转换成有符号
printf("a=%d\nb=%d\nc=%u\n", a, b,c);
return 0;
}
//a = 10
//b = -10
//c = 4294967286
浮点型数据
//64位输出
#include<stdio.h>
int main()
{
printf("float字节数:%d\n",sizeof(float));
printf("double字节数:%d\n", sizeof(double));
printf("long double字节数:%d\n", sizeof(long double));
return 0;
}
//float字节数:4
//double字节数:8
//long double字节数:8
#include<stdio.h>
int main()
{
float a, b;
a = 123456.789E5;//12345678900
b = a + 20;
printf("%f\n",a);//超出有效范围,舍入误差生成随机数
printf("%f\n",b);
return 0;
}
//12345678848.000000
//12345678848.000000
字符型数据
#include <stdio.h>
int main()
{
char a = 'A';
char b = 66;
char c = 97;
printf("%c=%d\n", a, a);
printf("%c=%d\n", b, b);
printf("%c=%d\n", c, c);
return 0;
}
//A=65
//B=66
//a=97
#include<stdio.h>
int main()
{
char a = 'a';//97
char b = 'A';//65
int c = a - 32;//97-32=65--'A'
int d = b + 32;//65+32=97--'a'
printf("小写%c转换为大写%c\n", a, c);
printf("大写%c转换为小写%c\n", b, d);
}
//小写a转换为大写A
//大写A转换为小写a
#include<stdio.h>
int main()
{
char str1[10] = { 'A','P','P','L','E','\0' };//初始化字符数组的每个元素
char str2[] = { 'A','P','P','L','E','\0' };//可以不写元素的个数,因为编译器会自动计算
char str3[] = { "APPLE" };//使用字符串常量初始化字符数组
char str4[] = "APPLE";//使用字符串常量初始化,可以省略大括号
printf("str1=%s\n", str1);
printf("str2=%s\n", str2);
printf("str3=%s\n", str3);
printf("str4=%s\n", str4);
return 0;
}
//str1=APPLE
//str2=APPLE
//str3=APPLE
//str4=APPLE
名类数值型数据之间的混合运算
例如:int=long 右边类型自动转换成左边类型,因为右边类型大于左边类型,所以会降低精度
#include<stdio.h>
int main()
{
float PI = 3.141596;
int s, r = 5;
s = r * r * PI;
printf("s=%d\n", s);
return 0;
}
//s=78
//5 * 5 = 25
//25 * 3.141596 = 78.5399
//%d转换成double类型,因为s为整形,故赋值也为整形,舍弃小数点部分,所以等于78
#include<stdio.h>
int main()
{
float a = 31.323;
printf("(int)a=%d\na=%f\n", (int)a,a);
return 0;
}
//(int)a = 31
//a = 31.323000
2.运算符
#include<stdio.h>
int main()
{
int a = 1;
int b = 4;
printf("%d\n", a + b);
printf("%d\n", a - b);
printf("%d\n", a * b);
printf("%d\n", a / b);
printf("%d\n", a % b);
printf("%f\n", (float)a/b);
return 0;
}
//5
//- 3
//4
//0
//1
//0.250000
#include<stdio.h>
int main()
{
int a = 5;
int b;
b = ++a;
printf("b= %d\n", b);//6
int c = 5;
int d;
d = c++;
printf("d= %d\n", d);//5
return 0;
}
#include<stdio.h>
int main()
{
int a, b = 322;
float x, y = 8.88;
char c1 = 'k', c2;
a = y;
x = b;
a = c1;
c2 = b;
printf("%d\n%f\n%d\n%c\n", a, x, a, c2);
return 0;
}
//107
//322.000000
//107
//B
#include<stdio.h>
int main()
{
int a=10,b = 32,c=6,x,y;
y = ((x= a + b), (b + c));
printf("y=%d\n", y);
printf("x=%d\n", x);
return 0;
}
//y = 38
//x = 42
三.顺序程序设计
#include<stdio.h>
int main()
{
printf("A\n");
putchar('A');//A字符
putchar('\n');//换行符
putchar('\101');//八进制101 等于十进制65转换为字符为A
return 0;
}
//A
//A
//A
#include<stdio.h>
int main()
{
char d;
d = getchar();
putchar(d);
//char c;
//scanf("%c", &c);
//printf("%c", c);
//return 0;
}
#include<stdio.h>
int main()
{
int a = 15;
float b = 123.1234567;
double c = 12345678.1234567;
char d = 'p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);//a=15, 15,17,f
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);//b=123.123459,123.123459,123.1235,1.231235e+02
printf("c=%lf,%f,%8.4lf\n",c,c,c);//c=12345678.123457,12345678.123457,12345678.1235
printf("d=%c,%8c\n",d,d);//d=p, p
return 0;
}
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%d %d %d\n", a, b, c);
return 0;
}
#include<stdio.h>
int main()
{
int a, b, c;
scanf("%d%*d%d", &a, &b);
printf("%d %d\n",a,b);
return 0;
}
//1 2 3
//1 3
#include<stdio.h>
int main()
{
int a;
scanf("%5d", &a);
printf("%d\n",a);
return 0;
}
//123456789
//12345
#include<stdio.h>
int main()
{
char a, b, c;
scanf("%c%c%c", &a, &b, &c);
printf("%c %c %c", a, b, c);
return 0;
}
//abc
//a b c
#include<stdio.h>
int main()
{
char a, b, c;
scanf("%c %c %c", &a, &b, &c);
printf("%c %c %c", a, b, c);
return 0;
}
//a b c
//a b c
#include<stdio.h>
int main()
{
char a, b, c;
scanf("%c,%c,%c", &a, &b, &c);
printf("%c %c %c", a, b, c);
return 0;
}
//a, b, d
//a b d
#include<stdio.h>
int main()
{
char d, e, f;
scanf("d=%c,e=%c,f=%c", &d, &e, &f);
printf("%c %c %c", d, e, f);
return 0;
}
//d = p, e = p, f = l
//p p l
#include<stdio.h>
#include<math.h>
int main()
{
float a, b, c;
float s, area;
printf("输入三个边长:\n");
scanf("%f%f%f", &a, &b, &c);
s = (a + b + c) / 2;
area = sqrt(s*(s-a)*(s-b)*(s-c));//使用sqrt必须导包math.h
if (a + b > c && b + c > a && a + c > b)
{
printf("%.2f", area);
}
else
{
printf("三条边无法构成三角形");
}
return 0;
}