在学习C语言二维数组中的if语句的例子,不理解,请求分析

来源:百度知道 编辑:UC知道 时间:2024/06/24 08:08:29
下图的if语句只能二选一.
#include<stdio.h>
main()
{
int a[3][3],i,j;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf("%d",&a[i][j]);假设输数为1 2 3 4 5 6 7 8 9
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
if((i+j)%2)如果选择这一条我的理解是(i+j)%2有余数,也就是说非0时为真输出,那么输出的奇数吧,可是输出的是偶数,所以不明白哪儿理解错了.
if((i+j)%2==0)如果选择这一条我的理解是(i+j)%2余0时,才符合这个表达式吧,那么输出的偶数吧,可是输出的是奇数,所以不明白哪儿理解错了.
printf("%5d",a[i][j]);
printf("\n");
}
}

请大家告诉我,我哪儿理解错了??????

你那两句的意思是下标之和为奇数或者偶数,不是该数为奇数或者偶数。。

应该改成if(a[i][j]这里面看你自己怎么判断)

按照你的输入
如果是
if((i+j)%2)//i+j为奇数时候输出
则输出2,4,6,8
if((i+j)%2==0)//i+j为偶数或0时候输出
则输出1,3,5,7,9
很简单

if((i+j)%2) 这个仅仅代表 i+j是奇数 不代表a[i][j])就是奇数 懂了吧

你那个程序没有问题,下标和为奇数恰好对应的值为偶数,下标为偶数时,对应的值为奇数,所以 if((i+j)%2)时输出偶数,
if((i+j)%2==0)时输出奇数,你可以试试:比如,i=0,j=0时,i+j=0,但是a[0][0]对应的是1,为奇数啊,孩子!!!