小言_互联网的博客

【C语言学习笔记——2】

260人阅读  评论(0)

声明:由于作者水平有限,本文难免有错误和不准确之处,本人也很想知道这些错误,恳望读者批评指正。

【联系方式】1583598623@qq.com
【更新记录】2021年4月10日(第一次更新 )
【勘误记录】暂无




1.局部变量优先

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int a = 100;
int main()
{
   
	int a = 10;
	printf("a=%d\n", a);
	return 0;	
}



2.数组结束标志是"\n",如下程序没有给出具体\n位置,所以输出是随机值。

strlen是用来获取字符串的有效长度的,结尾标记’\0’不包含在内。strlen获取的规则非常简单:从前往后一次检测,直到遇到’\0’是就终止检测。而arr是一个字符数组,不是一个有效的字符串,因为后面没有放置’\0’,因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到’\0’是才终止。

int main()
{
   
char arr[] = {
    'b','i','t' };
printf("%d\n", strlen(arr));
return 0;
}



3.一般写代码不建议把函数的名字全大写,最多首字母

int Max(int x, int y)//一般写代码不建议把函数的名字全大写
{
   
	if (x > y)
		return x;
	else
		return y;
}
int main()
{
   

	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int m=Max(a, b);
	printf("%d\n", m);
	return 0;


4.c语言中由";"隔开的就是一条语句。



5.switch语句当中,switch里边可以接常变量,case不能接

int main()
{
   
	int n =  1;
	int m =  2;
	switch (n)//没问题
	{
   
	case 1:m++;
	}
	printf("m=%d\n", m);
	return 0;
}

int main()
{
   
	int n =  1;
	int m =  2;
	switch (1)
	{
   
	case n:m++;//编译器报错
	}
	printf("m=%d\n", m);
	return 0;
}



6.没有break的switch语句

int func(int a)
{
   
    int b;
    switch (a)
    {
   
        case 1: b = 30;
        case 2: b = 20;
        case 3: b = 16;
        default: b = 0;
    }
    return b;
}

switch的每个case之后如果没有加break语句,当前case执行结束后,会继续执行紧跟case中的语句。 func(1)可知,在调用func时形参a的值为1,switch(a)<==>switch(1),case 1被命中,因为该switch语句中所有分支下都没有增加break语句,因此会从上往下顺序执行,最后执行default中语句返回。



7.输入三个数,从大到小输出(真的自己动手写下,想着很简单,有时候自己敲下发现各种错误)


void Max(int *x, int *y)
	{
   
		int a = 0;
		
		a = *x;
		*x = *y;
	    *y = a;
		 
		
	}
	int main()
	{
   
		int x = 0;
		int y=  0;
		int z = 0;
		scanf("%d%d%d", &x,& y,& z);
		if (x < y)
			Max(&x,&y);
		if (x < z)
			Max(&x, &z);
		if (y < z)
			Max(&y, &z);
		printf("%d %d %d", x, y, z);
		return 0;

	}


8.写代码将三个整数数按从大到小输出。

例如:

输入:2 3 1

输出:3 2 1

void Max(int *x, int *y)
	{
   
		int a = 0;
		
	      a = *x;
		 *x = *y;
	     *y = a;
		 
		
	}
	int main()
	{
   
		int x = 0;
		int y=  0;
		int z = 0;
		scanf("%d%d%d", &x,& y,& z);
		if (x < y)
			Max(&x,&y);
		if (x < z)
			Max(&x, &z);
		if (y < z)
			Max(&y, &z);
		printf("%d %d %d", x, y, z);
		return 0;

	}


9.写一个代码打印1-100之间所有3的倍数的数字

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
   
	int x = 0;
	
	for (x = 0; x <= 100; x++)
	{
   
		if (x % 3 == 0)


		  printf("%d\n", x);
	}
	return 0;
}


10.给定两个数,求这两个数的最大公约数

例如:

输入:20 40

输出:20

int Gys(int a, int b)
{
   
	int i = a;
	for (i = a; i > 0; i--)
		if (a % i == 0 && b % i == 0)
			return i;


}
int main()
{
   
	int a, b, ret;
	printf("请输入俩个数");
	scanf("%d%d", &a, &b);
	if (a > b)
	{
   
		int ret=Gys(b, a);
		printf("最大公约数是%d\n", ret);
	}
	if (a < b)
	{
   


		int ret=Gys(a, b);
		printf("最大公约数是%d\n", ret);
	}
	return 0;
}


11.打印1000年到2000年之间的闰年

int main()
{
   
	int a = 1000;
	for (a = 1000; a <= 2000; a++)
	{
   
		if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0);
		printf("1000至2000之间的闰年有%d年\n", a);
	}
	return 0;
}

转载:https://blog.csdn.net/weixin_48953972/article/details/115582272
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场