【div源码】【易语言源码换行】【QQ源码是什么】奖金计算源码_奖金计算源码是什么

时间:2024-11-26 21:28:14 编辑:程序员阅读源码什么意思 来源:qmessagebox 源码

1.c语言编程
2.用C语言写的奖金计算奖金计算计算器源代码
3.公式源码是什么
4.求一个JAVA计算器源代码。不要按钮的源码源码那种。速度。奖金计算奖金计算。源码源码急用

奖金计算源码_奖金计算源码是奖金计算奖金计算什么

c语言编程

       程序1

       题目:有1、2、源码源码div源码3、奖金计算奖金计算4个数字,源码源码能组成多少个互不相同且无重复数字的奖金计算奖金计算三位数?都是多少?

       1.程序分析:可填在百位、十位、源码源码个位的奖金计算奖金计算数字都是1、2、源码源码3、奖金计算奖金计算4。源码源码组成所有的奖金计算奖金计算排列后再去

       掉不满足条件的排列。

       2.程序源代码:

       main()

       {

       int i,j,k;

       printf(“\n“);

       for(i=1;i〈5;i++)    /*以下为三重循环*/

        for(j=1;j〈5;j++) 

       for (k=1;k〈5;k++)

        {

       if (i!=k&&i!=j&&j!=k)  /*确保i、j、k三位互不相同*/

       printf(“%d,%d,%d\n“,i,j,k);

        }

       }

       ==============================================================

       程序2

       题目:企业发放的奖金根据利润提成。利润(I)低于或等于万元时,奖金可提%;利润高

        于万元,易语言源码换行低于万元时,低于万元的部分按%提成,高于万元的部分,可可提

        成7.5%;万到万之间时,高于万元的部分,可提成5%;万到万之间时高于

        万元的部分,可提成3%;万到万之间时,高于万元的部分,可提成1.5%,高于

        万元时,超过万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

       1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      

       2.程序源代码:

       main()

       {

       long int i;

       int bonus1,bonus2,bonus4,bonus6,bonus,bonus;

       scanf(“%ld“,&i);

       bonus1=*0.1;bonus2=bonus1+*0.;

       bonus4=bonus2+*0.5;

       bonus6=bonus4+*0.3;

       bonus=bonus6+*0.;

        if(i〈=)

       bonus=i*0.1;

        else if(i〈=)

        bonus=bonus1+(i-)*0.;

       else if(i〈=)

       bonus=bonus2+(i-)*0.;

        else if(i〈=)

          bonus=bonus4+(i-)*0.;

         else if(i〈=)

             bonus=bonus6+(i-)*0.;

            else

             bonus=bonus+(i-)*0.;

       printf(“bonus=%d“,bonus);

       }

       ==============================================================

       程序3

       题目:一个整数,它加上后是一个完全平方数,再加上又是一个完全平方数,请问该数是QQ源码是什么多少?

       1.程序分析:在万以内判断,先将该数加上后再开方,再将该数加上后再开方,如果开方后

       的结果满足如下条件,即是结果。请看具体分析:

       2.程序源代码:

       #include “math.h“

       main()

       {

       long int i,x,y,z;

       for (i=1;i〈;i++)

        { x=sqrt(i+); /*x为加上后开方后的结果*/

       y=sqrt(i+); /*y为再加上后开方后的结果*/

        if(x*x==i+&&y*y==i+)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

       printf(“\n%ld\n“,i);

        }

       }

       ==============================================================

       程序4

       题目:输入某年某月某日,判断这一天是这一年的第几天?

       1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

       情况,闰年且输入月份大于3时需考虑多加一天。

       2.程序源代码:

       main()

       {

       int day,month,year,sum,leap;

       printf(“\nplease input year,month,day\n“);

       scanf(“%d,%d,%d“,&year,&month,&day);

       switch(month)/*先计算某月以前月份的总天数*/

       {

        case 1:sum=0;break;

        case 2:sum=;break;

        case 3:sum=;break;

        case 4:sum=;break;

        case 5:sum=;break;

        case 6:sum=;break;

        case 7:sum=;break;

        case 8:sum=;break;

        case 9:sum=;break;

        case :sum=;break;

        case :sum=;break;

        case :sum=;break;

        default:printf(“data error“);break;

       }

       sum=sum+day;/*再加上某天的天数*/

        if(year%==0||(year%4==0&&year%!=0))/*判断是不是闰年*/

       leap=1;

        else

       leap=0;

       if(leap==1&&month〉2)/*如果是闰年且月份大于2,总天数应该加一天*/

       sum++;

       printf(“It is the %dth day.“,sum);}

       ==============================================================

       程序5

       题目:输入三个整数x,y,z,请把这三个数由小到大输出。

       1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x〉y则将x与y的值进行交换,

       然后再用x与z进行比较,如果x〉z则将x与z的值进行交换,这样能使x最小。编程源码下载网站

       2.程序源代码:

       main()

       {

       int x,y,z,t;

       scanf(“%d%d%d“,&x,&y,&z);

       if (x〉y)

       { t=x;x=y;y=t;} /*交换x,y的值*/

       if(x〉z)

       { t=z;z=x;x=t;}/*交换x,z的值*/

       if(y〉z)

       { t=y;y=z;z=t;}/*交换z,y的值*/

       printf(“small to big: %d %d %d\n“,x,y,z);

       }

       ==============================================================

       程序6

       题目:用*号输出字母C的图案。

       1.程序分析:可先用’*’号在纸上写出字母C,再分行输出。

       2.程序源代码:

       #include “stdio.h“

       main()

       {

       printf(“Hello C-world!\n“);

       printf(“ ****\n“);

       printf(“ *\n“);

       printf(“ * \n“);

       printf(“ ****\n“);

       }

       ==============================================================

       程序7

       题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

       1.程序分析:字符共有个。不同字符,图形不一样。      

       2.程序源代码:

       #include “stdio.h“

       main()

       {

       char a=,b=;

       printf(“%c%c%c%c%c\n“,b,a,a,a,b);

       printf(“%c%c%c%c%c\n“,a,b,a,b,a);

       printf(“%c%c%c%c%c\n“,a,a,b,a,a);

       printf(“%c%c%c%c%c\n“,a,b,a,b,a);

       printf(“%c%c%c%c%c\n“,b,a,a,a,b);}

       ==============================================================

       程序8

       题目:输出9*9口诀。

       1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

       2.程序源代码:

       #include “stdio.h“

       main()

       {

        int i,j,result;

        printf(“\n“);

        for (i=1;i〈;i++)

       { for(j=1;j〈;j++)

       {

        result=i*j;

        printf(“%d*%d=%-3d“,i,j,result);/*-3d表示左对齐,占3位*/

       }

        printf(“\n“);/*每一行后换行*/

       }

       }

       ==============================================================

       程序9

       题目:要求输出国际象棋棋盘。

       1.程序分析:用i控制行,j来控制列,根据i+j的短线天使指标源码和的变化来控制输出黑方格,还是白方格。

       2.程序源代码:

       #include “stdio.h“

       main()

       {

       int i,j;

       for(i=0;i〈8;i++)

        {

       for(j=0;j〈8;j++)

        if((i+j)%2==0)

       printf(“%c%c“,,);

        else

       printf(“ “);

        printf(“\n“);

        }

       }

       ==============================================================

       程序

       题目:打印楼梯,同时在楼梯上方打印两个笑脸。

       1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。

       2.程序源代码:

       #include “stdio.h“

       main()

       {

       int i,j;

       printf(“\1\1\n“);/*输出两个笑脸*/

       for(i=1;i〈;i++)

        {

        for(j=1;j〈=i;j++)

        printf(“%c%c“,,);

        printf(“\n“);

        }

       }

       程序

       题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月

        后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

       1.程序分析: 兔子的规律为数列1,1,2,3,5,8,,....

       2.程序源代码:

       main()

       {

       long f1,f2;

       int i;

       f1=f2=1;

       for(i=1;i〈=;i++)

        { printf(“%ld %ld“,f1,f2);

        if(i%2==0) printf(“\n“);/*控制输出,每行四个*/

        f1=f1+f2; /*前两个月加起来赋值给第三个月*/

        f2=f1+f2; /*前两个月加起来赋值给第三个月*/

        }

       }

       ==============================================================

       程序

       题目:判断-之间有多少个素数,并输出所有素数。

       1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

       则表明此数不是素数,反之是素数。     

       2.程序源代码:

       #include “math.h“

       main()

       {

        int m,i,k,h=0,leap=1;

        printf(“\n“);

        for(m=;m〈=;m++)

       { k=sqrt(m+1);

        for(i=2;i〈=k;i++)

        if(m%i==0)

       { leap=0;break;}

        if(leap) { printf(“%-4d“,m);h++;<br>        if(h%==0)<br>        printf(“\n“);<br>        }

        leap=1;

       }

        printf(“\nThe total is %d“,h);

       }

       ==============================================================

       程序

       题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数

        本身。例如:是一个“水仙花数”,因为=1的三次方+5的三次方+3的三次方。

       1.程序分析:利用for循环控制-个数,每个数分解出个位,十位,百位。

       2.程序源代码:

       main()

       {

       int i,j,k,n;

       printf(“’water flower’number is:“);

        for(n=;n〈;n++)

        {

       i=n/;/*分解出百位*/

       j=n/%;/*分解出十位*/

       k=n%;/*分解出个位*/

       if(i*+j*+k==i*i*i+j*j*j+k*k*k)

        {

        printf(“%-5d“,n);

        }

        }

       printf(“\n“);

       }

       ==============================================================

       程序

       题目:将一个正整数分解质因数。例如:输入,打印出=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

       (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

       (2)如果n〈〉k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,

        重复执行第一步。

       (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。2.程序源代码:

       /* zheng int is divided yinshu*/

       main()

       {

       int n,i;

       printf(“\nplease input a number:\n“);

       scanf(“%d“,&n);

       printf(“%d=“,n);

       for(i=2;i〈=n;i++)

        {

       while(n!=i)

       {

        if(n%i==0)

        { printf(“%d*“,i);

       n=n/i;

        }

        else

       break;

       }

       }

       printf(“%d“,n);}

       ==============================================================

       程序

       题目:利用条件运算符的嵌套来完成此题:学习成绩〉=分的同学用A表示,-分之间的用B表示,

        分以下的用C表示。

       1.程序分析:(a〉b)?a:b这是条件运算符的基本例子。

       2.程序源代码:

       main()

       {

        int score;

        char grade;

        printf(“please input a score\n“);

        scanf(“%d“,&score);

        grade=score〉=?’A’:(score〉=?’B’:’C’);

        printf(“%d belongs to %c“,score,grade);

       }

       ==============================================================

       程序

       题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

       1.程序分析:利用辗除法。2.程序源代码:

       main()

       {

        int a,b,num1,num2,temp;

        printf(“please input two numbers:\n“);

        scanf(“%d,%d“,&num1,&num2);

        if(num1{ temp=num1;

       num1=num2; 

       num2=temp;

        }

       a=num1;b=num2;

       while(b!=0)/*利用辗除法,直到b为0为止*/

        {

       temp=a%b;

       a=b;

       b=temp;

        }

       printf(“gongyueshu:%d\n“,a);

       printf(“gongbeishu:%d\n“,num1*num2/a);

       }

       ==============================================================

       程序

       题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

       1.程序分析:利用while语句,条件为输入的字符不为’\n’.

       2.程序源代码:

       #include “stdio.h“

       main()

       { char c;<br> int letters=0,space=0,digit=0,others=0;<br> printf(“please input some characters\n“);<br> while((c=getchar())!=’\n’)<br> { <br> if(c〉=’a’&&c〈=’z’||c〉=’A’&&c〈=’Z’)<br>  letters++;<br> else if(c==’ ’)<br>  space++;<br>   else if(c〉=’0’&&c〈=’9’)<br>       digit++;<br>     else<br>       others++;<br>}

       printf(“all in all:char=%d space=%d digit=%d others=%d\n“,letters,

       space,digit,others);

       }

       ==============================================================

       程序

       题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2++++(此时

        共有5个数相加),几个数相加有键盘控制。

       1.程序分析:关键是计算出每一项的值。

       2.程序源代码:

       main()

       {

        int a,n,count=1;

        long int sn=0,tn=0;

        printf(“please input a and n\n“);

        scanf(“%d,%d“,&a,&n);

        printf(“a=%d,n=%d\n“,a,n);

        while(count〈=n)

        {

       tn=tn+a;

       sn=sn+tn;

       a=a*;

       ++count;

        }

       printf(“a+aa+...=%ld\n“,sn);

       }

       ==============================================================

       程序

       题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程

        找出以内的所有完数。

       1. 程序分析:请参照程序〈--上页程序.

       2.程序源代码:

       main()

       {

       static int k[];

       int i,j,n,s;

       for(j=2;j〈;j++)

        {

        n=-1;

        s=j;

       for(i=1;i {

        if((j%i)==0)

        {  n++;

       s=s-i;

       k[n]=i;

        }

       }

        if(s==0)

        {

        printf(“%d is a wanshu“,j);

        for(i=0;iprintf(“%d,“,k);

        printf(“%d\n“,k[n]);

        }

       }

       }

       ==============================================================

       程序

       题目:一球从米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在

        第次落地时,共经过多少米?第次反弹多高?

       1.程序分析:见下面注释

       2.程序源代码:

       main()

       {

       float sn=.0,hn=sn/2;

       int n;

       for(n=2;n〈=;n++)

        {

       sn=sn+2*hn;/*第n次落地时共经过的米数*/

       hn=hn/2; /*第n次反跳高度*/

        }

       printf(“the total of road is %f\n“,sn);

       printf(“the tenth is %f meter\n“,hn);

       }

用C语言写的计算器源代码

       #include<stdio.h>

       #include<iostream.h>

       #include<stdlib.h>

       #include<string.h>

       #include<ctype.h>

       typedef float DataType;

       typedef struct

       {

        DataType *data;

        int max;

        int top;

       }Stack;

       void SetStack(Stack *S,int n)

       {

        S->data=(DataType*)malloc(n*sizeof(DataType));

        if(S->data==NULL)

        {

        printf("overflow");

        exit(1);

        }

        S->max=n;

        S->top=-1;

       }

       void FreeStack(Stack *S)

       {

        free(S->data);

       }

       int StackEmpty(Stack *S)

       {

        if(S->top==-1)

        return(1);

        return(0);

       }

       DataType Peek(Stack *S)

       {

        if(S->top==S->max-1)

        {

        printf("Stack is empty!\n");

        exit(1);

        }

        return(S->data[S->top]);

       }

       void Push(Stack *S,DataType item)

       {

        if(S->top==S->max-1)

        {

        printf("Stack is full!\n");

        exit(1);

        }

        S->top++;

        S->data[S->top]=item;

       }

       DataType Pop(Stack *S)

       {

        if(S->top==-1)

        {

        printf("Pop an empty stack!\n");

        exit(1);

        }

        S->top--;

        return(S->data[S->top+1]);

       }

       typedef struct

       {

        char op;

        int inputprecedence;

        int stackprecedence;

       }DataType1;

       typedef struct

       {

        DataType1 *data;

        int max;

        int top;

       }Stack1;

       void SetStack1(Stack1 *S,int n)

       {

        S->data=(DataType1*)malloc(n*sizeof(DataType1));

        if(S->data==NULL)

        {

        printf("overflow");

        exit(1);

        }

        S->max=n;

        S->top=-1;

       }

       void FreeStack1(Stack1 *S)

       {

        free(S->data);

       }

       int StackEmpty1(Stack1 *S)

       {

        if(S->top==-1)

        return(1);

        return(0);

       }

       DataType1 Peek1(Stack1 *S)

       {

        if(S->top==S->max-1)

        {

        printf("Stack1 is empty!\n");

        exit(1);

        }

        return(S->data[S->top]);

       }

       void Push1(Stack1 *S,DataType1 item)

       {

        if(S->top==S->max-1)

        {

        printf("Stack is full!\n");

        exit(1);

        }

        S->top++;

        S->data[S->top]=item;

       }

       DataType1 Pop1(Stack1 *S)

       {

        if(S->top==-1)

        {

        printf("Pop an empty stack!\n");

        exit(1);

        }

        S->top--;

        return(S->data[S->top+1]);

       }

       DataType1 MathOptr(char ch)

       {

        DataType1 optr;

        optr.op=ch;

        switch(optr.op)

        {

        case'+':

        case'-':

        optr.inputprecedence=1;

        optr.stackprecedence=1;

        break;

        case'*':

        case'/':

        optr.inputprecedence=2;

        optr.stackprecedence=2;

        break;

        case'(':

        optr.inputprecedence=3;

        optr.stackprecedence=-1;

        break;

        case')':

        optr.inputprecedence=0;

        optr.stackprecedence=0;

        break;

        }

        return(optr);

       }

       void Evaluate(Stack *OpndStack,DataType1 optr)

       {

        DataType opnd1,opnd2;

        opnd1=Pop(OpndStack);

        opnd2=Pop(OpndStack);

        switch(optr.op)

        {

        case'+':

        Push(OpndStack,opnd2+opnd1);

        break;

        case'-':

        Push(OpndStack,opnd2-opnd1);

        break;

        case'*':

        Push(OpndStack,opnd2*opnd1);

        break;

        case'/':

        Push(OpndStack,opnd2/opnd1);

        break;

        }

       }

       int isoptr(char ch)

       {

        if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='(')

        return(1);

        return(0);

       }

       void Infix(char *str)

       {

        int i,k,n=strlen(str);

        char ch,numstr[];

        DataType opnd;

        DataType1 optr;

        Stack OpndStack;

        Stack1 OptrStack;

        SetStack(&OpndStack,n);

        SetStack1(&OptrStack,n);

        k=0;

        ch=str[k];

        while(ch!='=')

        if(isdigit(ch)||ch=='.')

        {

        for(i=0;isdigit(ch)||ch=='.';i++)

        {

        numstr[i]=ch;

        k++;

        ch=str[k];

        }

        numstr[i]='\0';

        opnd= atof(numstr);

        Push(&OpndStack,opnd);

        }

        else

        if(isoptr(ch))

        {

        optr=MathOptr(ch);

        while(Peek1(&OptrStack).stackprecedence>=optr.inputprecedence)

        Evaluate(&OpndStack,Pop1(&OptrStack));

        Push1(&OptrStack,optr);

        k++;

        ch=str[k];

        }

        else if(ch==')')

        {

        optr=MathOptr(ch);

        while(Peek1(&OptrStack).stackprecedence>=optr.inputprecedence)

        Evaluate(&OpndStack,Pop1(&OptrStack));

        Pop1(&OptrStack);

        k++;

        ch=str[k];

        }

        while(!StackEmpty1(&OptrStack))

        Evaluate(&OpndStack,Pop1(&OptrStack));

        opnd=Pop(&OpndStack);

        cout<<"你输入表达式的计算结果为"<<endl;

        printf("%-6.2f\n",opnd);

        FreeStack(&OpndStack);

        FreeStack1(&OptrStack);

       }

       void main()

       {

        cout<<"请输入你要计算的表达式,并以“=”号结束。"<<endl;

        char str[];

        gets(str);

        Infix(str);

       =================================================================

       哈哈!给分吧!

公式源码是什么

       公式源码是指包含公式具体内容的源代码。

       源码通常指的是一种编程语言编写的文本文件,包含了程序的逻辑、结构和功能等关键信息。具体到公式源码,就是专门包含了数学公式或科学计算的源代码。在软件开发、数据分析等领域,公式源码是常见的,它用于实现特定的计算逻辑或算法。

       对于公式源码来说,不同的编程语言和软件有不同的编写方式。例如,在某些编程环境中,公式源码可能以文本形式存在,直接描述了数学公式的计算过程。而在其他环境下,公式源码可能嵌入到软件中,以程序的形式实现公式的计算功能。不过不论形式如何,其核心都是为了实现某种计算逻辑或算法。

       另外,公式源码通常需要精确无误,因为任何错误都可能导致计算结果的不准确。因此,编写公式源码时需要非常小心,确保每一步计算和逻辑都是正确的。此外,为了更好地维护和交流代码,编写者通常会使用注释等方式来解释代码的逻辑和功能,这样其他人也能更容易地理解和使用这些源码。

       总的来说,公式源码是包含了特定公式或算法计算逻辑的源代码文件。由于具体的环境和软件的不同,公式源码的形式可能会有所不同。不过无论形式如何,其本质都是为了实现某种特定的计算逻辑或算法。

求一个JAVA计算器源代码。不要按钮的那种。速度。。急用

       import java.awt.*;

       import java.awt.event.*;

       import java.lang.*;

       import javax.swing.*;

       public class Counter extends Frame

       {

       //声明三个面板的布局

       GridLayout gl1,gl2,gl3;

       Panel p0,p1,p2,p3;

       JTextField tf1;

       TextField tf2;

       Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b;

       StringBuffer str;//显示屏所显示的字符串

       double x,y;//x和y都是运算数

       int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"

       static double m;//记忆的数字

       public Counter()

       {

       gl1=new GridLayout(1,4,,0);//实例化三个面板的布局

       gl2=new GridLayout(4,1,0,);

       gl3=new GridLayout(4,5,,);

       tf1=new JTextField();//显示屏

       tf1.setHorizontalAlignment(JTextField.RIGHT);

       tf1.setEnabled(false);

       tf1.setText("0");

       tf2=new TextField();//显示记忆的索引值

       tf2.setEditable(false);

       //实例化所有按钮、设置其前景色并注册监听器

       b0=new Button("Backspace");

       b0.setForeground(Color.red);

       b0.addActionListener(new Bt());

       b1=new Button("CE");

       b1.setForeground(Color.red);

       b1.addActionListener(new Bt());

       b2=new Button("C");

       b2.setForeground(Color.red);

       b2.addActionListener(new Bt());

       b3=new Button("MC");

       b3.setForeground(Color.red);

       b3.addActionListener(new Bt());

       b4=new Button("MR");

       b4.setForeground(Color.red);

       b4.addActionListener(new Bt());

       b5=new Button("MS");

       b5.setForeground(Color.red);

       b5.addActionListener(new Bt());

       b6=new Button("M+");

       b6.setForeground(Color.red);

       b6.addActionListener(new Bt());

       b7=new Button("7");

       b7.setForeground(Color.blue);

       b7.addActionListener(new Bt());

       b8=new Button("8");

       b8.setForeground(Color.blue);

       b8.addActionListener(new Bt());

       b9=new Button("9");

       b9.setForeground(Color.blue);

       b9.addActionListener(new Bt());

       b=new Button("/");

       b.setForeground(Color.red);

       b.addActionListener(new Bt());

       b=new Button("sqrt");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("4");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("5");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("6");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("*");

       b.setForeground(Color.red);

       b.addActionListener(new Bt());

       b=new Button("%");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("1");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("2");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("3");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("-");

       b.setForeground(Color.red);

       b.addActionListener(new Bt());

       b=new Button("1/X");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("0");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("+/-");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button(".");

       b.setForeground(Color.blue);

       b.addActionListener(new Bt());

       b=new Button("+");

       b.setForeground(Color.red);

       b.addActionListener(new Bt());

       b=new Button("=");

       b.setForeground(Color.red);

       b.addActionListener(new Bt());

       //实例化四个面板

       p0=new Panel();

       p1=new Panel();

       p2=new Panel();

       p3=new Panel();

       //创建一个空字符串缓冲区

       str=new StringBuffer();

       //添加面板p0中的组件和设置其在框架中的位置和大小

       p0.add(tf1);

       p0.setBounds(,,,);

       //添加面板p1中的组件和设置其在框架中的位置和大小

       p1.setLayout(gl1);

       p1.add(tf2);

       p1.add(b0);

       p1.add(b1);

       p1.add(b2);

       p1.setBounds(,,,);

       //添加面板p2中的组件并设置其的框架中的位置和大小

       p2.setLayout(gl2);

       p2.add(b3);

       p2.add(b4);

       p2.add(b5);

       p2.add(b6);

       p2.setBounds(,,,);

       //添加面板p3中的组件并设置其在框架中的位置和大小

       p3.setLayout(gl3);//设置p3的布局

       p3.add(b7);

       p3.add(b8);

       p3.add(b9);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.add(b);

       p3.setBounds(,,,);

       //设置框架中的布局为空布局并添加4个面板

       setLayout(null);

       add(p0);

       add(p1);

       add(p2);

       add(p3);

       setResizable(false);//禁止调整框架的大小

       //匿名类关闭窗口

       addWindowListener(new WindowAdapter(){

       public void windowClosing(WindowEvent e1)

       {

       System.exit(0);

       }

       });

       setBackground(Color.lightGray);

       setBounds(,,,);

       setVisible(true);

       }

       //构造监听器

       class Bt implements ActionListener

       {

       public void actionPerformed(ActionEvent e2)

       {

       try{

       if(e2.getSource()==b1)//选择"CE"清零

       {

       tf1.setText("0");//把显示屏清零

       str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数

       }

       else if(e2.getSource()==b2)//选择"C"清零

       {

       tf1.setText("0");//把显示屏清零

       str.setLength(0);

       }

       else if(e2.getSource()==b)//单击"+/-"选择输入的运算数是正数还是负数

       {

       x=Double.parseDouble(tf1.getText().trim());

       tf1.setText(""+(-x));

       }

       else if(e2.getSource()==b)//单击加号按钮获得x的值和z的值并清空y的值

       {

       x=Double.parseDouble(tf1.getText().trim());

       str.setLength(0);//清空缓冲区以便接收新的另一个运算数

       y=0d;

       z=0;

       }

       else if(e2.getSource()==b)//单击减号按钮获得x的值和z的值并清空y的值

       {

       x=Double.parseDouble(tf1.getText().trim());

       str.setLength(0);

       y=0d;

       z=1;

       }

       else if(e2.getSource()==b)//单击乘号按钮获得x的值和z的值并清空y的值

       {

       x=Double.parseDouble(tf1.getText().trim());

       str.setLength(0);

       y=0d;

       z=2;

       }

       else if(e2.getSource()==b)//单击除号按钮获得x的值和z的值并空y的值

       {

       x=Double.parseDouble(tf1.getText().trim());

       str.setLength(0);

       y=0d;

       z=3;

       }

       else if(e2.getSource()==b)//单击等号按钮输出计算结果

       {

       str.setLength(0);

       switch(z)

       {

       case 0 : tf1.setText(""+(x+y));break;

       case 1 : tf1.setText(""+(x-y));break;

       case 2 : tf1.setText(""+(x*y));break;

       case 3 : tf1.setText(""+(x/y));break;

       }

       }

       else if(e2.getSource()==b)//单击"."按钮输入小数

       {

       if(tf1.getText().trim().indexOf(′.′)!=-1)//判断字符串中是否已经包含了小数点

       {

       }

       else//如果没数点有小

       {

       if(tf1.getText().trim().equals("0"))//如果初时显示为0

       {

       str.setLength(0);

       tf1.setText((str.append("0"+e2.getActionCommand())).toString());

       }

       else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作

       {

       }

       else

       {

       tf1.setText(str.append(e2.getActionCommand()).toString());

       }

       }

       y=0d;

       }

       else if(e2.getSource()==b)//求平方根

       {

       x=Double.parseDouble(tf1.getText().trim());

       tf1.setText("数字格式异常");

       if(x<0)

       tf1.setText("负数没有平方根");

       else

       tf1.setText(""+Math.sqrt(x));

       str.setLength(0);

       y=0d;

       }

       else if(e2.getSource()==b)//单击了"%"按钮

       {

       x=Double.parseDouble(tf1.getText().trim());

       tf1.setText(""+(0.*x));

       str.setLength(0);

       y=0d;

       }

       else if(e2.getSource()==b)//单击了"1/X"按钮

       {

       x=Double.parseDouble(tf1.getText().trim());

       if(x==0)

       {

       tf1.setText("除数不能为零");

       }

       else

       {

       tf1.setText(""+(1/x));

       }

       str.setLength(0);

       y=0d;

       }

       else if(e2.getSource()==b3)//MC为清除内存

       {

       m=0d;

       tf2.setText("");

       str.setLength(0);

       }

       else if(e2.getSource()==b4)//MR为重新调用存储的数据

       {

       if(tf2.getText().trim()!="")//有记忆数字

       {

       tf1.setText(""+m);

       }

       }

       else if(e2.getSource()==b5)//MS为存储显示的数据

       {

       m=Double.parseDouble(tf1.getText().trim());

       tf2.setText("M");

       tf1.setText("0");

       str.setLength(0);

       }

       else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR

       {

       m=m+Double.parseDouble(tf1.getText().trim());

       }

       else//选择的是其他的按钮

       {

       if(e2.getSource()==b)//如果选择的是"0"这个数字键

       {

       if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作

       {

       }

       else

       {

       tf1.setText(str.append(e2.getActionCommand()).toString());

       y=Double.parseDouble(tf1.getText().trim());

       }

       }

       else if(e2.getSource()==b0)//选择的是“BackSpace”按钮

       {

       if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零

       {

       if(str.length()!=1)

       {

       tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常

       }

       else

       {

       tf1.setText("0");

       str.setLength(0);

       }

       }

       y=Double.parseDouble(tf1.getText().trim());

       }

       else//其他的数字键

       {

       tf1.setText(str.append(e2.getActionCommand()).toString());

       y=Double.parseDouble(tf1.getText().trim());

       }

       }

       }

       catch(NumberFormatException e){

       tf1.setText("数字格式异常");

       }

       catch(StringIndexOutOfBoundsException e){

       tf1.setText("字符串索引越界");

       }

       }

       }

       public static void main(String args[])

       {

       new Counter();

       }

       }