c语言,为什么下面这段程序程序运行超出输出限制的会是1

编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语言)_百度知道
编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语言)
我有更好的答案
刚好在做C++,顺便帮你做下,望采纳!#include &stdio.h&main(){int a,i,sum=0;printf(&素数:\n&);for (a=1;a&=1000;a++){for (i=2;i&=(a-1);i++)if (a%i==0)if (i&=a){sum++;printf(&%d\n&,a);}}printf(&\n素数的个数:%d\n&,sum);}
采纳率:66%
#include &stdio.h&int main(){
int i,n=0,j,m=0;
for(i=2;i&=1000;i++)
for(j=2;j&i;j++)
if(i%j==0)
printf(&%3d &,i);
printf(&\n&);
printf(&共有%d个素数\n&,m);
getchar();
return 0;}
为您推荐:
其他类似问题
素数的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于C语言,以下程序段执行之后输出的结果为什么是1,6,6, #include &stdio.h& void main() { int a=6,b=12,_百度知道
关于C语言,以下程序段执行之后输出的结果为什么是1,6,6, #include &stdio.h& void main() { int a=6,b=12,
我有更好的答案
#include &stdio.h&void main(){
int a=6,b=12,c=1,t=0;
t=a; //因为a&b成立,故而执行后 t = 6
//此处是不受if条件控制的,故而运行后 a=12, b=6
t=a; //此时a&c不成立,不执行这条语句
a=c;c=t; //此处不受if条件控制,运行后 a = 1, c = t = 6printf(&%d,%d,%d\n&,a,b,c,t);
//故而程序运行完后 a =1,b=6, c=6, t=6}//printf(&%d,%d,%d\n&,a,b,c,t); 这句的输出格式中只有三个 %d,故而只会输出前三个a b c的值 //
即为 1,6,6
采纳率:67%
很简单啊 if后面如果没有花括号表明if 的作用域的话,只有第一个分号被执行,即使这个语句为空。因此:a&b true t=a=6 a=b=12 b=t=6;a&c false t=a不执行,a=c=1 c=t=6所以 a=1 b= 6 c= 6 t=6printf(&%d,%d,%d\n&,a,b,c,t); 这句的输出格式中只有三个 %d,故而只会输出前三个a b c的值即为 1,6,6
运行完后a = 1; b = 6, c= 6, t = 6你的pirntf()里面,只有三个占位符,所以只会输出 a, b, c
if ()后面的语句 想要一同执行的话,要加{
}的。你没加!
代码不全,发全代码
#include &stdio.h&void main(){
int a=6,b=12,c=1,t=0; if(a&b)t=a;a=b;b=t; if(a&c)t=a;a=c;c=t; printf(&%d,%d,%d\n&,a,b,c,t);}
代码追问给我以后记得放在补充里边,要不看不见
#include &stdio.h&void main(){
int a=6,b=12,c=1,t=0; if(a&b)t=a;a=b;b=t; if(a&c)t=a;a=c;c=t; printf(&%d,%d,%d\n&,a,b,c,t);}
执行过程1.a&b 成立 t=62.a=123.b=64.a&c 不成立5.a=16.c=6输出a b c 具体数值为 1 6 6
其他4条回答
为您推荐:
其他类似问题
include的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言程序设计作业1答案_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言程序设计作业1答案
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩12页未读,
定制HR最喜欢的简历
你可能喜欢c语言程序填空 下面程序是计算sum=1+(1+1/2)+(1+1/2+1/3)+…(1+1/2_百度知道
c语言程序填空 下面程序是计算sum=1+(1+1/2)+(1+1/2+1/3)+…(1+1/2
c语言程序填空 下面程序是计算sum=1+(1+1/2)+(1+1/2+1/3)+…(1+1/2
我有更好的答案
《C语言》综合练习题一注意:以下“□”为空格,为回车一、单选题1、阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为()voidmain(){intx,y,z;scanf(&%d%d%d&,&x,&y,&z);printf(&x+y+z=%d\n&,x+y+z);}A)x+y+z=48B)x+y+z=35C)x+y+z=38D)不确定值2、下面程序的输出是()voidmain(){inty=0;while(y--);printf(&y=%d\n&,y);}A)y=0B)while构成无限循环C)y=-1D)y=13、在以下各组标识符中,合法的用户标识符是()。A)xy_B)longdoubleC)*pD)CHAR变量1signedhistoryFloat4、以下能正确计算1*2*3…*10的程序段是()A)do{i=1;s=1;s=s*i;i++;}while(i,则输出结果为()A)2,3B)3,5C)5,2D)2,5#includevoidmain(){intv1=0,v2=0;while((ch=getchar())!='#')switch(ch){case'a':case'h':v1++;default:v2++;}printf(&%d,%d\n&,v1,v2);}7、有如下程序voidmain(){inti,sum=0;for(i=1;i=0‖b&=0)&&(a=0&&b&=0)&&(a0)&&(a+b09、下列定义数组正确的是()A)#definesize10B)intn=5;charstr1[size],str2[size+2];inta[n][n+2];C)charstr[];D)intnum['10'];10、以下程序的功能是计算:s=1+1/2+1/3+……+1/10voidmain(){floatss=1.0;for(n=10;n&1;n--)s=s+1/n;printf(&%6.4f\n&,s);}程序运行后输出结果错误,导致错误结果的程序行是A)s=1.0;B)for(n=10;n&1;n--)C)s=s+1/n;D)printf(&%6.4f\n&,s);11、以下说法正确的是()A)输入项可以为一个实型常量,如scanf(&%f&,3.5);B)只有格式控制,没有输入项,也能进行正确的输入,如scanf(&a=%d,b=%d&);C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(&%4.2f&,&f);D)当输入数据时,必须指明变量的地址,如scanf(&%f&,&f);12、设x=2.5、a=7,则算术表达式x+2*++a/3%3的值为()。A)2.5B)3.5C)4.5D)5.513、若有说明:inta[3][4]={0};则下面正确的叙述是()A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中个元素都可以得到初始值,但其值不一定为0D)数组a中个元素都可得到初值014、设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值为()。A)6.5B)6C)0D)115、在下列有关#include命令的叙述中,错误的一条是()A)在#include命令中,文件名可以用双引号或尖括号括起来B)在一个包含文件中又可以包含另一个被包含文件C)在一个#include命令中可以指定一个包含文件D)在一个#include命令中可以指定多个包含文件16、以下不正确的if语句形式是()A)if(x&y&&x!=y);B)if(x==y)x+=y;C)if(x!=y)scanf(&%d&,&x)elsescanf(&%d&,&y);D)if(x=0){【】;count++;}printf(&ave=%f\n&,【】);}6、下面程序为求最小正整数n,使调和级数前n项之和大于预先给定的实数a。&a,main(){intn=0;floats=0.0;while(【】){【】;n++;}print(&“所求的数值为%f\n&,s);}7、设数组a的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。main(){inta[10]={1,2,3,4,5,6,7,8,9,10};intk,for(k=s=i=0;imax){max=a[i];【】;}【】;printf(&\nThepositionofminis:%3d\n&,k);printf(&Thepositionofmaxis:%3d\n&,j);for(i=0;i则下面程序段的执行结果是:【】。#includemain(){while(putchar(getchar())!='?');}19、main(){intnumber=3;while(――number&0)printf(“*%d,”,number);printf(“**%d”,number);}这个程序的输出结果是:【】。20.华氏和摄氏的转换公式为C=5/9*(F-32),其中C表示摄氏的温度,F表示华氏的温度。以下程序输出从华氏0度到华氏300度,每隔20度输出一个值,请填空。main(){intupper,floatfahr=0,upper=300;step=20;while(fahryx&ua1=1a2=1b1=0b2=8sum=19j=ik=ia[j]=a[k]=(x&=1)&&(x&10)9**Howareyou?,*1,**0Celsius=5/9*(fahr-32)fahr+=stepi=1;i&=20;i++f2-f1&a[i]continue三、编程题(答案不唯一!)#defineE1E5voidmain(){intn=1,k=-1;floats=0;do{k=-k;s=s+(float)k/n;n++;while(n&=E);printf(“s=%f\n”,s2);}
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言程序,为什么输出0?不应该是1吗?_百度知道
C语言程序,为什么输出0?不应该是1吗?
#include &stdio.h&void main(){ a=1.23; a=(int)a; printf(&%d&,a);}
我有更好的答案
不对,小数和整数在计算机中的二进制表示法不一样的,系统只是提供了转换的功能而已,使用printf输出的时候,是不会自己转换的,而是强制使用指定格式输出比如说这个程序,最后a中存储的值(double类型)是1.000000,这个值,前16位(二进制)肯定是0,所以使用%d格式的时候,它不会判断对应的变量是什么类型,就直接把它的前16位以整数的形式输出,所以输出的结果必然是0所以使用%d并不能使输出结果转换为对应的整数,请改用%.0f输出(因为你的变量a是double型),就可以输出1
Q1:我之前已经把a转换了啊,a=(int)a,a已经是整形了啊?Q2:同理,为什么这个程序会有问题?运行不了?(无error)#include&stdio.h&void main(){
scanf(&%lf&,&a);
printf(&%d&,(int)a);}
Q1:a的数据类型一旦确定,是无法更改的,虽然(int)a可以得到整数,但将这个值赋给变量a时,这个值将隐式转换为double类型,所以执行a=(int)a;以后,a的值是1.000000而不是1Q2:这个程序应该是可以运行的,除非你的C环境要求全局main函数必须返回整数类型
也就是说Q2的(int)a是正确用法?但是显示有问题。。。据说这类问题都是数据类型的问题
可能跟你的环境有关这个程序能得到正确结果是因为不存在隐式转换的问题,%d对应的地方正好是整数而你之前那个因为%d对应的是double类型,所以得不到预期结果,需要用%.0lf输出
采纳率:78%
为您推荐:
其他类似问题
您可能关注的内容
绿芽的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c语言程序 的文章

 

随机推荐