声明:由于作者水平有限,本文难免有错误和不准确之处,本人也很想知道这些错误,恳望读者批评指正。
【联系方式】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
查看评论