/利用随机函数生成0---9之间的一个整数,从键盘输入数字猜该数,
每次提示输入的数字与生成的数字之间的大小关系,并统计猜数的次数
徊轮泻笙允靖檬�⒉率�拇问�暗燃三次以内为优秀,七次以内为良好,
否则为不及格)。 /
#include <stdioh>
#include <stdlibh>
int main()
{
int data, t, count = 0;
data = rand()%9;
do
{
printf("enter the integer you guess:");
scanf("%d", &t);
if (data == t)
{
printf("the data is:%d\n", data);
break;
}
else if(data > t)
{
printf("a little smaller\n");
}
else
{
printf("a little bigger\n");
}
count++;
}while(1);
if (count <= 3)
{
printf("优");
}
else if(count <= 7)
{
printf("良");
}
else
{
printf("不及格");
}
return 0;
}
char num[10] = {'零','一','二','三','四','五','六','七','八','九'};
char num2[10] = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
char wei[4] = {'\0','十','百','千'};
char danwei[3] = {'万','亿'};
char wei2[4] = {'拾','佰','仟'};
这几个定义不对,因为汉字占两个字节,所要num等的长度要乘以2
wei2和danwei两个,当字符串遇到\0就会结束,所要这样定义是不对的
你要这么定义,也就是定义二维数组
num[10][] = {"零",一”,“二”,“三”,“四”,“五”,“六”,“七”,“八”,“九”};
其他的汉字定义也一样,我就不写了,下面我利用的时候,就默认改过了
思路,首先判断输入的x的长度,接着转换为0~9
lx=strlen(x);
for(i=0;i<lx;i++)
x[i]=x[i]-'0';
接着就是输出了,这个要交替输出
也就是输出一个x的字符0~9对应的num中的数,接着输出对应的万千亿等标识
代码是
for(i=0;i<lx;i++)
{
d=lx-i; //这里要计算这个位在这个字符到最后的位置,你懂
//这个可能控制不好,也就是一位的差距,你自己调试一下就可以
puts(num2[x[i]]); //输出x中的数对应的汉字
//接下来输出相应的百千万亿等汉字
if(d==2||d==6||d==10) //在十、十万、十亿位置输出十
puts(wei[0]);
if(d==3||d==7||d==11) //在百,百万、百亿位置输出百
puts(wei[1]);
if(d==4||d==8||d==12) //在千,千万,千亿位置输出千
puts(wei[2]);
if(d==5) //在万位输出万
puts(danwei[0]);
if(d==9) //在第九位输出亿
puts(danwei[1])
}
如果想显示完全数的因子的话,用数组存储比较合适。你的程序有个逻辑错误。
if(a%b==0)你忘记还有自身也是自身的因子数,导致后面的判别式永远不成立,应改为
if(a%b==0&&a!=b)
自己改了下用数组的:
#include<stdioh>
int
main()
{
int
k[20],a,b,c;
for(a=2;a<=1000;a++)
{c=0;
for(b=1;b<=a;b++)
{
if(a%b==0&&b!=a)
{
k[c]=b;
c++;
}
if(b==a){
int
num=0;
for(int
i=0;i<c;i++)
num=num+k[i];
if(num==a){
printf("%d
",a);
printf("its
factors
is
:
");
for(int
i=0;i<c;i++)
printf("%d
",k[i]);
printf("\n");
}
}
}
}
return
0;
}
以上就是关于编写一个“猜数字游戏”的程序全部的内容,包括:编写一个“猜数字游戏”的程序、C语言程序设计的一道题,一个把阿拉伯数字转换成中文大写数字的程序。我自己编写如下:、c语言:完全数程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)