if(choose=='a')
\*上面两句改为“if((choose=getchar())=='悉乎a')”*\
*num=*num+50
\*此处加上:“getchar()”。*\
printf("问题\n")
printf("a.xx b.xx c.xx d.xx\n")
scanf("%c",&choose2)
if(choose2=='b')
\*上面两句改为“if((choose2=getchar())=='b')”*\
*num=*num+50
上面这三个地方改了就行,当输入输出连成一片的时候,会导致
输入输出顺序混乱,往往先执行两条输入语句,首先你输入a\n,
由于是你按\n系统才开始读入字符,顺序把字符'纤蔽a'赋给了你的变量
choose,把字符'\n'赋给了你睁竖悉的变量choose2,这样,就跳过了
中间的输出语句直接结束了,但是注意,输出语句并不是没有执
行,只是顺序被打乱了(先输入两个变量后执行第二题的输出语句)
,所以你看不到,在TC里,你运行完按ALT+F5还是可以看到的,
其实变量choose2里的字符就是'\n'。
下面是帮你完全修正好的程序,自己运行试试再比较一下:
#include<stdio.h>
#include<stdlib.h>
void iq(int *num)
{
char choose,choose2
printf("问题\n")
printf("a.xx b.xx c.xx d.xx\n")
if((choose=getchar())=='a')
*num+=50
getchar()
printf("问题\n")
printf("a.xx b.xx c.xx d.xx\n")
if((choose2=getchar())=='b')
*num+=50
}
int main()
{
int numbegain=0
//int *numlast=&numbegain
printf("这是一个XX程序,根据提示选择abcd\n")
iq(&numbegain)
printf("你的智商是:%d",numbegain)
system("pause")
}
这段程序用于计算100的阶乘末尾的零的个数,思路如下:末尾零的个数就代表含有因子10的个数,而10=2*5,所以每一对2和5因丛搭子就对应结果末尾的一个零,所以结果末尾的零的个数即为因子2和5的组合的数量,亦即为因子2和5中数量少的一个,很明显因子2的个橘郑吵数比因子5的个数多,所以只需求100以内因子5的个数。
首先计算100以内能被5整除的个数,对应代码:
for(a=5 a<=100 a+=5){
圆侍 count++
又因为能被25整除的数含有两个因子5,所以还须加1,对应代码:
if(!(a%25)) count++欢迎分享,转载请注明来源:内存溢出
评论列表(0条)