首頁>Club>
6
回覆列表
  • 1 # 卓越forever

    透過二維陣列的方式進行輸出,程式碼如下:#include<stdio.h>#include<string.h>char S[100][1000]={" "};//宣告表為全域性變數int s1=0;void chart(int n,int a[],int m);int main(){int n;int M1[40]={0},M2[40]={0},M3[40][100]={0};int i,j,k,k1,k2,max=0,col,l;char s[30][1000];scanf("%d",&n);getchar();//注意,必須得有這個來接收回車符//獲得表格資料for(i=0;i<n;i++)gets(s[i]);//求最大列數for(i=0;i<n;i++){l=strlen(s[i]);for(j=0;j<l;j++){if(s[i][j]==",")M1[i]++;}if(M1[i]>max){max=M1[i];}}col=++max;//求每列最大寬度 //1.先求每個單元的長度,賦給M3[i][j]中for(i=0;i<n;i++){l=strlen(s[i]);k=0;for(j=0;j<l;j++){if(s[i][j]!=","){M3[i][k]++;}if(s[i][j]==",")k++;} //for2}//for1//2.找每列最大的賦予M2[]for(j=0;j<col;j++) {max=0;for(i=0;i<n;i++){if(M3[i][j]>max)max=M3[i][j];}M2[j]=max;}//表格chart(n,M2,col);//輸入資料for(i=0;i<n;i++){k1=0;k2=0;k=0;l=strlen(s[i]);for(j=0;j<l;j++){S[2*i+1][k2+1]=s[i][j];if(s[i][j+1]==","){k1=k1+M2[k]+1;k2=k1;k++;j++; }elsek2++;}}//輸出表格for(i=0;i<=2*n;i++){for(j=0;j<s1;j++)printf("%c",S[i][j]);printf("\n");}return 0;}void chart(int n,int a[],int m)//行數 每列的最大長度陣列{int i,j,k;int s;s1=m+1;for(i=0;i<m;i++)s1+=a[i];for(i=0;i<=2*n;i++) {//輸出奇數行if(i%2==0){s=0;k=0;for(j=0;j<s1;j++){if(j==s){S[i][j]="+"; s+=a[k];s++;k++;}elseS[i][j]="-";}//for} //if //輸出偶數行else{s=0;k=0;for(j=0;j<s1;j++){if(j==s){S[i][j]="|"; s+=a[k];s++;k++;}}}} //for}

  • 2 # pietr49411

    能在詳細點嗎?例如┌┍┎┏┑┐┒┓─├┝┞┟┠┡┢┣┬┭┯┮┰┱┲┳┼┽┾┿╁╀╂╃如果用的vc的話可以是字元輸出中加入以上字元可以拼表格。如果是視窗化程式設計就容易了,可以用MFC

  • 中秋節和大豐收的關聯?
  • 泡麵吃多了想吐怎麼辦?