以下c语言程序题是怎么做的啊?
1#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
简述程序的过程!
2. #include<stdio.h>
void main()
{
int i=0,a=0;
while(i<20)
{
for(;;)/*是什么意思?*/
{
if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printf("%d\n",a);
}
该程序是怎样的?
#include<stdio.h>
void main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)
p[i]=i;
for(i=0;i<3;i++)
printf("%d ",a[1][i]);
}
完全不懂,帮忙解释哈!告诉其过程!
第一题 主要考的是 各种运算符之间的优先级别 优先级顺序!>&&>||
#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
//这段程序相当于
#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
d=(!a)&&(!b)||(!c);
printf("%d\n",d);
}
//也可以理解为
1#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d,e;
d=!a; // d=!a=0
e=!b; // e=!b=0;
d=d&&e; //d=d &&e = 0;
e=!c; // e=!c=1;
d=d||e;//d =d || e = 1;
printf("%d\n",d);
}
第二题 主要考的是 循环语句 while for 以及中断语句break的用法。
#include<stdio.h>
void main()
{
int i=0,a=0;
while(i<20)
{
for(;;)/*相当于while(1);死循环)*/
{
if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printf("%d\n",a);
}
/*
这个程序的执行步骤如下
(1)当i=0时 a=0 ;
while(i<20) //i<20 进入 while循环
{
for(;;) //此处为死循环 必训进入for循环
{
if((i%10)==0) //由于 i%10=0,( 0除以10 的余数为0) 所以执行 break语句;
跳出for循环
break;
else i--; //不执行此条语句,已经跳出for循环
}
i+=11; //i= i+11 = 0+11 = 11;
a+=i; //a=a+i =0+11=11;
}
(陆歼2)此时i=11 a = 11 ;
while(i<20) //i=11<20 进入 while循环
{
for(;;) //此处为死循环 必训进入for循环
{
if((i%10)==0) //由于 i%10=1,( 1除以10 的余数为0)
所以不执行 break语句执行else语句
break;
else i--; //执行此条语句i=i-1=10;
}
i+=11;
a+=i;
}
(3)此时i=10,a=11 由于在for语句中没有执行break语句,所谓不能跳出for循环,所以此时继续执行for循环;
while(i<20) //不执行此条语句
{
for(;;) //此处为死循环 必训进入for循环
{
if((i%10)==0) //由于 i%10=0,(早郑冲 10除以10 的余数为0)
所以执行 break语句;跳出for循环
break;
else i--; //不执行此条语句,已经跳出for循环;
}
i+=11; //i= i+11 = 10+11 = 21;
a+=i; //a=a+i =21+11=32;
}
(4)此时i=21,a=32 由于在for语句中没有执行break语句,所谓不能跳出for循环,所以此时继续执行for循环;
while(i<20) //i=21>20了 不满足 while (i<20)的 条件
所以不 进入 while循环 直接执行 printf("%d\n",a); //输出语句
{
。。。。。。。。
。。。。。。。。。
。。。。。。。。
}
printf("%d\n",a); //输出丛仿语句 程序结束
*/
第三题
#include<stdio.h>
void main()
{
int a[3][3],*p,i; //定义了一个二维数组 一个指针 和一个整数变量 ;
好比是有 某男 a , 某女 p。 并且某男a 有自己的大房子,
房子有三层,每层都有三个房间
p=&a[0][0];// 将数组的首地址赋予指针,好比是 某男a 娶了某女P ,
某女p也住进了某男a的大房子了;
for(i=0;i<9;i++) //for循环为为指针赋值,因为指针与数组的地址相同,
其实也是给数组赋值。
好比是 某女a住进了大房子之后要布置房间
(因为某男和某女住在同一个楼里,所以也就是在某男的房间),
向9个房间了放不同的东西,一层(a【0】【】)的三个房间放0、1、2;
二层(a【1】【】)的三个房间放3、4、5;
三层(a【2】【】)的三个房间放6、7、8;
p[i]=i;
for(i=0;i<3;i++) //for循环 输出 数组的内容
好比是看看 第二层楼的三个房间里都放了些什么?是 3、4、5
printf("%d ",a[1][i]);//
}
/*这道题主要考的是数组和指针的关系,楼主可以在网上搜一下相关的资料,有很多的。
*/
include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n"孝春,d);
}
//这段宴慎芦程序晌带相当于
#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
d=(!a)&&(!b)||(!c);
printf("%d\n",d);
}
题一为锋高逻辑运算逗神,非0为真,0为假山基亏。!a=0,!b=0,!c=1,0并0或1=1,即d=1
题二为循环条件,for(;;)省略了执行条件,即为无条件执行,直到跳出。初始i=0,执行if后break,i+=11,得i=11,a+=i,得a=11。i=11,执行if下i--,i=10,再i+=11,得i=21,a+=i,得a=11+21=32,输出
题三是循环输出数组a的所有值,嵌套两个for,即(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)
int a=4,b=5,c=0,d;
d=!a&&!b||!c;
优先级顺序!>&&>李槐||
因为!a为0,!c为1所以结果为1
for(;;)死循环使用break结哪宏友束 if((i%10)==0) break当i为10的倍数时退出循环
p指向绝老a
题三桥悔:p[i]就罩粗是*(a[0][0]+i),对数组a赋值;
for(i=0;i<3;i++) 打印第2行的数据敏闷正: 3,4,5