long fun(char s)
{long n;int sign;
for( ;isspace(s);s++) //如果s是空格则s++
sign=(s=='-')-1:1;
if(s=='+'||s=='-')
s++;
for(n=0;isdigit(s);s++) //如果s是数字则s++
n=10n+(s-'0');
return(signn);
}
1 函数返回值是6534
2 isspace()和isdigit()都是在头文件ctypeh中定义的
它们在这里的作用是分别是判断s是否为空格和s是否为数字具体的函数实现可以查考库文件ctypec
另外
for( ;isspace(s);s++)
sign=(s=='-')-1:1;
这个sign的值在这里永远是1,如果是要输出负数的话:
例如:要让“□□□□□-6534abc”输出的是-6534则函数应该改为:
for( ;isspace(s);s++)
; //这里什么都不做,只是判断是空格就后移一位
if(s=='+'||s=='-') {
sign=(s=='-')-1:1;
s++;
}
不知道你题目中的塔是柱状塔还是锥状塔,对于柱状塔,源代码如下。
#include "stdioh"
#include "mathh"
double Dist(double x1, double y1, double x2, double y2)
{
return sqrt((x1 - x2) (x1 - x2) + (y1 - y2) ( y1 - y2));
}
double GetHigh(double x, double y),
{
int signx = 1, signy = 1;
if(x < 0) signx = -1; /先求点(x, y)所在象限/
if(y < 0) signy = -1;
if(Dist(x, y, signx 10, signy 10) <= 20) /求点(x, y)与最近的塔心的距离/
return 25;
else 0;
}
void main( )
{
double x, y;
scanf("%lf%lf", &x, &y);
printf("high = %lf", GetHigh(x, y));
}
如果是锥状塔,将求高度的函数代码修改如下,其余的代码同上:
double GetHigh(double x, double y)
{
int signx = 1, signy = 1;
double dist;
if(x < 0) signx = -1; /先求点(x, y)所在象限/
if(y < 0) signy = -1;
dist = Dist(x, y, signx 10, signy 10); /求点(x, y)与最近的塔心的距离/
if(dist <= 20)
return 25 (20 - dist) / 20;
else 0;
}
#include <stdioh>
long s2i(char s);
int main(void)
{
printf("%ld\n",s2i("-123456"));
return 0;
}
long s2i(char s)
{
long n=0,sign=1;
while(s)
{
switch(s)
{
case '+':sign=1;break;
case '-':sign=-1;break;
default:n=n10+s-'0';break;
}
s++;
}
return signn;
}
以上就是关于C语言程序设计(165-8)全部的内容,包括:C语言程序设计(165-8)、C语言的分支结构程序设计、使用c语言程序设计,编写一个函数,用于将一个数值型字符串转化为整型数值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)