c语言 清屏函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 清屏函数相关的知识,希望对你有一定的参考价值。
参考技术A有人问:如何才能只清除一行,或是指定行?
于是搜呀搜呀~找到了这样的一个代码(关键部分):
#include <stdio.h>
#include <windows.h>
void GoToXY(int x, int y);
void main()
int x,y;
printf("请输入光标位置(x,y)用逗号隔开/n");
scanf("%d,%d",&x,&y);
GoToXY(x,y);
printf("x=%d,y=%d",x,y);
scanf("%d",&x);
void GoToXY(int x, int y)
COORD pos = x,y; //设置光标位置
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos); //两个参数分别是指定哪个窗体,什么位置?
那个如何清除指定的行的字符呢?
那就得用“覆盖法”了,就是让光标到那一行的行头,让后用一个循环输入指定次数的空格就行了。
扩展资料:
bottomscreenclear(自下清屏)
voiddcls(intx1,intx2,inty1,inty2)
intt,s,j,i;
t=s=(y1+y2)/2;
for(j=x2;j>x1;j--)
for(i=y1;i<y2;i++)
goto_xy(j,i);
putchar('');
delay(10);
c语言中如何只清屏后半部分保留前半部分?
请看如下程序:如何才能把前半部分的字母abcdefg保留,只清屏后半部分的符号&&&&&&&&&&&&&?
谢谢!!!
#include<stdio.h>int main()
printf("abcdefg\n");
printf("&&&&&&&&&&&&&\n");
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#define stacksize 100
//---字符栈的基本操作----------------------------------
typedef char datatype1;
typedef struct //定义字符栈,用数组表示
datatype1 data[stacksize];
int top;
seqstack1;
void initstack1(seqstack1 *s)//置空栈
s->top = -1;
int stackempty1(seqstack1 *s)//判栈空
return s->top == -1;
int stackfull1(seqstack1 *s)//判栈满
return s->top == stacksize-1;
void push1(seqstack1 *s, char x)//进栈
if(stackfull1(s)) return ;
++s->top;
s->data[s->top] =x;
char pop1(seqstack1 *s)//退栈
if(stackempty1(s)) return NULL;
s->top--;
return s->data[s->top+1];
char stacktop1(seqstack1 *s)//访问栈顶元素
if(stackempty1(s)) return NULL;
return s->data[s->top];
//---整数栈的基本操作----------------------
typedef double datatype2;
typedef struct//定义数栈,用数组表示
datatype2 data[stacksize];
int top;
seqstack2;
void initstack2(seqstack2 *s)//置空栈
s->top = -1;
int stackempty2(seqstack2 *s)//判栈空
return s->top == -1;
int stackfull2(seqstack2 *s)//判栈满
return s->top == stacksize-1;
void push2(seqstack2 *s, double x)//进栈
if(stackfull2(s)) return ;
++s->top;
s->data[s->top] =x;
double pop2(seqstack2 *s)//退栈
if(stackempty2(s)) return NULL;
s->top--;
return s->data[s->top+1];
double stacktop2(seqstack2 *s)//访问栈顶元素
if(stackempty2(s)) return NULL;
return s->data[s->top];
char proceed(char a,char b)//判断运算符的优先级,a为栈内运算符,b为栈外运算符
int i,j;
char c[9][9]=
,
,
,
,
,
,
,
,
;
for(i=1;i<7;i++)if(c[i][0]==a)break;
for(j=1;j<7;j++)if(c[0][j]==b)break;
return c[i][j];
double transform(char *s,int *i)//字符型数据转化为双精度型数据
int j=0,n;
double a[10],sum1=0,sum2=0;
for(;isdigit(s[*i]);(*i)++)
a[j++]=s[*i]-'0';
n=j;
for(j=0;j<n;j++)
sum1=(sum1+a[j])*10;
sum1=sum1/10;
if(s[(*i)]=='.')
*i=*i+1;
for(j=0;isdigit(s[*i]);(*i)++)
a[j++]=s[*i]-'0';
for(j=j-1;j>=0;j--)
sum2=(sum2+a[j])/10;
return sum1+sum2;
double operate(double a,char r,double b)//运算函数
switch(r)
case'+':return a+b;break;
case'-':return a-b;break;
case'*':return a*b;break;
case'/':return a/b;break;
case'^':return pow(a,b);break;
default:printf("error");
;
double evalexpres(char *s)//求表达式值的函数
char ch,r;
int i=0;
double a,b,num;
seqstack1 *stack1;
seqstack2 *stack2;
stack1=(seqstack1*)malloc(sizeof(seqstack1));//创建字符栈
stack2=(seqstack2*)malloc(sizeof(seqstack2));//创建数栈
initstack1(stack1);
push1(stack1,'#');
initstack2(stack2);
ch=s[i];
while(ch!='#'||stacktop1(stack1)!='#')//扫描表达式
if(isdigit(ch))//如果是‘0’~‘9’,转换为整形,进数栈
num=transform(s,&i);
push2(stack2,num);
ch=s[i];
else
switch (proceed(stacktop1(stack1),ch))
case'<'://栈内符号优先级低,栈外符号进栈
push1(stack1,ch);
ch=s[++i];
break;
case'='://脱括号并接收下一个字符。
pop1(stack1);
ch=s[++i];
break;
case'>'://退栈并将运算结果入数栈。
r=pop1(stack1);
b=pop2(stack2);
a=pop2(stack2);
printf("计算步骤:\n%.3f%c%.3f=%.3f\n",a,r,b,operate(a,r,b));//输出运算步骤
push2(stack2,operate(a,r,b));
break;
case'x': printf("原表达式%s有误,请检查:\n",s);break;
//switch
//else
//while
return stacktop2(stack2);
main()
double num;
char s[stacksize];
printf("\t\t\t| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|\n");
printf("\t\t\t|^_^这是我的计算器^_^|\n");
printf("\t\t\t|____________________|\n");
printf("\t\t支持加,减,乘,除,指数及括号运算.\n");
printf("\t\t数据可以为双精度类型的任意数\n");
printf("\t\t请输入表达式,并以#结束:\n");
scanf("%s",s);
while(s[strlen(s)-1]!='#')
printf("输入有误!请重新输入:\n");
scanf("%s",s);
num=evalexpres(s);
printf("%s=%.3f\n",s,num);
getchar();
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快! 参考技术A 把后半句话去掉不就行了
以上是关于c语言 清屏函数的主要内容,如果未能解决你的问题,请参考以下文章