| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1316 人关注过本帖
标题:这个程序无法正常运行,输入了三个数字就直接暂停了。以及求问如何把一串数 ...
只看楼主 加入收藏
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
这个程序无法正常运行,输入了三个数字就直接暂停了。以及求问如何把一串数字以字符形式存储在char型数组中?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float fun(float n)
{
      float sum=0;
      sum=pow(n,4)+2*pow(n,3)+pow(n,2)-5;   
      return sum;   
}
/*float happy(char strng[],int precision)//我想把精度precision在主函数中以整数形式输入后确认精度。可是没法将输入的root强制转换成一个一个的char进行判定
{

    int i=0,count=0;
    while(strng[i]!='\n');
    {   
        if (strng[i]=='.')
        {
                while(strng[i]!='\n')
                {
                    count++;
                    i++;
                }
                if(count>=precision)
                        return 1;
                else
                        return 0;
                i++;
        }
        else;
    }
}*/
void findRoot(float precision,float a,float b)
{
    float root;
    int n=0;
    while(1)
    {
           root=(a+b)/2;
           if (precision>=root&&fabs(fun(root)-0)<=precision)
           {
              printf("the root is%f",root);
              printf("run the exe:%d",++n);
              break;
            }
           else if (fabs(b-root)<fabs(a-root))
           {
                n++;
                a=(a+b)/2;
            }
           else
               b=(a+b)/2;
               n++;

     }

                                                                        
}




int main(int argc, char *argv[])//很麻烦,确认精度要输入0.00001这样 然后上面想改良,结果失败了。
{
  float precision;
  float a, b;
  printf("scanf a precision:");
  scanf("%f",&precision);
  fflush(stdin);
  printf("scanf a left:");
  scanf("%f",&a);
  fflush(stdin);
  printf("scanf a right:");
  scanf("%f",&b);  
  findRoot(precision,a,b);
  system("pause");   
  return 0;
}
搜索更多相关主题的帖子: 输入 数字 char float scanf 
2017-11-18 01:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
回复 楼主 krauze
查查stdlib.h或者stdio.h或者string.h头文件里的库函数~记得有这样的函数可以实现这个功能的~哦~可以用sprintf来实现~试试看~

[此贴子已经被作者于2017-11-18 02:05编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-18 02:04
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
收藏
得分:0 
回复 2楼 九转星河
好的我试试。 不过我还是想问问这个没有用到char的函数为什么会中途停止。。。 我有几个同学也是这样
2017-11-18 08:03
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 krauze
当a=b时(a+b)/2=a;

测试过这样二分法跳不出循环~

循环结束条件应改成fabs(a-b)<precision~
这样试试~

[此贴子已经被作者于2017-11-18 11:18编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-18 11:15
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
收藏
得分:0 
回复 4楼 九转星河
好的谢谢。 那个问题解决了。emmm 不过我又编出了一个自动暂停的c= =

        {        i++;
                while(strng[i]!='\n')
                {               
                    count++;
                    i++;
                }
                    if(count>=precision)
                    {
                        return 1;
                    }
                    else
                    {                    
                        return 0;
                    }   
        }
    }
}

int main()//
{
    char strng[20]="";
    float a;
    int precision;
    printf("please scanf a precision:");
    scanf("%d",&precision);
    fflush(stdin);
    printf("please scanf a root:");
    scanf("%f",&a);
    sprintf(strng,"验证%f",&a);
    if (happy(strng,precision))
        printf("OK");
    else
        printf("NO");        
    system("pause");
    return 0;
}
我原本是想尝试让输入的浮点数转变成字符串进行判定。 没想到输完两个数字后又停了 debug了半天也找不到- -。。。。。
2017-11-19 00:30
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 5楼 krauze
嗯,还是用库函数比较方便~自己弄个的话要非常熟悉浮点数的二进制内存储存方式才行~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-19 12:01
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
收藏
得分:0 
回复 6楼 九转星河
好了 都解决了 谢谢了
2017-11-23 00:56
快速回复:这个程序无法正常运行,输入了三个数字就直接暂停了。以及求问如何把一 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018142 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved