c语言二维数组输入用下面的程序,但是第一次循环结束不是返回for (i…),那不是只能输?

c语言二维数组输入用下面的程序,但是第一次循环结束不是返回for (i…),那不是只能输?,第1张

首先说明一点,这样的语句并不能输入任何一个元素,它只能输出元素。你得把printf改成scanf,才能输入。
其次程序虽然只有短短的三句,但它包含一个嵌套循环:
外循环的循环变量是i,第二句和第三句是它的循环体(可称"外循环体");
内循环的循环变量是j,第三句是它的循环体(可称"内循环体")。
写成能够一目了然的方式,是这样的:
①for(i=0;i<2;i++)
{
②for(j=0;j<2;j++)
{
③scanf("%d",a[i][j]);
}
}
可以看到,它的运行过程是(为了叙述方便,我写上了行号):
1、第一次执行①,i赋值0,比较i=0<2成立,符合循环条件,进入外循环体;
2、第一次进入内循环体,执行②,j赋值0,比较j=0<2成立,进入内循环体;
3、执行③,输入a[i][j]的值,这时,因为i=0,j=0,输入的是a[0][0]的值————这一点你分析的对;
4、完成内循环体的执行后,返回②,而不是①。因为,内循环还没有执行完!这是你分析错误的地方。返回②后,先执行j++,j成为1,而且j=1<2成立,再执行③;
5、再执行③,因为这时候i=0,j=1,所以,输入a[0][1]的值;
6、程序再返回②,j++成为2,比较j=2<2不成立,跳出内循环,回到外循环①;
7、执行①,i自增为1,i=1<2成立,再进入外循环体;
8、执行②,再进入内循环,像第一次一样,j先赋值0,比较j=0<1成立,执行③,输入a[1][0]的值,
后面就不要写了吧。
有什么问题请留言。

int a[][]=new int[5][6];
for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
a[i][j]=1;
Systemoutprintln(a[i][j]);
}
}
如果你想要给每一个元素赋值不同,那你必须要有一个已知的足够大的数组或者列表

用while循环,建一个移位寄存器,初始值为空的二维数值,在循环里面将新产生的回1维数组插入到移位寄存器输答出的数组里面(使用插入到数值函数),然后输入到移位寄存器的输入端,时间到了,或条件满足时停止循环,生成的就是你想要的数据,里面的1维数值可由一个for循环生成。

是指上这个问题可以用一个while循环完成,这个在游戏编程渲染顶点时也经常使用。方法如下:
define M 10;
define N 2;
int i = 0;
int a[M][N];
while(i < MN)
{
a[i/N][i%N] = 0;
}
希望能帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13333411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-16
下一篇 2023-07-16

发表评论

登录后才能评论

评论列表(0条)

保存