题目
按以下输出格式打印杨辉三角的前 10 行
字符数组
1、 不使用 strlen 函数,实现字符串的求长度,复制,比较,连接。
2、 输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一
样的。如“abcba”和”123321”都是回文。
3、 一篇文章,有三行文字,每行有 80 个字符。
要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
(二维数组)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
什么是杨辉三角
直接用逻辑描述就是,第一列和行列相同时的数为1,其余数为上一行同列数与前一位数之和。很显然这是一个二维数组的典型应用
代码
#include <stdio.h>
int main ()
{
int arr[100][100]={0};
int i=0,j=0,n=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)//列小于等于行
{
if(j==0||j==i)
{
arr[i][j]=1;//置1
// printf("%d\t",arr[i][j]);
}
else
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
// printf("%d\t",arr[i][j]);
}
printf("%d\t",arr[i][j]);
}
printf("\n");//一行结束后要换行
}
return 0;
}
分块介绍
int arr[100][100]={0};
int i=0,j=0,n=0;
scanf("%d",&n);
创建一个足够用的二维数组,大小自定,本代码在Linux上实现,若用vs操作时,使用scanf函数会报错
如:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
需要在代码开始加一个宏,方可编译通过
#define _CRT_SECURE_NO_WARNINGS
对于二维数组的双循环操作
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)//列小于等于行
{
第一个for循环是行循环,第二个for是列循环,要注意此时是循环到行等于列时结束。
if(j==0||j==i)
{
arr[i][j]=1;//置1
//printf("%d\t",arr[i][j]);
}
else
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
// printf("%d\t",arr[i][j]);
}
本判断语句为,当处于第一列或者行列相等位置时,数组置为1;
其余情况是该数为上一行同列数与前一数之和。可以在分支打印,也可在最后打印。
printf("%d\t",arr[i][j]);
这里在最后打印,可以使用\t水平置表符,可以自动补全8位,排版整齐。
printf("\n");//一行结束后要换行
}
最后的换行语句,每一行循环结束后需要进行换行,这样才是三角形。