当前位置:编程学习 > C/C++ >>

六级选项的排版

今天在做整理六级试题的时候,发现选项的排版不整齐不美观。
例如:
61. A) up B) down C) in D) off
62. A) dwell B) rely C) press D) urge
63. A) execution B) distinction C) breakthrough D) process
64. A) paralyzed B) uneducated C) invisible D) sightless
65. A) scans B) enlarges C) sketches D) projects
66. A) behavior B) expression C) movement D) voice
67. A) on B) at C) in D) from
68. A) visual B) printed C) virtual D) spoken
69. A) stride B) trail C) haul D) footprint
70. A) Likewise B) Moreover C) However D) Though
71. A) but B) than C) or D) then
72. A) on B) for C) through D) to
73. A) estimates B) considers C) counts D) determines
74. A) settle B) own C) invest D) retain
75. A) schools B) children C) families D) companies
76. A) models B) modes C) cases D) collections
77. A) producing B) researching C) ascertaining D) assisting
78. A) true B) valuable C) authentic D) pleasant
79. A) after B) when C) before D) as
80. A) occasion B) moment C) sense D) event
 
看起来长短不一,也不对齐。所以我就想把它排好,整理成统一间距。
例如:
61. A) up               B) down             C) in               D) off
62. A) dwell            B) rely             C) press            D) urge
但是选项有很多啊,一题一题的改实在费事,所以编写了一个程序来处理排版。
使用c语言:
[cpp]  
#include <cstdio>  
char line[200];  
int psn[4], stdpsn[] = {5, 25, 45, 65};  
void swap(char &x, char &y)  
{  
    char t;  
    t = x;  
    x = y;  
    y = t;  
}  
void revise(char * a, int p)  
{  
    int i;  
    char t;  
    p = p-1;  
    for(i = p, t = ' '; t; i++)  
    {  
        swap(a[i], t);  
    }  
    a[i] = t;  
}  
int main(){  
    freopen("text.txt", "r", stdin);  
    freopen("out.txt", "w", stdout);  
    int p;  
    while(gets(line)) {  
        int t = 0;  
        for(p = 0; line[p] != '\0'; p++) {  
            if(line[p] == ')')  
                psn[t++] = p;  
        }  
//        printf("%d %d %d %d\n", psn[0], psn[1], psn[2], psn[3]);  
        for(int i = 1; i < 4; i++)  
        {  
            while(psn[i] < stdpsn[i])  
            {  
                revise(line, psn[i]);  
                for(int j = i; j < 4; j++)  
                {  
                    psn[j]++;  
                }  
            }  
        }  
        puts(line);  
    }  
    return 0;  
}  
 
只要把指定格式的原文本复制到txt文件中,运行程序,这样可以迅速生成如下的格式:
61. A) up               B) down             C) in               D) off
62. A) dwell            B) rely             C) press            D) urge
63. A) execution        B) distinction      C) breakthrough     D) process
64. A) paralyzed        B) uneducated       C) invisible        D) sightless
65. A) scans            B) enlarges         C) sketches         D) projects
66. A) behavior         B) expression       C) movement         D) voice
67. A) on               B) at               C) in               D) from
68. A) visual           B) printed          C) virtual          D) spoken
69. A) stride           B) trail            C) haul             D) footprint
70. A) Likewise         B) Moreover         C) However          D) Though
71. A) but              B) than             C) or               D) then
72. A) on               B) for              C) through          D) to
73. A) estimates        B) considers        C) counts           D) determines
74. A) settle           B) own              C) invest           D) retain
75. A) schools          B) children         C) families         D) companies
76. A) models           B) modes            C) cases            D) collections
77. A) producing        B) researching      C) ascertaining     D) assisting
78. A) true             B) valuable         C) authentic        D) pleasant
79. A) after            B) when             C) before           D) as
80. A) occasion         B) moment           C) sense            D) event
个人觉得还是比较方便。
 
算法的分析:
首先确定每个反括号“)”在字符数组中的位置,记录下来,然后不断往其位置前添加空格“ ”,和标准格式的缩进进行对比,直到符合标准格式为止。很简单的思路哦~
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,