半哩吧 关注:9贴子:2,531
  • 9回复贴,共1

发一个编程贴

只看楼主收藏回复



IP属地:上海来自iPhone客户端1楼2016-03-25 10:25回复
    栈的计算#include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    typedef struct{
    char *base;
    char *top;
    int stacksize;
    }SqStack;
    int InitStack(SqStack &S){
    S.base=(char *)malloc(10*sizeof(char));
    S.top=S.base;
    S.stacksize=10;
    return 1;
    }
    int Push(SqStack &S,char e){
    if(S.top-S.base-1>=S.stacksize){
    S.base=(char*)realloc(S.base,(S.stacksize+2)*sizeof(char));
    }
    *S.top=e;
    S.top=S.top+1;
    return 1;
    }
    int GetTop(SqStack S,char &e){
    if(S.top==S.base)return 0;
    e=*(S.top-1);
    return 1;
    }
    int Pop(SqStack &S,char&e){
    if(S.top==S.base)return 0;
    e=*--S.top;
    return 1;
    }
    int Priority(char a,char b,int n){
    if(a=='#'){
    a='0';
    }
    else if(a==')'){
    a='1';
    }
    else if(a=='+'||a=='-'){
    a='2';
    }else if(a=='*'||a=='/'){
    a='3';
    }
    else if(a=='('){
    a='4';
    }
    else
    return 0;
    if(b=='#'){
    b='0';
    }
    else if(b==')'){
    b='1';
    }
    else if(b=='+'||b=='-'){
    b='2';
    }
    else if(b=='*'||b=='/'){
    b='3';
    }
    else if(b=='('){
    b='4';
    }
    else
    return 0;
    if(n==0){
    if(b-a>0||a=='4')
    return 1;
    else
    return 0;}
    else{
    if(b-a>=0||a=='4')
    return 1;
    else
    return 0;
    }
    }
    int Transform_2_suffix(char in[40],char *suf){
    SqStack S;
    static int n=0;
    int i=0,j=0,k;
    char e,a,b;
    InitStack(S);
    Push(S,'#');
    while(in[i]!='#'){
    GetTop(S,e);
    a=e;
    b=in[i];
    k=Priority(a,b,n);
    if(in[i]>='0'&&in[i]<='9'){
    suf[j]=in[i];
    i++;
    j++;
    }
    else if(k==1){
    Push(S,in[i]);
    i++;
    }
    else{
    while(*(S.top-1)!='#'){
    Pop(S,e);
    if(e=='(')break;
    suf[j]=e;
    j++;
    suf[j]=' ';
    j++;
    }
    if(in[i]!=')')
    Push(S,in[i]);
    i++;
    }
    if(j!=0&&!(j!=0&&in[i-1]>='0'&&in[i-1]<='9'&&in[i]>='0'&&in[i]<='9')&&!(suf[j-1]==' ')){
    suf[j]=' ';
    j++;
    }
    }
    while(S.top!=S.base){
    Pop(S,e);
    suf[j]=e;
    j++;
    suf[j]=' ';
    j++;
    }
    suf[j]=0;
    n++;
    return 1;
    }
    int Transform_2_prefix(char in[],char *pre){
    char a[40];
    int i=1,j=0,k;
    strcpy(a,in);
    while(a[i]!='#'){
    i++;}
    i--;
    while(j<i/2){
    k=a[i-j];
    a[i-j]=a[0+j];
    a[0+j]=k;
    j++;
    }
    i=0;
    while(a[i]!=' '){
    if(a[i]=='(')a[i]=')';
    else if(a[i]==')')a[i]='(';
    else;
    i++;
    }
    Transform_2_suffix(a,pre);
    i=j=0;
    while(pre[i]!='#'){
    i++;}
    i-=2;
    while(j<i/2){
    k=pre[i-j];
    pre[i-j]=pre[0+j];
    pre[0+j]=k;
    j++;
    }
    return 1;
    }
    //以上为表达式的转换//
    //以下为表达式的求值//
    typedef struct{
    float *base;
    float *top;
    int stacksize;
    }num_SqStack;
    int num_InitStack(num_SqStack &S){
    S.base=(float *)malloc(10*sizeof(float));
    S.top=S.base;
    S.stacksize=10;
    return 1;
    }
    int num_Push(num_SqStack &S,float e){
    if(S.top-S.base-1>=S.stacksize){
    S.base=(float*)realloc(S.base,(S.stacksize+2)*sizeof(float));
    }
    *S.top=e;
    S.top=S.top+1;
    return 1;
    }
    int num_GetTop(num_SqStack S,float &e){
    if(S.top==S.base)return 0;
    e=*(S.top-1);
    return 1;
    }
    int num_Pop(num_SqStack &S,float&e){
    if(S.top==S.base)return 0;
    e=*--S.top;
    return 1;
    }
    int Transform_2_int(char k,float&e){
    e=k-'0';
    return 1;
    }
    int suffix_operation(char suffix[],float &result){
    num_SqStack S;
    int i=0;
    float e,a,b,z;
    char k;
    num_InitStack(S);
    static int c=0;
    while(suffix[i]!='#'){
    k=suffix[i];
    if(k>='0'&&k<='9'){
    Transform_2_int(k,e);
    num_Push(S,e);
    i++;
    }
    else if(k=='+'||k=='-'||k=='*'||k=='/'){
    num_Pop(S,b);
    num_Pop(S,a);
    if(c==1){
    z=b;
    b=a;
    a=z;
    }
    switch(k){
    case '+' :e=a+b;break;
    case '-' :e=a-b;break;
    case '*' :e=a*b;break;
    case '/' :e=a/b;break;
    default :return 0;
    }
    num_Push(S,e);
    i++;
    }
    else i++;
    }
    num_Pop(S,result);
    c++;
    return 1;
    }
    int prefix_operation(char prefix[],float &result){
    int i=0,j=0;
    char a[40],k;
    strcpy(a,prefix);
    while(a[i]!='#'){
    i++;}
    i--;
    while(j<i/2){
    k=a[i-j];
    a[i-j]=a[0+j];
    a[0+j]=k;
    j++;
    }
    suffix_operation(a,result);
    return 1;
    }
    void main(){
    char infix[40],prefix[40]={0},suffix[40]={0};
    float pre_result,suf_result;
    printf("input:\n");
    gets(infix);
    printf("中缀表达式为:\n");
    printf("%s\n",infix);
    Transform_2_suffix(infix,suffix);
    printf("\n");
    Transform_2_prefix(infix,prefix);
    printf("\n");
    suffix_operation(suffix,suf_result);
    prefix_operation(prefix,pre_result);
    printf("前缀表达式为:\n");
    printf("%s\n",prefix);
    printf("后缀表达式为:\n");
    printf("%s\n",suffix);
    printf("后缀求值为:\n");
    printf("%g\n",suf_result);
    printf("前缀求值为:\n");
    printf("%g\n",pre_result);
    }


    IP属地:上海来自iPhone客户端3楼2016-03-25 10:28
    回复
      2025-06-11 12:34:08
      广告
      #define maxsize 100
      #define OK 1
      #include<stdio.h>
      typedef struct{
      int i,j;
      int e;
      }triple;
      typedef struct{
      triple data[maxsize+1];
      int mu,nu,tu;
      }tsmatrix;
      int zhuanzhi(tsmatrix M,tsmatrix &T){
      int col,p,q,t,num[20],copt[20];
      T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;
      if(T.tu){
      for(col=1;col<=M.tu;++col) num[col]=0;
      for(t=1;t<=M.tu;++t) ++num[M.data[t].j];
      copt[1]=1;
      for(col=2;col<=M.nu;++col) copt[col]=copt[col-1]+num[col-1];
      for(p=1;p<=M.tu;++p) {
      col=M.data[p].j; q=copt[col];
      T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i;
      T.data[q].e=M.data[p].e; ++copt[col];
      }
      }
      return OK;
      }
      void add(tsmatrix M,tsmatrix N,tsmatrix &T){
      int m,n,p=1,q=1,t=1;
      T.mu=M.mu; T.nu=M.nu;
      m=M.tu; n=N.tu;
      while(m--&&n--){
      if(M.data[p].i<N.data[q].i){
      T.data[t].i=M.data[p].i;
      T.data[t].j=M.data[p].j;
      T.data[t].e=M.data[p].e;
      t++;
      p++;
      }
      else if(M.data[p].i>N.data[q].i){
      T.data[t].i=N.data[q].i;
      T.data[t].j=N.data[q].j;
      T.data[t].e=N.data[q].e;
      t++;
      q++;
      }
      else{
      if(M.data[p].j<N.data[q].j){
      T.data[t].i=M.data[p].i;
      T.data[t].j=M.data[p].j;
      T.data[t].e=M.data[p].e;
      t++;
      p++;
      }
      if(M.data[p].j>N.data[q].j){
      T.data[t].i=N.data[q].i;
      T.data[t].j=N.data[q].j;
      T.data[t].e=N.data[q].e;
      t++;
      q++;
      }
      if(M.data[p].j==N.data[q].j){
      T.data[t].i=N.data[q].i;
      T.data[t].j=N.data[q].j;
      T.data[t].e=M.data[p].e+N.data[q].e;
      t++;
      p++;
      q++;
      }
      }
      }
      if(m){
      T.data[t].i=M.data[p].i;
      T.data[t].j=M.data[p].j;
      T.data[t].e=M.data[p].e;
      t++;
      p++;
      m--;
      }
      if(n){
      T.data[t].i=N.data[q].i;
      T.data[t].j=N.data[q].j;
      T.data[t].e=N.data[q].e;
      t++;
      q++;
      n--;
      }
      T.tu=t-1;
      }
      void shuchu(tsmatrix T){
      int m,n,p=1,d;
      for(m=1;m<=T.mu;m++)
      {
      printf("\n");
      for(n=1;n<=T.nu;n++){
      if(T.data[p].i==m&&T.data[p].j==n){
      d=T.data[p].e;
      p++;
      }
      else{
      d=0;
      }
      printf("%3d",d);
      }
      }
      }
      void shuru(tsmatrix &T){
      int m;
      scanf("%d",&T.mu);
      scanf("%d",&T.nu);
      scanf("%d",&T.tu);
      for(m=1;m<=T.tu;m++)
      scanf("%d%d%d",&T.data[m].i,&T.data[m].j,&T.data[m].e);
      }
      void shuchu2(tsmatrix T){
      int m;
      for(m=1;m<=T.tu;m++){
      printf("%3d%3d%3d\n",T.data[m].i,T.data[m].j,T.data[m].e);
      }
      }
      void main()
      {
      tsmatrix S,T,M,N;
      printf("M非零的行数、列数、值");
      shuru(M); zhuanzhi(M,T);
      printf("M转置后的矩阵的三元组\n");
      shuchu2(T);
      printf("M转置后的矩阵\n");
      shuchu(T);printf("\n");
      printf("N非零的行数、列数、值");
      shuru(N);
      add(M,N,S);
      printf("M N相加后的矩阵的三元组\n");
      shuchu2(S);
      printf("M N相加后的矩阵\n");
      shuchu(S);
      }


      IP属地:上海来自iPhone客户端4楼2016-03-28 08:09
      收起回复
        他们目前在我眼中还是天书(-ι_- )


        来自Android客户端5楼2016-03-28 09:49
        回复
          我想要精品贴@莫芮莫吶


          IP属地:上海来自iPhone客户端9楼2016-04-17 19:58
          回复
            一个坑爹的算税的程序 又臭又长(之前发的好像被吞了)
            package hausaufgaben3.pkg19;
            import java.util.Scanner;
            public class Hausaufgaben319 {
            public static void main(String[] args) {
            Scanner input = new Scanner(System.in) ;
            System.out.println("请输入纳税人的以下信息:");
            System.out.print("身份(0-单身纳税人,1-已婚共同纳税人,2-已婚单独纳税人,3-家庭户主纳税人):");
            int shenfen = input.nextInt();
            System.out.print("收入:");
            double shouru = input.nextDouble();
            double shui = 0;
            switch(shenfen){
            case 0:if(shouru<=8350)
            shui = shouru*0.10;
            else if(shouru<33950)
            shui = 8350*0.10+(shouru-8350)*0.15;
            else if(shouru<82250)
            shui = 8350*0.10+(33950-8350)*0.15+(shouru-33950)*0.25;
            else if(shouru<171550)
            shui = 8350*0.10+(33950-8350)*0.15+(82250-33950)*0.25+(shouru-82250)*0.28;
            else if(shouru<372950)
            shui = 8350*0.10+(33950-8350)*0.15+(82250-33950)*0.25+(171550-82250)*0.28+(shouru-171550)*0.33;
            else
            shui = 8350*0.10+(33950-8350)*0.15+(82250-33950)*0.25+(171550-82250)*0.28+(372950-171550)*0.33+(shouru-372950)*0.35;
            break;
            case 1:if(shouru<=16700)
            shui = shouru*0.10;
            else if(shouru<=67900)
            shui = 16700*0.10+(shouru-16700)*0.15;
            else if(shouru<=137050)
            shui = 16700*0.10+(67900-16700)*0.15+(shouru-67900)*0.25;
            else if(shouru<=208850)
            shui = 16700*0.10+(67900-16700)*0.15+(137050-67900)*0.25+(shouru-137050)*0.28;
            else if(shouru<=372950)
            shui = 16700*0.10+(67900-16700)*0.15+(137050-67900)*0.25+(208850-137050)*0.28+(shouru-208850)*0.33;
            else
            shui = 16700*0.10+(67900-16700)*0.15+(137050-67900)*0.25+(208850-137050)*0.28+(372950-208850)*0.33+(shouru-372950)*0.35;
            break;
            case 2:if(shouru<=8350)
            shui = shouru*0.10;
            else if(shouru<=33950)
            shui = 8350*0.10+(shouru-8350)*0.15;
            else if(shouru<=68525)
            shui = 8350*0.10+(33950-8350)*0.15+(shouru-33950)*0.25;
            else if(shouru<=104425)
            shui = 8350*0.10+(33950-8350)*0.15+(68525-33950)*0.25+(shouru-68525)*0.28;
            else if(shouru<=186475)
            shui = 8350*0.10+(33950-8350)*0.15+(68525-33950)*0.25+(104425-68525)*0.28+(shouru-104425)*0.33;
            else
            shui = 8350*0.10+(33950-8350)*0.15+(68525-33950)*0.25+(104425-68525)*0.28+(186475-104425)*0.33+(shouru-186475)*0.35;
            break;
            case 3:if(shouru<=11950)
            shui = shouru*0.10;
            else if(shouru<=45500)
            shui = 11950*0.10+(shouru-11950)*0.15;
            else if(shouru<=117450)
            shui = 11950*0.10+(45500-11950)*0.15+(shouru-45500)*0.25;
            else if(shouru<=190200)
            shui = 11950*0.10+(45500-11950)*0.15+(117450-45500)*0.25+(shouru-117450)*0.28;
            else if(shouru<=372950)
            shui = 11950*0.10+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(shouru-190200)*0.33;
            else
            shui = 11950*0.10+(45500-11950)*0.15+(117450-45500)*0.25+(190200-117450)*0.28+(372950-190200)*0.33+(shouru-372950)*0.35;
            break;
            default: System.out.println("身份错误,请输入0-3!");
            }
            System.out.println("该纳税人应缴所得税:$"+shui);
            }
            }


            11楼2016-04-20 21:41
            回复
              这这这


              IP属地:湖北来自Android客户端12楼2016-04-24 10:06
              回复