enum MyEnum
{
q, w
};
strlen(arr1)
/*
\0表示结束
? 在书写连续问号时,防止被解析成三字母词( ??) = ] )
\’ 用于表示字符常量’
" 用于表示字符常量"
\ 用于表示一个反斜杠
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示3个八进制数字(0~7)
\xdd dd表示2个十六进制数字
*/
#include
int main01() {
//enum MyEnum
//{
// q, w
//};
//printf("q=%d\n", w);
// strlen 计算长度
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c', '\0'};
int arr[] = {9};
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
printf("%d\n", strlen("c:code\test\32\text.c"));
printf("%s\n", arr1);
printf("%s\n", arr2);
//int age, a, b, sum;
//age = 2;
//printf("%d\n", age);
//scanf_s("%d%d", &a,&b);
//sum = a + b;
//printf("sum=%d\n", sum);
return 0;
}
/*
按位与& 对应位同为1,为1
按位或| 对应位为1,为1
按位异或^ 相同为0 不同为1
*/
#include
int main02() {
double a = 1.0;
int arr[] = { 1,2,3,4,5,6 };
printf("数组值=%d\n", arr[5]);
printf("年龄=%f\n", a);
int age = 0;
scanf_s("%d", &age);
if (age > 18)
{
printf("成年人,年龄=%d\n", age);
}
else {
printf("未成年人,年龄=%d\n", age);
}
return 0;
}
~ 按位取反
// 00000000 00000000 00000000 00000101 a=5 // 11111111 11111111 11111111 11111010 b // 11111111 11111111 11111111 11111001 反码 // 10000000 00000000 00000000 00000111 b=~a=-6
公式: -(a+1)
局部变量就是在函数内定义的变量,普通的局部变量,生存周期是随着函数的结束而结束,每次函数重新执行,局部变量都是新的值,不会保留上次的值。当用static修饰后,局部变量的生存周期就是当程序结束才会结束。再次调用函数时,用static修饰的变量会保留上一次的值。
应用:在函数内,我们想保留某些变量上一次的值,就可以用static去修饰该变量。比如:想统计该函数被执行的次数时,就可以定义被static修饰的int型变量,每执行一次该变量就++。
总结:用static修饰的局部变量,改变了生存周期,但是没有改变其作用域。改变其生存周期的原因是被static修饰的局部变量被存放在.bss段或者.data段,而普通的局部变量是存放在栈上的。
全局变量用static修饰改变了作用域,没有改变生存周期。普通的全局变量是可以被其他的.c文件引用的,一旦被static修饰,就只能被定义该全局变量的.c文件引用,使得该全局变量的作用范围减小。
作用:当一个全局变量不想被其他.c文件引用时,可以用static修饰,这样其他的文件就不能通过extern的方式去访问,这样主要是为了数据安全。
总结:改变其作用域,没有改变生存周期。
#include
int main() {
// int x = main2();
// printf("x=%d\n", x);
int i = 0;
int x = 0;
for (i = 0; i < 10; i++) {
main3(x);
}
printf("\n", i);
for (i = 0; i < 10; i++) {
main4(x);
}
printf("z%d\n", i);
return 0;
}
int main2(void)
{
int x = 3;
int a = 0;
int b = ~a;
int y = 4;
x += y;
// printf("%d\n",!a);
// printf("%d\n",!x);
// printf("%d\n", x);
if (x <= 3) {
printf("真");
}
else
{
printf("假\n");
};
printf("%d \n", b);
a == 0 ? printf("zheng%d\n", a) : printf("jia%d\n", a);
return 10;
}
int main3(x) {
int i = 0;
i++;
printf("i=%d", i);
//printf("x=%d\n", x);
return 0;
}
int main4(x) {
static i = 0;
i++;
printf("static i=%d", i);
//printf("x=%d\n", x);
return 0;
}
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
// main.c
#include
#include
int main()
{
extern xx;
extern x;
//printf("Hello world!%d\n", xx);
printf("Hello world!%d\n", x);
return 0;
}
// a.c
static int xx = 2022;
int x = 2023;
#define XY 1000
#define ADD(x,y)(x + y)
#include
#include
#define XY 1000
#define ADD(x,y)(x + y)
int main()
{
int num = ADD(1,3);
printf("xy=%d\n", XY);
printf("xy=%d\n", num);
return 0;
}
#include
int main()
{
int a = 12;
int* p = &a;
*p = 15;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
int x = 12;
int* p = &x;
int* c;
int d = 0;
c = p;
printf("%p\n", p);
printf("%d\n", *p);
printf("%p\n", &x);
printf("%p\n", c);
return 0;
}
int main09() {
adda(10, 23, &d);
printf("%d\n", d);
return 0;
}
int adda(int x, int y, int* c) {
(*c) = x + y;
}
#include
#include
struct stad {
char name[20];
int age;
double gongz;
};
int main()
{
struct stad b = { "嘻嘻嘻", 12, 13.003 };
// 修改结构体变量
b.age = 12;
strcpy(b.name, "小明");
struct stad* p = &b;
printf("%s\n", p->name);
printf("p=%d\n", p->age);
printf("p=%f\n", (*p).gongz);
printf("%d\n", b.age);
printf("%s\n", b.name);
return 0;
}
#include
int main()
{
int i;
int age;
for (i = 1; i <= 100; i++) {
int s = jisu(i);
if(s !=0 )
printf("%d\n", s);
};
scanf_s("%d", &age);
if (age >= 80) {
printf("老年");
}
else if (age >= 18 && age < 80) {
printf("青年");
}
else {
printf("未成年");
};
return 0;
}
int jisu(i)
{
if (i % 2 != 0)
//printf("%d\n",i);
return i;
else
return 0;
}
#include
int main()
{
int day;
scanf("%d",&day);
switch(day){
case 1:
printf("星期一\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
default:
printf("星期日\n");
}
/*
while(day<10){
printf("while%d\n",day);
day++;
};
*/
do{
printf("do%d\n",day);
day++;
} while(day<10);
return 0;
}
break终止循环,continue退出本次循环
#include
#include
#include
int main07() {
sxh();
pinfang();
cj();
daox();
nianyuer();
return 0;
};
//水仙花
int sxh() {
int a, b, c;
for (int i = 100; i < 1000; i++) {
int a = i % 10;
int b = (i / 10) % 10;
int c = i / 100;
if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) {
printf("%d\n", i);
};
};
}
// 完全平方
int pinfang() {
for (int i = 10; i <= 200; i++)
{
if (i * i > 200)
{
break;
};
printf("%d\n", i * i);
}
return 0;
}
//判断成绩
int cj() {
int x = 0;
scanf_s("%d", &x);
if (x >= 90 && x <= 100)
{
printf("优秀");
}
else if (x>=85 && x < 90) {
printf("良好");
}
else if(x >= 60 && x < 85)
{
printf("及格");
}
else if (x >= 0 && x < 60)
{
printf("不及格");
}
else
{
printf("请输入正确成绩");
}
return 0;
}
//五位数倒序
int daox () {
int x,a,b,c,d,e;
scanf_s("%d", &x);
if (x >= 10000 || x<=99999)
{
printf("请输入正确五位数!");
return 0;
}
a = x % 10;
b = (x / 10) % 10;
c = (x / 100) % 10;
d = (x / 1000) % 10;
e = (x / 10000);
printf("%d\n",a* 10000 + b*1000 + c*100 + d*10 + e);
return 0;
}
// 判断天数
int nianyuer() {
int x = 0;
int y = 0;
int z = 0;
int t = 0;
scanf_s("%d%d%d", &x,&y,&z);
if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0)
{
for (int i = 1; i <= y; i++)
{
t = t + month(i, 0);
}
printf("润年%d天", t + z);
}
else
{
for (int i = 1; i <= y; i++)
{
t = t + month(i, 1);
}
printf("no润年%d天", t + z);
}
return 0;
}
int month(int y, int types) {
int t;
if (y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12)
{
t = 31;
}
else if (y == 4 || y == 6 || y == 9 || y == 11)
{
t = 30;
}
else
{
t = types == 0 ? 29 : 28;
}
return t;
}
// 加减乘除计算器
#include
float add(float a, float b) {
float sum = 0;
sum = a + b;
return sum;
}
float jian(float a, float b) {
float sum = 0;
sum = a - b;
return sum;
}
float chen(float a, float b) {
float sum = 0;
sum = a * b;
return sum;
}
int chu(int a, int b) {
int sum = 0;
sum = a / b;
return sum;
}
int main08() {
float a = 0;
float b = 0;
float jg = 0;
char s[10];
printf("a\n");
scanf_s("%f", &a);
printf("符号\n");
scanf_s("%s", s, 10);
printf("b\n");
scanf_s("%f", &b);
if ((*s) == (*"+"))
{
jg = add(a, b);
}
else if ((*s) == (*"-")) {
jg = jian(a, b);
}
else if ((*s) == (*"*")) {
jg = chen(a, b);
}
else if ((*s) == (*"/")) {
jg = chu(a, b);
}
printf("%f", jg);
return 0;
}