#define Pi 3.1416
int main()
{float r,h,c,s1,s2,v1,v2
printf("请输入圆半径和圆柱高:")
scanf("%f%f",&r,&h)
c=2*Pi*r
s1=0.5*c*r
s2=4*s1
v1=3*s1*r/4
v2=s1*h
printf("圆周长=%f\n圆面积=%f\n圆球表面积=%f\n",c,s1,s2)
printf("圆球体积=%f\n圆柱体积=%f\n",v1,v2)
return 0
}
char c,password[8]int i=0
while(i<8)
{
c=char(getch())
if(int(c)==13)//敲入回车
break
if(int(c)<58&&int(c)>47||int(c)>64&&int(c)<91||int(c)>96&&int(c)<123)
{
cout<<'*'
password[i]=c
i++
}
}
password[i]='\0'
该段函数在试验时发现:当输入backspace键时,没有反应,用户无法作出修改。于是添加关于backspace的判别。backspace键的ASCII码为8。
char c,password[8]
int i=0,x,y
x=wherex() //由于backspace的缘故,考虑初始位置问题
y=wherey()
while(i<8)
{
c=char(getch())
if(int(c)==8)//敲入backspace
{
gotoxy(x+i-1,y) //回到前一个位置
cout<<" "//挡住后面的字符,此时输入焦点又回到了后面
gotoxy(x+i-1,y) //再次移动输入点
i--//字符数减少
mypass[i]='\0' //字符被删除
continue //再次循环,等待输入
}
if(int(c)==13)
break
if(int(c)<58&&int(c)>47||int(c)>64&&int(c)<91||int(c)>96&&int(c)<123)
{
cout<<'*'
password[i]=c
i++
}
}
password[i]='\0'
这一段比上面完善得多,用户可以删除部分字符。然而(但是…可是…but…however),问题1,当不停的按下backspace键,结果将是灾难性的,如果你是在cout<<"输入密码:"后面执行mypass(password),那么它将把“输入密码:”几个字也毫不客气的删除;问题2,当用户在没有输入任何字符的时候按下回车键,程序照样同意,但是这将产生一个空密码。
但是这两个问题很好解决,只要加入几个判别式就行了:),同时我还发现,将输入点向前移动一位的 *** 作完全可以用cout<<char(8)<<' '<<char(8)来代替,这样连x,y以及wherex(),wherey()都用不着了。最后的程序如下:
void mypass(char mypass[8])
{
int i=0
char c
while(1)
{
c=char(getch())
if(int(c)==8)//敲入backspace
{
if(!i)
continue
cout<<char(8)<<' '<<char(8)
i--
mypass[i]='\0'
continue
}
if(int(c)==13) //敲入回车键
{
if(!i)
continue
else
break
}
if((int(c)<58&&int(c)>47||int(c)>64&&int(c)<91||int(c)>96&&int(c)<123)&&i<8)
{
cout<<'*'
mypass[i]=c
i++
}
else
continue
}
mypass[i]='\0'
return
}
至此大功告成。:)
#include<stdio.h>int main()//加个int 别的都不行 戒掉void
{ char ch[7]={"65ab21"}//从ch[0]到ch[6]分别保存了'6' ,'5', 'a', 'b', '2', '1', 0(注意最后的0)
int i,s=0
for(i=0ch[i]>='0'&&ch[i]<'9'i+=2)//ch[0]='6'满足条件,但第2次ch[2]='a'不满足条件了
s=10*s+ch[i]-'0'//ch[0]-'0'='6'-'0'=6,字符相减得到数字
printf("%d\n",s)//由于循环一次 s是6
return 0//int main()所以要记得返回
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)