c语言问题(定义二维数组类)

题目是:输入一个正整数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
问怎么将那些数字去掉。

楼主你好~
修改了一下代码,请结合注释来阅读代码:
#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:这里我还调整了一下每个数组元素输出后的间隔,因为变成双位数后,光一个空格是不够的,会引起错位,导致表格不好看。

希望楼主能看懂哈~~祝楼主学习进步~~望采纳~谢谢~~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-07
楼主,你好!

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

#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;
}本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网