c语言-选择循环+数组小结

目录

易错点:

(1)除法运算符“/”和求余运算符“%”

(2)if     else if       else

(3)中英文符号时刻需要注意

(4)if 判断的时候记得==

(5)字符串初始化必须用''单引号而不能用""双引号

小技巧:

(1)输出技巧

(2)对数据处理的题目中可能需要保存初始值最后输出

拓展点:

(1)颜色函数

(2)随机函数

易错点:

(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的整数




 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值