c语言问题(定义二维数组类)
题目是:输入一个正整数n(0<n<=10),输出九九乘法表的前n*n项。示例:Inputn:3*123112243369我的程序:#include<stdio.h>int...
题目是:输入一个正整数n(0<n<=10),输出九九乘法表的前n*n项。
示例:
Input n:3
* 1 2 3
1 1
2 2 4
3 3 6 9
我的程序:
#include<stdio.h>
int main(void)
{
int n,i,j,d;
d=0;
static int a[10][10];
printf("Input n:");
scanf("%d",&n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
printf("* ");
else if(i==0||j==0)
a[i][j]=i+j;
else
a[i][j]=i*j;
}
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
{
d++;
continue;
}
printf("%d ",a[i][j]);
d++;
if(d%(n+1)==0)
printf("\n");
}
return 0;
}
运行结果是输入n=3时
输出是
* 1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
问怎么将那些数字去掉。 展开
示例:
Input n:3
* 1 2 3
1 1
2 2 4
3 3 6 9
我的程序:
#include<stdio.h>
int main(void)
{
int n,i,j,d;
d=0;
static int a[10][10];
printf("Input n:");
scanf("%d",&n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
printf("* ");
else if(i==0||j==0)
a[i][j]=i+j;
else
a[i][j]=i*j;
}
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
{
d++;
continue;
}
printf("%d ",a[i][j]);
d++;
if(d%(n+1)==0)
printf("\n");
}
return 0;
}
运行结果是输入n=3时
输出是
* 1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
问怎么将那些数字去掉。 展开
展开全部
楼主你好~
修改了一下代码,请结合注释来阅读代码:
#include<stdio.h>
int main(void)
{
int n,i,j,d;
d=0;
static int a[10][10];
printf("Input n:");
scanf("%d",&n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
a[i][j]=42; //这是星号*的ASCII码,也放到数组了
else if(i==0||j==0)
a[i][j]=i+j;
else
a[i][j]=i*j;
}
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i!=0&&j==i+1)//除了第一行,每行只输出i+1个元素,形成下三角
{
printf("\n");
break;
}
if(i==0&&j==0) //第一个元素时,以字符型输出星号
{
printf("%5c",a[i][j]);
}
else //其他时候照常输出元素
{
printf("%5d",a[i][j]);
}
if(j==n) //第一行与最后一行满元素后,换行。
printf("\n");
}
return 0;
}
PS:这里我还调整了一下每个数组元素输出后的间隔,因为变成双位数后,光一个空格是不够的,会引起错位,导致表格不好看。
希望楼主能看懂哈~~祝楼主学习进步~~望采纳~谢谢~~
修改了一下代码,请结合注释来阅读代码:
#include<stdio.h>
int main(void)
{
int n,i,j,d;
d=0;
static int a[10][10];
printf("Input n:");
scanf("%d",&n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0&&j==0)
a[i][j]=42; //这是星号*的ASCII码,也放到数组了
else if(i==0||j==0)
a[i][j]=i+j;
else
a[i][j]=i*j;
}
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i!=0&&j==i+1)//除了第一行,每行只输出i+1个元素,形成下三角
{
printf("\n");
break;
}
if(i==0&&j==0) //第一个元素时,以字符型输出星号
{
printf("%5c",a[i][j]);
}
else //其他时候照常输出元素
{
printf("%5d",a[i][j]);
}
if(j==n) //第一行与最后一行满元素后,换行。
printf("\n");
}
return 0;
}
PS:这里我还调整了一下每个数组元素输出后的间隔,因为变成双位数后,光一个空格是不够的,会引起错位,导致表格不好看。
希望楼主能看懂哈~~祝楼主学习进步~~望采纳~谢谢~~
展开全部
楼主,你好!
你的循环有点冗余,只需要一组循环即可,第二组循环可以和第一组合并的。
#include <stdio.h>
int main( void )
{
int n, i, j, d;
d = 0;
int a[10][10];
printf("Input n:");
scanf("%d", &n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i == 0 && j == 0) {
printf("* ");
d++;
continue;
}
else if(i==0||j==0) {
a[i][j] = i + j;
}
else {
a[i][j] = i * j;
}
printf("%d ",a[i][j]);
d++;
if(d % (n + 1)==0) {
printf("\n");
}
}
return 0;
}
你的循环有点冗余,只需要一组循环即可,第二组循环可以和第一组合并的。
#include <stdio.h>
int main( void )
{
int n, i, j, d;
d = 0;
int a[10][10];
printf("Input n:");
scanf("%d", &n);
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i == 0 && j == 0) {
printf("* ");
d++;
continue;
}
else if(i==0||j==0) {
a[i][j] = i + j;
}
else {
a[i][j] = i * j;
}
printf("%d ",a[i][j]);
d++;
if(d % (n + 1)==0) {
printf("\n");
}
}
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询