目录
易错点:
(1)除法运算符“/”和求余运算符“%”
除法运算符“/”。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。
例如:
5/2=2,1/2=0
5/2.0=2.5
求余运算符“%”。参与运算的量均为整形。求余运算的结果等于两个数相除后的余数。运算量中不能包含非整形。所以我们可以用int()进行强制转换。
例如:
5%2=1,1%2=1
5%2.0和5.0%2的结果是语法错误
(2)if else if else
(3)中英文符号时刻需要注意
(4)if 判断的时候记得==
(5)字符串初始化必须用''单引号而不能用""双引号
小技巧:
(1)输出技巧
思路:设置一个统计次数的变量随循环轮数的增加而增加,然后if判断两种不同输出
例题:输出1000内完数。
一个数如果等于其因子之和,则称为“完数”。例如,6的因子是1,2,3,而6=1+2+3,则6是完数。编程输出1000以内的所有完数,数字在一行输出,数字之间用,分隔(英文标点)。
代码如下:
#include <stdio.h>
#pragma warning(disable:4996)
int X(int y);
int main()
{
int i = 1;
int a = 0;
int k = 0;
for (; i <1000; i++)
{
if (X(i) != 0)
{
k += 1; //怎么输出,焯,就这么简单
if(k==1)
printf("%d", i);
else
printf(",%d", i);
}
}
return 0;
}
int X(int y)
{
int q = 0;
int w = 0;
int e = 0;
for (q = y - 1; q > 0; q--)
{
if (y % q == 0)
w += q;
}
if (w == y) //如果因数之和等于原数则原数为完数返回其原数
return y; //如果因数之和不等于原数则原数不是完数返回值为0
else return 0;
}
例题:杨辉三角形
打印出以下的杨辉三角形 ,要求用户输入行数。最大为20行
程序运行结果如下:
6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
(注:输出数据之间用一个空格分隔,每行最后没有空格,行之间不插入空行)
代码如下:
#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
int n, z = 0, i, j;
int a[20][20] = {};
scanf("%d", &n);
for (i = 0; i < n; i++)
{
a[i][0] = 1;
a[i][i] = 1;
}
for (i = 2; i < n; i++)
{
for (j = 1; j < i; j++)
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
for (i = 0; i < n; i++)
{
z += 1; //这个要多加理解
for (j = 0; j < i+1; j++)
{
if(z!=i)
printf("%d ", a[i][j]);
else
printf("%d", a[i][j]);
}
printf("\n");
}
return 0;
}
(2)对数据处理的题目中可能需要保存初始值最后输出
拓展点:
(1)颜色函数
#pragma warning(disable:4996)
#include<Windows.h>
#include<stdio.h>
void color(short x)
{
if (x >= 0 && x <= 15)//参数在0-15的范围颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一个参数,改变字体颜色
else//默认的颜色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int main()
{
color(3);
printf("屶泷");
return 0;
}
记得引入头文件 W要大写
#<Windows,h>
(2)随机函数
这是我自定义的一个函数:
void computerstep(char board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
srand(unsigned int(time(0)));
x = rand() % row;
y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = '#';
break;
}
}
}
#include<stdlib.h> 这是rand 和srand 的头文件
#include<time.h> 这是time的头文件
srand是生成随机种子,要不然每次的rand数值都一致
rand是生成0-32767的随机数,太离谱,所以得
rand()%3 表示生成0-2的整数