Day 4
学习
编译器:VS2019;
学习资料
1、B站视频(P19-P25)见链接 【求知讲堂2021C语言/C++视频99天完整版(不断更新中)学完可就业-哔哩哔哩】https://b23.tv/4DzQDY;
函数及其相关概念
函数基本知识
1、函数的返回值;
2、函数调用;
3、函数的嵌套调用;
4、标准函数库的使用。
#include<stdio.h>
void PrintStar()
{
printf("**************************\n");
}
void PrintMessage()
{
extern b;
printf("%d\n你好世界,我喜欢编程!\n",b);
}
int a = 10;//外部变量,全局变量
int b = 5;
//函数先定义再使用
int FindMax(int x,int y)//驼峰命名法、局部变量
{
/*int z;
z = x > y ? x : y;
return z;*/
int z;
return (z = x > y ? x : y);
}
char FindLetter(char c1, char c2);
double FindMin(int x, int y);
int FuncTest01(int a,int b)
{
int c;
if (a > b)
{
c = 1;
}
else if (a == b)
{
c = 0;
}
else
{
c = -1;
}
return c;
}
float FindAvarage(float array[])
{
int i;
float avary;
float sum = array[0];
for ( i = 1; i < 10; i++)
{
sum = sum + array[i];//sum+=array[i];
}
avary = sum / 10;
return avary;
}
int main(void)
{
/*PrintStar();
PrintMessage();*/
//=== 大小比较函数===============
/*int a, b, c;
scanf_s("%d%d", &a, &b);
c = FindMax(a, b);
printf("Max is %d\n", c);*/
/*int i = 1;
int p;
p = FuncTest01(i, ++i);
printf("%d\n", p);*/
//==========将数组作为参数求平均值=======================
//float score[10];
//float avary;
//printf("请输入学生成绩:\n");//95 100 85 74 65 55 74 88 94 65
//for (int i = 0; i < 10; i++)
//{
// scanf_s("%f", &score[i]);
//}
//printf("\n");
//avary = FindAvarage(score);
//printf("学生的平均分数为%5.2f\n", avary);
//==============全局变量、局部变量、内部变量===============
int a = 8;
printf("%d\n", FindMax(a, b));
PrintMessage();
return 0;
}
全局变量、局部变量
#include<stdio.h>
int a = 10;//外部变量,全局变量
int b = 5;
//函数先定义再使用
int FindMax(int x,int y)//驼峰命名法、局部变量
{
/*int z;
z = x > y ? x : y;
return z;*/
int z;
return (z = x > y ? x : y);
}
int main(void)
{
//==============全局变量、局部变量、内部变量===============
int a = 8;
printf("%d\n", FindMax(a, b));
PrintMessage();
return 0;
}
静态变量、寄存器变量
练习
#include<stdio.h>
int StaticFunction(int a)
{
int b = 0;
static int c = 3;//静态变量,保持变化后的值
b = b + 1;
c = c + 1;
return (a + b + c);
// a=2,b=1;c=4,sum=7;
//a=2,b=1,c=5,sum=8;
//a=2,b=1,c=6,sum=9
}
static int a = 1;
int Facto(int n)
{
extern a;
a = a * n;
return a;
}
int RegisterVar(int x)
{
register int j;
register int f = 1;
for ( j = 1; j <= x; j++)
{
f = f * j;
}
return f;
}
int main(void)
{
//auto a = 0;
//auto int a = 0;
//int a = 0;
//static x = 0;
//static int x = 0;
//printf("a = %d\n", a);
//printf("x = %d\n", x);
//========static==================
/*int a = 2;
int i;
for ( i = 0; i < 3; i++)
{
printf("%d ", StaticFunction(a));
}*/
//========static计算阶乘==================
/*for (int a = 10; a >0; a--)
{
Facto(a);
}
printf("a! = %d\n", a);*/
// 求x的阶乘
/*for (int i = 1; i < 5; i++)
{
printf("%d! = %d\n", i, Facto(i));
}*/
//===========寄存器变量=======================
int i;
for ( i = 1; i <= 5; i++)
{
printf("%d! = %d\n", i, RegisterVar(i));
}
return 0;
}
预处理命令
include
define
1、宏定义
2、预处理器命令
3、练习
#include<stdio.h>
#include<malloc.h>
#define MAX(a,b) (a>b)?a:b
#define NUM ok
//int main()
//{
// int x, y, max;
// printf("input two number :\n");
// scanf_s("%d%d", &x, &y);
// max = MAX(x, y);
// printf("max = %d\n", max);
//
// return 0;
//}
int main()
{
struct Student
{
int num;
char* name;
char sex;
float score;
}*ps;
ps = (struct Student*)malloc(sizeof(struct Student));//
ps->num = 100;
ps->name = "张三";
ps->sex = "male";
ps->score = 95;
#ifdef NUM
printf("Number = %d\nScore = %f\n", ps->num, ps->score);
#else
printf("Name = %s\nSex = %s\n", ps->name, ps->sex);
#endif // NUM
free(ps);
}