新手菜鸟求一道简单C语言题目解答。。 10

#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){inti,j,M,N,a[100][100... #include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int i,j,M,N,a[100][100];
scanf("%d %d",&N,&M);
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
scanf("%d",&a[i)[j];
for(i=1;i<=M;i++)
{
for(j=1;j<=M;j++)
printf("%d",a[i][j]);
printf("\n");
}
sytem("PAUSE");
return 0;

}
这道题目,我看步太懂,不过心理面有点模糊的概念,可能不是正确的,我想说出来,请大家纠正一下,看看我理解的是否正确,在这里万分感谢大家了。
首先第二行的头文件stdlib.h这个是什么的头文件我不懂。
第三行的是不是属于全局定义?但是括号里面的我不懂,求解释。
然后是int i,j,M,N,a[100][100];这一行,这里面的a[100][100]我不懂是什么含义,网上也搜索不到。求解释
在下面是第一个for循环,for(i=1;i<=N;i++),我理解的意思是不是先让i的值等于1,然后再用i和N对比,如果i小于或者等于N就执行下面的那个for?如果大于N就直接跳过吗?跳到那里呢?
后面就不说了,关于上面的理解我只能大概这个程度了,求前辈们解答?最好能吧整个题目的都说请一下,通俗易懂点,谢谢了,这里献上一点分,微薄之力请笑纳。
展开
 我来答
cdyzxy
2013-07-17 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3673万
展开全部
【stdlib.h】这个头文件为你下边调用某些C语言提供的函数,比如system提供了调用规则描述。如果你不写这句,在程序编译时就会报错,比如system没有定义之类。那么如果你的程序在编译时报这样的错,你就需要查一下你调用的函数是在哪个头文件定义的(方法是在百度百科中查找该函数说明),把它“包含”进来即可解决。
【argc和argv】是主函数的调用参数,你如果编译程序生成的是windows控制台程序的话,比如生成a.exe在命令行模式下可以这样调用:a.exe 100 100,a.exe后面的两个参数100 和100就是调用时的参数,将会通过这两个变量传送给main函数,你在main中可以使用它们,具体请在百度百科中查argc argv。
【int a[100][100]】开设双下标数值,其中每个数组元素都是int型的,要找到最开始的元素可以写
a[0][0],这相当于告诉系统,我要找的是第0行和第0列的数组元素,最后一个数组元素是a[99][99]。那么你就会发现,后面的程序的循环变量从1开始循环而没有从0开始的话,a数组中所有第0行和第0列的数据都没有得到访问。
【for语句】一个for语句就是一个循环语句,它有条件地执行循环体内的语句,举例来说:
for ( i=1;i<=N;i++ ) { 语句a; 语句b; }这个循环语句相当于下面语句的简写:
i=1;
LOOP:
if ( i<=N )
{ 语句a;
语句b;
i++;
goto LOOP;
}
所以这条语句的意思就是,先让i的值等于1,然后i和N进行对比,如果i小于或等于N则执行循环体语句(只有一个for语句,这时简写了循环体的大括号)for语句,否则循环结束,跳过循环体执行后面的语句for(i=1;i<=M;i++)
【程序的意图】先定义了一个100行100列的数组a;然后输入M和N代表要使用a数组中第1行到第N行、第1列到第M列的数据(M和N要在0~99间取值,否则会运行时出错);接着分别让i控制行号,j控制列号实现将要用到的数据逐行键盘输入;接下来用printf语句显示这些数据("%d"应写成"%d ",省得数据连在一起无法区分),每行换行;最后让操作系统等待用户按任意键后结束程序。
戚文柏Ro
2013-07-17 · TA获得超过336个赞
知道小有建树答主
回答量:400
采纳率:100%
帮助的人:400万
展开全部
#include <stdio.h> //标准输入输出函数,如后面的printf scanf等
#include <stdlib.h> //这个头文件包括一些产生随机数等函数,后面的system函数是这里面的
int main(int argc,char *argv[])
{
int i,j,M,N,a[100][100]; //a[100][100]是二维数组,横向和竖向
scanf("%d %d",&N,&M); //输入M、N的值,这里应该作语句判断<=99,不然后面操作时会提示数组越界
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
scanf("%d",&a[i)[j]; //逐个给二维数组赋值,这里还打错了,应该为:scanf("%d",&a[i][j]);
for(i=1;i<=M;i++)
{
for(j=1;j<=M;j++)
printf("%d",a[i][j]); //第一维代表行,即i,第二维代表列,即j,先固定i,输出所有j,那么就是输出一行
printf("\n"); 输出完一行后换行
}
sytem("PAUSE");//暂停,用以查看结果.
return 0;

}

另,解说下for循环
for(i=1;i<=100;i++)
等同于
i = 1;
while(i<=100)
{
执行语句;
i++;
}

解释:到i=1,判断是否<=100,OK就执行大括号内语句,i自增,继续判断i,直到i>100时跳出循环;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linhs_lhs
2013-07-17 · TA获得超过189个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:150万
展开全部
stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
stdlib 头文件里包含了C、C++语言的最常用的系统函数,你用到了sytem("PAUSE");
所以要包含它。
int main(int argc,char *argv[])是C的入口函数,只要是c程序,必须包含这个。其中argc是命令行总的参数个数,argv[]是argc个参数,这两个可以不管它。你也可以用int main()。
后面的内容都是main函数的内容
int i,j,M,N,a[100][100];是对变量进行定义,int a[100][100];表示一个整型二维数组,一个100行100列的数组。
scanf("%d %d",&N,&M);是让你输入N和M的值

for(i=1;i<=N;i++)你理解得没错,大于N直接跳过下面那个for循环,执行 for(i=1;i<=M;i++),这句也写错了,应该是for(i=1;i<=N;i++)
scanf("%d",&a[i)[j];这句写错了,应该是scanf("%d",&a[i][j]);让你输入二维数组的值
printf("%d",a[i][j]);输出二维数组的值

printf("\n");换行




sytem("PAUSE");表示暂停

return 0;返回0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WM_THU
2013-07-17 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3901万
展开全部
所有的for循环都有错。C中的数组是从0开始索引的,比如一个100长度的数组,其有效索引是0~99。尽管也许MN小的时候语法上没错,但是从1开始的习惯证明你对C的这个语法不了解。本来MN取100是可以的,但你这里最大只能到99.好好的一个100×100的数组就被用成了99×99.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
41码_路那么宽
2013-07-17
知道答主
回答量:60
采纳率:0%
帮助的人:24.1万
展开全部
其实函数功能就是:输入一个小于100*100的二维数组,然后原样输出;stdio.h和stdlib.h均为系统头文件,stdio.h为标准输入输出头文件,stdlib 头文件里包含了C、C++语言的最常用的系统函数。第三行是vc++6.0 IDE里默认的,你也可以该位int main(void)无返回值,不过最后的return 0应该同时删去;a[100][100]是一个二维数组,大小为100*100,这里用来限定范围,是因为数组变量初始化时必须要有一个初始值系统才能分配空间;第一个for循环是输出N行数据,即你刚刚输入的N行数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式