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语言 清屏函数的主要内容,如果未能解决你的问题,请参考以下文章

c语言 清屏函数

c语言函数清屏怎么写

C语言清屏指令

怎样用c语言编程清屏

Linux系统的C语言怎么清屏?

c语言中如何只清屏后半部分保留前半部分?