【急】一个关于C语言的问题

main()
{ int i,s=1;
for(i=1;i<50;i++)
if(!(i%5)&&!(i%3)) s+=i;
printf("%d\n",s);
}
改程序的输出结果是什么?这里的!(i%5)表示什么意思?

这个符号%是求余的意思,i%5就是i除以5后的余数。如果i是5的倍数,则i除以5余数是0(小学知识),即(i%5)的值是0。而这个感叹号!是取反,加在(i%5)前面组成!(i%5),那么括号内的值就取反了,也就是说当i除以5余数是0时,!(i%5)==1。那么同理i除以3余数是0时可以得到!(i%3)==1。&&这个符号是逻辑连接符,表示逻辑与,当此符号两边都是ture时!(i%5)&&!(i%3)才ture ,if的条件也就成立,则语句if(!(i%5)&&!(i%3)) s+=i;表示当i能同时被5和3整除时就将i的值加到s中。所以,这个程序的意思就是将1到49间的整数中能同时被3和5整除的数的和输出。

结果是什么自己看答案吧哈哈!
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-27
假设i=10,i%5=0,在!运算就是1
再假设i=12,i%5=2,在!运算就是0
这里的!运算就是把0变为1,把不是0的变为0
%运算是求余数
第2个回答  2009-03-27
改程序是求50以内既不能被5整除又不能被3整除的所有数的和,结果是91 。!表示非运算,i%5是对i求余运算,!(i%5)结合表示i不能被5整除。
第3个回答  2009-03-27
就是除了3和5 的倍数的值的和.if里的语句意思是非5的倍数和非3的倍数就执行下面的语句.
第4个回答  2009-03-27
“%”是求余运算,结果是余数,比如,5%3=2。10%5=0。如果分子比分母小,那得到的值一定为0。比如,3%5=0,5%10=0。
“!”,读做“非”,一个逻辑运算。“真”的值加了“!”,就变“假”,“假”的值加了“!”,值就成“真”。运算法则类似“负号-”。

C语言结构体与链表问题【急】【急】【急】【急】【急】【急】【急...
首先回答第一个问题,程序当中存在以下这几个问题:(1) char name[ ]中的数组name没有指定大小,此处可以定义为name[20](2) p = stu也有错误,应该将结构体的首地址赋给指针p,从而使p指向该结构体。正确的写法是:p = &stu;(3) (*p).name = "Mary"也有错误,此处不能这么赋值。正确的...

关于C语言的一个问题
第一题中的C的意思是,如果一门编程语言要成为结构化程序,必须要具备顺序、分支、循环这三种基本结构。比如:一个人要是人,就必须是人生出来的,而不是狗或者猪生出来的,因为基因不一样。这里的顺序、分支、循环结构就相当于基因。第二题中的C的意思是,如果一个程序是由结构化编程语言写的,那么...

一道C语言题目,看图~大神帮忙解答下吧!急急急急急!!在线等
答案是D 在C语言中数组赋值可以如A,那样,【】里面定义了长度5{}中有最大不超过5个值,则赋值成功 B在5个数值之内所以也是正确的 答案C,就是另外中赋值方法,在【】中不定义长度,因此数组a[]的实际长度取决于{}中的值的数量,也就是说在C答案中有5个0作为数值,因此C答案中的a[]的实际...

C语言问题求解,在线等,急!!!
1、根据题意每天从区间1~N中,依次深度-1,遇到某个深度0时停止作业,所修改的区间就是当日作业区间。2、独立函数实现一天作业(workForDay)。参数flag为1显示作业过程,如不需要传0。3、init函数为输入并返回动态数组。include <stdio.h> include <malloc.h> int len=0;\/\/路面长度 int *init(...

【急】c语言编程题目:输入n个整数,求这n个整数中的最大数,最小数和偶 ...
define N 100 void main(){ void MAX(int *a,int);\/\/求最大数 void MIN(int *a,int);\/\/求最小数 void Ping_Jun_Shu(int *a,int);\/\/求输入n个数中的偶数平均数和 int n,int a[N];\/\/存放输入的n个数 printf("请输入要输入的正数个数n=");scanf("%d",n);for(int i=0;i...

【C语言】一个比较基础的问题啦 要求输入一串字符,只能是数字或字母或...
单纯判断字母还是数字,C语言有内部函数可以直接用,比如头文件ctype.h下的函数。但你既然是基础问题,就自己写函数实现判断,对应字符ascii码判断。include<stdio.h> int main(){ int regcmp(char *str);char str[100];while(1){ scanf("%s",str);regcmp(str);} return 0;} int regcmp(...

c语言的问题!!急!!
c语言的问题!!急!! 先对包含了若干元素(元素值由键盘输入)的a,b两个一维数组,分别进行升序排序,再将它们合并成数组C中,要求合并后的元素仍升序排列且无重复值。至少两种方法解决。... 先对包含了若干元素(元素值由键盘输入)的a,b两个一维数组,分别进行升序排序,再将它们合并成数组C中,要求合并后的元素仍...

C语言问题 【函数与过程】回文素数
首先,你输入的是整数(x),计算机不能像人脑一样直接得到每个数位(数组a[10])。所以,要先判断数位(n),然后只要数位数组中a[i]=a[n-i]即可。关于素数,设置一个for循环,只要从1到x都不存在能整除x的数,就是素数了。【代码如下】:include <stdio.h> include<windows.h> int main(){ i...

c语言问题
1.char *p="%d,a=%d,b=%d\\n";也就是说p指针指向这堆字符的第一个字符 int a=11,b=10,c;c=a%b \/\/那么c的值是1 \/\/下面是p指针的初始状态 ↓ d,a=%d,b=%d\\n p+=3;\/\/ p+=3后就会向后移动三个字符,状态为 ↓ d,a=%d,b=%d\\n 到这时,实际上 p 的值就 a=%d,b=%d...

求助,一个C语言问题!!
条件运算符要求有三个操作对象,称为“三目运算符”。三目运算符条件表达式的形式:表达式1?表达式2:表达式3 说明:条件运算符的执行顺序:先求解表达式1的值,若其为真,则求解表达式2的值,且整个条件表达式的值等于表达式2;若表达式1为假,则求解表达式3的值,且整个条件表达式的值等于表达式3。所以...

相似回答
大家正在搜