荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: huhaiming (一生只爱她), 信区: Program
标 题: [合集]c指教
发信站: 荔园晨风BBS站 (Fri Apr 30 18:30:16 2004), 站内信件
victy (victor) 于Fri Feb 27 17:12:54 2004提到:
用c编程序
给定的大于10的整数
怎么样取它的除了最高位的数字
例:取5932的低位得到932
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.66]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.66]
jango (姜戈,理想高于一切) 于Fri Feb 27 17:19:44 2004提到:
这个简单。
#include<stdio.h>
void main()
{
long a,b;
scanf("%ld",&a);
b=1;
while(b<a)
{
b=b*10;
}
b=b/10;
a=a%b;
printf("%ld\n",a);
}
jango (姜戈,理想高于一切) 于Fri Feb 27 17:29:49 2004提到:
当然,
你还可以用math.h里面的
log10()函数,省掉那个循环的时间。
当你使用 floor(log10(a))+1的时候,
得到的就是这个整数a的位数。
再用一个pow(),来实现b的取值
虽然对这题来说没什么必要。
但对于那些大型整数来说,还是有用的。
比如算阶乘的位数。
tec (TO BE A BETTER MAN!) 于Fri Feb 27 20:11:19 2004提到:
还可以先将它转换为string,首指针后移一格,再转回int
jango (姜戈,理想高于一切) 于Fri Feb 27 20:42:15 2004提到:
那你还不如直接用
scanf("%1d",&a)
每次scan一个进来。
print一个出去。
把第一个丢掉就行了。
不用转换,哈哈。
zqw (zqw) 于Fri Feb 27 20:48:37 2004提到:
#include <stdio.h>
void main(void)
{
long a;
long b;
int i=1;
scanf("%d",&a);
b = a;
while (b >= 10)
{
b /= 10;
i *= 10;
}
a = a - b*i;
printf("%d",a);
}
posidone (海王波赛冬) 于Fri Feb 27 20:59:32 2004提到:
这个方法理论上看似可行,
但是,实际上没有可操作性。
对于单个的数据输入,
你可以用
if(scanf("%1d",&a)==EOF)break;
但是,如果要输入一组数据呢?
你根据什么来判断呢?
比如,输入12和34,
你如何让电脑知道你输入的不是1234?
所以你还是要用char
scanf("%c")判断它是否等于回车。
甚至都不需要把它转成int
因为这题不涉及数字运算。
何必把它转成int呢?
你直接用char输出就行了嘛。
[ 在 jango (姜戈,理想高于一切) 的大作中提到: 】
posidone (海王波赛冬) 于Fri Feb 27 21:06:34 2004提到:
直接用char
一个变量搞定。
#include<stdio.h>
void main()
{
char c;
while(scanf("%c",&c)!=EOF) //最高位在此已经被屏蔽掉了。
{
while(1)
{
scanf("%c",&c);
if(c=='\n') break;
printf("%c",c);
}
printf("\n");
}
}
jango (姜戈,理想高于一切) 于Fri Feb 27 21:11:03 2004提到:
高人!!!
强!!!
tec (TO BE A BETTER MAN!) 于Fri Feb 27 21:34:39 2004提到:
别人没有说要从console输入啊,只是数值转换而已
这样就行了
int cut_highest_digit(int i) // i必须大于10
{
char str[11];
sprintf(str, "%d", i)
return atoi(str+1);
}
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店