请问这个c语言程序中,两个数相等的时候,为什么不输出0?
#includeint func(int a, int b){ return a==b;}int main(){ int m,n; scanf("%d%d",&m,&n); printf("%d
", func(m,n)); return 0;}
c的值为1.5,如果对应%f输出,则输出1.5,对应%d输出,则按整型数输出。
但c是按浮点型存储的,即1.5 = 0.75 * 2,存储时,只存储尾码0.75(二进制为0.11)和阶码1(二进制为1)即可,占8个字节,按int型输出时,只取前4个字节。
double浮点数占8字节,64位,int数占4字节,32位。
double浮点数从高到低位分别存储符号位(1位)、指数部分(11位)和小数部分(52位)
1.5的浮点存储格式为:
0 000 0000 0001 011(后面49个0)
符号位(0表示正数) 指数部分(1) 小数部分(0.75)
按整型数输出时,取低32位(全0):
即输出0。
有如下两种改法:
1
将char a[100],b[100];
改成
char a[100]={0},b[100]={0};
2
在第一个for循环的后面加上a[i+1]='\0';
在第二个for循环的后面加上b[i+1]='\0';
这两种改法任选一种应该都是可以的。
C语言中的算法是指为解决某个特定问题而采取的确定且有限的步,主要的五个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。
算法是指为解决某个特定问题而采取的确定且有限的步骤。
一个算法包含的操作步骤应该是有限的;
算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必须能得到相同的执行结果;
算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现;
在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到;
算法的目的是为了求解,这些解只有通过输出才能得到(注意:算法要有一个以上的输出)。
一个算法应该具有以下五个重要的特征:
1、有穷性(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止。
2、确切性(Definiteness)
算法的每一步骤必须有确切的定义。
3、输入项(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件。
4、输出项(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。
5、可行性(Effectiveness)
算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成。(也称之为有效性)。
#include <stdio.h>
void main()
{
int i,j,count,m,n;
int index = 0;
int flag = 0;
while(scanf("%d %d",&m,&n) == 2)
{
flag = 0;
for(i=m;i<=n;i++)
{
count=0;
for(j=2;j<i;j++)
{
if(i%j==0)
count++;
a b两个数组都没有初始化,永远不会有a[i]=='\0'的情况,所以即使给两个数组的输入都一样,也会运行到r = a[i] - b[i],而此时a[i]与 b[i] 都是不确定的值,r也是不确定的值
C语言函数问题:请问这个程序的输出答案是什么,需要解释为什么答案是这 ...
2, 6, 42, 3 开始看到这个程序,我觉得明显有问题,可是运行了下,却极其正常。找了下资料发现,得主要是static和局部、全局量的作用域的问题。注意这两点,然后再去分析程序:1.静态局部变量在程序编译时被首次初始化,即以后的函数调用不再进行初始化,而是使用上次调用结束时的值。静态量数据有单独...
c语言程序中的逻辑问题
C是小偷。首先,我们假设A说的是假话,那么另三个人说的就应该是真话,因为题目说了,一个人说假话,三个人说真话,结果发现,设A说假话不成立。再假设B,也不成立,只有C说假话时成立,得出C说的是假话,那么B说的就是真话,B说C是小偷,所以答案是C ...
问一个c语言程序: 键盘输入8:30↙ 输出minu=510
用&d接受8和30,%c接受:就可以了。我写的代码:include<stdio.h> void main(){ int a,b,time;char c;printf("请输入时间:");scanf("%d%c%d",&a,&c,&b);time=a*60+b;printf("minu=%d\\n",time);} 纯手打,望采纳
求问个c语言问题 如图此程序 其中256是什么
快过年了,不想干活了,帮楼主答疑吧。。这个题目设计3个问题:1 数据大小:char在内存中占一个字节,取值范围为(0~255)之间。short在内存中占二个字节,取值范围为(0~65535)之间。楼主可以认为就是上图中的一个单元格。注:这里不讨论char和byte这种有符号无符号问题,怕楼主更晕。2 联合体的数据...
小白发问,这个C语言的程序该怎么写?
printf("%lf %lf %lf", a, b, c);if ((a <= 0) || (b <= 0) || (c <= 0)){ printf("输入错误!(请检查输入值应为正数)\\n");return main();} if (((a + b) < c) || ((a + c) < b) || ((b + c) < a)){ printf("这三条边不能构成三角形。\\n"...
帮我看看这个c语言程序有什么问题,我运行出来是 if条件不管输入什么都...
有几个地方不对 一、把int fuhao改成char fuhao 二、把if中的fuhao=改成fuhao== 三、把scanf("%d",&fuhao)改成scanf("%c",&fuhao)
请帮忙看一下这个C语言程序,出了点小问题。 \/*创建一个包含10个元素的...
void main() \/\/首先你的函数并没有返回值 { int x[10],temp;int i,k;printf("请输入10个数为各个元素赋值:");for(i=0;i<=9;i++) \/\/数组的下标是从零开始的啊 { scanf("%d",&x[i]);} printf("\\n这10个数按照从大到小排列顺序为:");for(i=0;i<9;i++) \/\/...
C语言,这个程序出错是不是因为吧n定义为了int型,导致1\/n都得0?_百度...
是这样的。C语言中如果涉及到运算的话,如果涉及到的数据都是同一类型的,均按相同类型进行运算,结果也会取相同类型。代码中的1\/n明显都用整数运算,结果小于1,取整数结果就是0了(当n不为1时)如果防止出错,可以把1\/n写成1.0f\/n 其中f表示的是浮点数常数的尾缀 或者使用强制转换为浮点数后再...
c语言问题:求大神帮忙看一眼这个程序哪里有问题
这个问题关键在于计算闰年的个数,闰年比普通年份多了一天,所以最后天数直接加上闰年数就行了。(注意在循环时控制条件不用算当年是否为闰年,因为当年还没开始)以下是具体代码:include <stdio.h>#include<stdlib.h>main(){ int i,by,ty,r=0;long unsigned min;printf("Input your birth year...
求助C语言中这个是什么问题
素数就是不被除了1和本身的任何自然数整数整除的自然数。所以只要不被整除就是素数。sqrt()只是为了优化算法而已。2是素数:if(n==2) {printf("\\n2 is susuo ?Yes");return;}\/\/return 结束程序。其他只有奇数才是素数:if(n%2==0){printf("\\n%d is susuo ?No",n);return;} \/\/被...
不定希优: #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) {char a[60],b[60];printf("输入第一个数:");scanf("%s",a);printf("输入第二个数:");scanf("%s",b);if(strcmp(a,b)) printf("两个数不相等\n");else printf("两个数相等\n");system("pause");return 0; }
睢县19170327135: 求一个c语言程序 输出10000以内含两位相同数字的程序 - ?
不定希优: int test(int *arr) {int i,j = 0;for(i = 0;i < 10; i++){if(arr[i]>2)return 0;else if(arr[i] == 2)j = 1;}return j == 1; } int main() {int arr[10] = {0};int x,i;for(x = 11;x<=10000;x++){i = x;while(i){arr[i%10]+=1;i = i / 10;}if(test(arr)){printf("%d ",x);}...
睢县19170327135: c语言的问题“判断两实数相等” - ?
不定希优: 因为我们输入的十进制的数被计算机存储的时候是按二进制存储的,计算机进行转化的时候存在误差,所以不能那样比较大小.
睢县19170327135: 用C程序判断两个整数的大小,怎么只能运行到两个数相等? - ?
不定希优: 正常情况下一般不会相等的,因为scanf写错了.1 scanf("%d,%d",a,b); 1.“%d,%d”中的“,”去掉,除非你想输入的时候每次都输入“,”.2. a和b改为&a和&b,要用取地址符号给变量赋值,不然赋值是不成功的.
睢县19170327135: C语言程序设计:随机出现两个数,他们的和正好等于你重新输进去的数的话输出good,否则输出bad - ?
不定希优: #include void main() { int a[3]; int result; char choic='n'; srand((unsigned)time(NULL)); while(1) { printf("请输入一个数:\t"); scanf("%d", (a+2)); a[1]=rand(); a[2]=rand(); result=a[1]+a[0]; while(result!=a[2]) { printf("bad!\n"); printf("输入c继续...
睢县19170327135: 用C语言写程序它既是完全平方数,又有两位数字相同,例如144,676等, - ?
不定希优: #include<stdio.h> #include<math.h> void main() {int num;int x;int a,b,c;printf("请输入一个三位数:");scanf("%d",&num);a=num/100;b=num/10%10;c=num%10;x=(int)sqrt(num);if((a==b||a==c||b==c)&&x*x==num){printf("%d,既是一个完全平方数又是有两个数相同的数",num);}else{printf("%d,是一个不符合条件的数",num); }}
睢县19170327135: abc三个数中有两个数相等,要输出这相等的两个数,怎么编写程序 - ?
不定希优: C的话可以这么写: if(a==b)printf("%d %d\n",a,b); else if(a==c)printf("%d %d\n",a,c); elseprintf("%d %d\n",b,c);
睢县19170327135: 编写一个程序,求两个数的平均值(用C语言) - ?
不定希优: 例子如下: 直接编译,程序输出结果随意输入两个数,如100 ,98,程序执行结果如下图所示: 知识扩展:算术平均数( arithmetic mean),又称均值,是统计学中最基本、最常用的一种平均指标,分为简单算术平均数、加权算术平均数.它主要适用于数值型数据,不适用于品质数据. 算术平均数是加权平均数的一种特殊形式(特殊在各项的权重相等).在实际问题中,当各项权重不相等时,计算平均数时就要采用加权平均数;当各项权相等时,计算平均数就要采用算术平均数.
睢县19170327135: c语言,将两个数组合并,并将相同的数去掉.我用循环比较出了两个数组中相同的数,怎么合并删除,求代码 - ?
不定希优: 合并的方法很多,你这个要求很低 那个du知道君的代码我真的怀疑是不是自己写的 不过这次倒没有什么问题 你要合并数组 可以再定义一个数组c 你又不要重新排序 先把a塞进去 再从,以他的代码为例,&c[n1+1]这个地址开始塞第二个数组b不就行了吗
睢县19170327135: Dev - C++编C程序如何实现如下效果: 随机输入三个整数,如果其中有两个数相等,则输出“有两个整 - ?
不定希优: 判断相等要用二个等号==