标题:这个程序无法正常运行,输入了三个数字就直接暂停了。以及求问如何把一串数 ...
取消只看楼主
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
结帖率:100%
已结贴  问题点数:20 回复次数:3 
这个程序无法正常运行,输入了三个数字就直接暂停了。以及求问如何把一串数字以字符形式存储在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
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
得分:0 
回复 2楼 九转星河
好的我试试。 不过我还是想问问这个没有用到char的函数为什么会中途停止。。。 我有几个同学也是这样
2017-11-18 08:03
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
krauze
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-11-18
得分:0 
回复 6楼 九转星河
好了 都解决了 谢谢了
2017-11-23 00:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482604-1-1.html




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

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