C语言的一个问答程序

C语言的一个问答程序,第1张

scanf("%c",&choose)

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++


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12235069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存