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
问怎么将那些数字去掉。
展开
 我来答
我是比丘猴
2012-11-06 · TA获得超过671个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:175万
展开全部
楼主你好~
修改了一下代码,请结合注释来阅读代码:
#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:这里我还调整了一下每个数组元素输出后的间隔,因为变成双位数后,光一个空格是不够的,会引起错位,导致表格不好看。

希望楼主能看懂哈~~祝楼主学习进步~~望采纳~谢谢~~
icecoobe
2012-11-07 · TA获得超过1989个赞
知道小有建树答主
回答量:1058
采纳率:100%
帮助的人:1099万
展开全部
楼主,你好!

你的循环有点冗余,只需要一组循环即可,第二组循环可以和第一组合并的。

#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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式