tc的程序设计问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:12:23
这么一个程序写出来,
本来想出现
1
11
121
1331
这样的
结果运行结果是noname.c
Orz...救命啊~
#include<stdio.h>
void main()
{
int n;int m;
char str[10][10];
str[0][0]=1;
for(n=0;n<10;n++)
for(m=0;m<n-1;m++)
str[n][m]=str[n-1][m]+str[n-1][m-1];
printf("%s",str[n][m]);
printf("\n");
}

老大,你数据类型都没学好,数组的概念也没搞明白
#include<stdio.h>
void main()
{
int n;int m;
char str[10][10]; //字符的运算和整型还是不同滴
str[0][0]=1; //作为迭代的初始条件,不错
for(n=0;n<10;n++) //你从str[0][0]开始循环,跟本没有初始条件了,下面的循环体还会试图引用str[-1][-1]的值。。。
for(m=0;m<n-1;m++)
str[n][m]=str[n-1][m]+str[n-1][m-1];
printf("%s",str[n][m]); //%s是打印字符串的
printf("\n");
}
修改一下:
#include<stdio.h>
void main()
{
int n;int m;
int str[10][10]={1};
printf("%3d\n",str[0][0]);
for(n=1;n<10;n++)
{str[n][0]=1;
printf("%3d",str[n][0]);
for(m=1;m<=n;m++)
{str[n][m]=str[n-1][m]+str[n-1][m-1];
printf("%3d",str[n][m]); }
printf("\n"); }
}

可以把数组的第一个元素至为0,这样可以简化操作。
你的BUG已经修正,请参考我的代码:
#include <stdio.h>

int main(void)
{
char str[10][10];
int m, n;

memset(str