- 相关推荐
计算机等级考试三级(C语言)上机考试试题总结
第一种: 产品销售记录问题:
?? /* 已知在文件IN.DAT中存有100个产品销售记录, 每个产品销售记录由产品代码dm(字符型4位), 产品名称mc(字符型10位), 单价dj(整型), 数量sl(整型), 金额je(长整型)五部分组成。 其中:
?? 金额=单价*数量计算得出。函数ReadDat( )读取这100个销售记录并存入结构数组sell中。请编制函数SortDat( ), 其功能要求: 按金额从小到大进行排列, 若金额相等, 则按产品代码从小到大进行排列, 最终排列结果仍存入结构数组sell中。最后main( )函 数调用函数WriteDat()把结果输出到文件OUT1.DAT中。 注意: 部分源程序存放在PROG1.C中。
?? #define MAX 100
?? typedef struct {
?? char dm[5] ; /* 产品代码 */
?? char mc[11] ; /* 产品名称 */
?? int dj ; /* 单价 */
?? int sl ; /* 数量 */
?? long je ; /* 金额 */
?? } PRO ;
?? 函数解析://if((sell[i].je>sell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,
?? sell[j].dm)>0))是此题的精华所在理解它 就理解了这道题的编程道理
?? 首先sell[i].je>sell[j].je如果金额大小成立的话,就条件成立,把两个数据换位置,如果前者不成立,就判定金额是否 相等,如果相等的话,代码还有大小的话,按从小到大的顺序排列。
?? 这种函数的编程方法,适用于有一定基础的编程者,如果是初学者的话建议用以下函数来表达, 此方法是按照题意一部一部来分析的,是比较保守的编程方法。
?? void SortDat()
?? { int i,j;
?? PRO swap;
?? for(i=0; i < MAX-1; i++)
?? { for(j=i+1; j < MAX; j++)
?? if(sell[i].je>sell[j].je)
?? {swap=sell[i]; sell[i]=sell[j]; sell[j]=swap;}
?? else if((sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)>0))
?? {swap=sell[i]; sell[i]=sell[j]; sell[j]=swap;}
?? }
??100个产品销售记录排序其余9题说明
?? 1) in.dat 内容完全相同。
?? 2) 程序也基本雷同,仅排序的要求不一样。
?? 3) 考生应熟悉 strcmp() 函数,否则有的题相当不好处理。
?? 试题变化 :
?? 排序要求:
?? 按金额从小到大进行排列, 若金额相等, 则按产品代码从大到小 进行排列 相应语句:
?? if((sell[i].je>sell[j].je)||( (sell[i].je==sell[j].je) && (strcmp(sell[i].dm, sell[j].dm) < 0)))
?? 排序要求: 按金额从大到小进行排列, 若金额相等, 则按产品代码从小到大 进行排列 相应语句: if((sell[i].je < sell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm, sell[j].dm)>0))
?? 排序要求:
?? 按金额从大到小进行排列, 若金额相等, 则按产品代码从大到小 进行排列 相应语句:
?? if((sell[i].je < sell[j].je)||(sell[i].je==sell[j].je)&&(strcmp(sell[i].dm,sell[j].dm)<0))
?? 排序要求:
?? 按产品名称从小到大进行排列, 若产品名称相同, 则按金额从小 到大进行排列
?? if((strcmp(sell[i].mc, sell[j].mc)>0)||(strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je>sell[j].je))
?? 排序要求:
?? 按产品名称从小到大进行排列, 若产品名称相同, 则按金额从大 到小进行排列
?? if(strcmp(sell[i].mc, sell[j].mc)>0 || (strcmp(sell[i].mc, sell[j].mc)==0)&&(sell[i].je < sell[j].je))
?? 排序要求:
?? 按产品名称从大到小进行排列, 若产品名称相同, 则按金额从小 到大进行排列
?? if((strcmp(sell[i].mc, sell[j].mc) < 0) || (strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je>sell[j].je))
?? 排序要求:
?? 按产品名称从大到小进行排列, 若产品名称相同, 则按金额从大 到小进行排列
?? if((strcmp(sell[i].mc, sell[j].mc) < 0)|| (strcmp(sell[i].mc, sell[j].mc)==0)&&(sell[i].je < sell[j].je))
?? 排序要求:
?? 按产品代码从小到大进行排列, 若产品代码相同, 则按金额从小 到大进行排列
?? if((strcmp(sell[i].dm, sell[j].dm)>0)||(strcmp(sell[i].dm,sell[j].dm)==0)&&(sell[i].je>sell[j].je
??
??第二类习题 300个四位数问题:
?? 300个四位数问题(此类共10题) 本类10题中,五题产生数组B,并对B按一定要求排序;
?? 其余五题是求平均值。我把它们分成两组五题来讨论。 以下为产生数组B之题一:
?? 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数 readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功 能是: 求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数大于零的个数cnt, 再把所有满足此条件的四位数依次 存入数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。 最后main( )函数调用写函数writeDat()把数组b中的数输出到文 件OUT.DAT。
?? 例如: 1239, 9-1-2-3>0, 则该数满足条件存入数组b中, 且个数cnt=cnt+1。
?? 8129, 9-8-1-2<0, 则该数不满足条件忽略。 程序中已定义数组: a[300], b[300], 已定义变量: cnt
?? #include
?? int a[300], b[300], cnt=0 ;
?? jsvalue()
?? {/**/
?? int i,j,g,s,b,q,t;
?? for(i=0; i < 300; i++)
?? {g=a[i]%10; /*个位的数字*/
?? s=a[i]/10%10; /*十位的数字*/
?? b=a[i]/100%10; /*百位的数字*/
?? q=a[i]/1000; /*千位的数字*/
?? if(g-q-b-s>0)
?? b[cnt++]=a[i];
?? for(i=0; i < cnt-1; i++)
?? for(j=i+1; j < cnt; j++)
?? if(b[i] < b[j])
?? { t=b[i]; b[i]=b[j]; b[j]=t; }
?? }
?? /**/
?? }
?? 相似题 求出所有这些四位数是素数的个数cnt, 再把所有满足此 条件的四位数依次存入数组b中, 然后对数组b的四位数按从小到 大的顺序进行排序。
?? jsvalue()
?? { int i,j,t;
?? for(i=0; i < 300; i++)
?? { for(j=2;j?? if(a[i]%j==0) break;
?? if(j==a[i])
?? b[cnt++]=a[i];
?? for(i=0; i < cnt-1; i++) /*排序*/
?? for(j=i+1; j < cnt; j++)
?? if(b[i] < b[j])
?? { t=b[i]; b[i]=b[j]; b[j]=t; }
?? }
?? 要求: 求出千位数上的数减百位数上的数减十位数上的数减个位 数上的数大于零的个数cnt, 再把所有满足此条件的四位数依次 存入数组b中, 然后对数组b的四位数按从小到大的顺序进行排序。
?? if(q-b-s-g>0)
?? b[cnt++]=a[i];
?? 要求: 求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt, 再把所有满足此条件的四位数依次存入 数组b中, 然后对数组b的四位数按从大到小的顺序进行排序。
?? if((q+b)==(s+g))
?? b[cnt++]=a[i];
??
??
??类型题三:300个数满足条件的求平均值
??
??求满足条件的数的个数、平均值及不满足条件的数的平均 值等,此类也是五题。本处仅给出一个全题,其余题只给出不同 之处。
?? 已知数据文件IN.DAT中存有300个四位数, 并已调用读函数 readDat()把这些数存入数组a中, 请编制一函数jsvalue(),其功 能是: 求出千位数上的数减百位数上的数减十位数上的数减个位 数上的数大于零的个数cnt, 再求出所有满足此条件的四位数平 均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。最后 main()函数调用写函数writeDat()把结果cnt,pjz1,pjz2输出到 OUT.DAT文件。
?? 例如: 9123, 9-1-2-3>0, 则该数满足条件计算平均值pjz1, 且个数cnt=cnt+1。 9812, 9-8-1-2<0, 则该数不满足条件计算平均值pjz2。 程序中已定义数组: a[300], 已定义变量: cnt,pjz1,pjz2
??
?? int a[300], cnt=0 ;
?? double pjz1=0.0, pjz2=0.0 ;
?? jsvalue()
?? {/**/
?? int i,g,s,b,q;
?? for(i=0; i < 300; i++)
?? {g=a[i]%10; /*个位的数字*/
?? s=a[i]/10%10; /*十位的数字*/
?? b=a[i]/100%10; /*百位的数字*/
?? q=a[i]/1000; /*千位的数字*/
?? if(g-q-b-s>0)
?? { cnt++; pjz1+=a[i]; }
?? else pjz2+=a[i];
?? if(cnt) pjz1/=cnt;
?? if(cnt<300) pjz2/=300-cnt;
?? /**/
?? }
?? 之二 要求:
?? 求出千位数上的数加百位数上的数等于十位数上的数加个 位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。
?? if((q+b)==(g+s))
?? { cnt++; pjz1+=a[i]; }
?? else pjz2+=a[i];
?? 之三 要求:
?? 求出个位数上的数减千位数上的数减百位数上的数减十位 数上的数小于零的个数cnt, 再求出所有满足此条件的四位数平 均值pjz1, 以及所有不满足此条件的四位数平均值pjz2。
?? if(g-q-b-s<0)
?? { cnt++; pjz1+=a[i]; }
?? else pjz2+=a[i];
?? 之四 要求:
?? 求出所有这些四位数是素数的个数cnt, 再求出所有满足 此条件的四位数平均z值pjz1, 以及所有不满足此条件的四位数平 均值pjz2。
?? jsvalue()
?? {/**/
?? int i,j,t;
?? for(i=0; i < 300; i++)
?? { for(j=2;j?? if(a[i]%j==0)
?? {pjz2+=a[i];
?? break;}
?? if(j==a[i])
?? {cnt++; pjz1+=a[i];}
?? if(cnt) pjz1/=cnt;
?? if(cnt<300) pjz2/=300-cnt;
?? }
??
?? 之五 要求:
?? 求出千位数上的数加个位数上的数等于百位数上的数加十 位数上的数的个数cnt, 再求出所有满足此条件的四位数平均值 pjz1, 以及所有不满足此条件的四位数平均值pjz2。
?? if((q+g)==(b+s))
?? { cnt++; pjz1+=a[i]; }
?? else pjz2+=a[i];
?? code:
?? /*
??类型题四: 200个四位数题:
??
?? 已知数据文件IN.DAT中存有200个四位数, 并已调用读函数 readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其 功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新
?? 十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 个十位数ab>cd, ab必须是偶数且能被5整除, cd必须是奇数,同 时两个新数的十位数字均不为零,则将满足此条件的四位数按从 大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的 个数cnt。 程序中已定义数组: a[200], b[200], 已定义变量: cnt
?? #include
?? #define MAX 200
?? int a[MAX], b[MAX], cnt = 0 ;
?? void jsVal()
?? {/**/
?? int i,j,k,A,B,C,D;
?? for(i=0; i < MAX; i++)
?? { A=a[i]/1000; B=a[i]/10%10; C=a[i]%10; D=a[i]/100%10;
?? if(A&&C&&(B==0)&&(D%2)&&(10*A>10*C+D))
?? b[cnt++]=a[i];
?? }
?? for(i=0; i < cnt-1; i++)
?? { k=i;
?? for(j=i+1; j < cnt; j++)
?? if(b[k] < b[j]) k=j;
?? if(k!=i) {A=b[k]; b[k]=b[i]; b[i]=A;}
?? }
?? /**/
?? }
??200个四位数题之其余九题说明
?? 之二 要求:
?? 把千位数字和十位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的千位数字,新十位数的个位数字是 原四位数的十位数字), 以及把个位数字和百位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的个位数字, 新十 位数的个位数字是原四位数的百位数字), 如果新组成的两个十
?? 位数均是素数且新数的十位数字均不为零,则将满足此条件的四 位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的 四位数的个数cnt。
??
?? 要求: 把个位数字和千位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的个位数字,新十位数的个位数字是 原四位数的千位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十 位数必须是一个奇数,另一个为偶数并且两个十位数中至少有一 个数能被17整除,同时两个新数的十位数字均不为零, 则将满足 此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足
?? 上述条件的四位数的个数cnt。
?? 之四 要求:
?? )把这些数存入数组a中,请考生编制一函数jsVal(),其 功能是: 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字 是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两 个十位数ab-cd>=10且ab-cd<=20且两个数均是偶数,同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的 顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。
?? 之五 要求: 如果四位数各位上的数字均是0或2或4或6或8, 则统计 出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存 入数组b中。
?? 之六 要求:
?? 把千位数字和个位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的千位数字,新十位数的个位数字是 原四位数的个位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十
?? 位数均是奇数并且两个十位数中至少有一个数能被5整除, 同时 两个新数的十位数字均不为零,则将满足此条件的四位数按从大 到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个 数cnt。
?? 之七 要求:
?? 把个位数字和千位数字重新组成一个新的十位数(新十 位数的十位数字是原四位数的个位数字,新十位数的个位数字是 原四位数的千位数字), 以及把百位数字和十位数字组成另一个 新的十位数(新十位数的十位数字是原四位数的百位数字, 新十 位数的个位数字是原四位数的十位数字), 如果新组成的两个十
?? 位数均是偶数并且两个十位数中至少有一个数能被9整除, 同时 两个新数的十位数字均不为零,则将满足此条件的四位数按从大 到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个 数cnt。
?? 之八 要求:
?? 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字 是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两
?? 个十位数ab 同时两个新数的十位数字均不为零,则将满足此条件的四位数按 从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数 的个数cnt。
?? 之九 要求:
?? 如果四位数各位上的数字均是奇数,则统计出满足此条 件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。
?? 之十 要求:
?? 把千位数字和十位数字重新组成一个新的十位数ab(新 十位数的十位数字是原四位数的千位数字,新十位数的个位数字 是原四位数的十位数字), 以及把个位数字和百位数字组成另一 个新的十位数cd (新十位数的十位数字是原四位数的个位数字, 新十位数的个位数字是原四位数的百位数字), 如果新组成的两
?? 个十位数ab-cd>=0且ab-cd<=10且两个数均是奇数, 同时两个新 数的十位数字均不为零,则将满足此条件的四位数按从大到小的 顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt。
??
??
?? 类型题五
?? 已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整 数, 函数ReadDat( )读取这若干个正整数并存入数组xx中。请编 制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个正整数totNum; 2. 求这些数右移1位后, 产生的新数是奇数的数 的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平 均值totPjz。最后main()函数调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。
?? #define MAXNUM 200
?? int xx[MAXNUM] ;
?? int totNum = 0 ; /* 文件IN.DAT中共有多少个正整数 */
?? int totCnt = 0 ; /* 符合条件的正整数的个数 */
?? double totPjz = 0.0 ; /* 平均值 */
?? void Calvalue(void)
?? {/**/
?? for(; xx[totNum]; totNum++)
?? if((xx[totNum]>>1)%2)
?? { totCnt++; totPjz+=xx[totNum];}
?? if(totCnt) totPjz/=totCnt;
?? /**/
?? }
??
?? 类似题一、编制函数Calvalue( ), 其功能要求: 1. 求出这文件中共有多少个 正整数totNum; 2. 求这些数右移1位后, 产生的新数是偶数的数 的个数totCnt, 以及满足此条件的这些数(右移前的值)的算术平 均值totPjz。
?? void Calvalue(void)
?? {/**/
?? for(; xx[totNum]>0; totNum++)
?? if((xx[totNum]>>1)%2==0)
?? { totCnt++; totPjz+=xx[totNum]; }
?? if(totCnt) totPjz/=totCnt;
?? /**/
??
??类型题六
??
?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数SortCharD( ), 其函数的功能是: 以行为单位对字符按从大到小的顺序进行排序, 排序后的结果仍按行
?? 重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把 结果xx输出到文件OUT2.DAT中。 例: 原文: dAe,BfC.
?? CCbbAA
?? 结果: fedCBA.,
?? bbCCAA
?? char xx[50][80] ;
?? int maxline = 0 ; /* 文章的总行数 */
?? void SortCharD(void)
?? {/**/
?? int i,j,k,m,n; char ch;
?? for(i=0; i < maxline; i++)
?? { j=strlen(xx[i]); /*求出每行的字符个数*/
?? for(m=0; m < j-1; m++)
?? { for(n=m+1; n < j; n++)
?? if(xx[i][m] < xx[i][n])
?? { ch=xx[i][m]; xx[i][m]=xx[i][n]; xx[i][n]=ch; }
?? }
?? }
?? /**/
?? }
?? 处理字符串类型题之二
?? code:
?? /* 请编制函数ConvertCharA(), 其函数的功能是: 以行为单位 把字符串中的所有小写字母改写成该字母的下一 个字母, 如果是字母z, 则改写成字母a,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。
?? void ConvertCharA(void)
?? {/**/
?? int i,j;
?? for(i=0; i < maxline; i++)
?? for(j=0; j < strlen(xx[i]); j++)
?? if(xx[i][j]==#39;z#39;) xx[i][j]=#39;a#39;; /*如果是z的话,就变为a*/
?? else if((xx[i][j]>=#39;a#39;)&&(xx[i][j]<#39;z#39;))
?? xx[i][j]++;/*如果不是z的话就把字符向
?? 后移动一个。*/
?? /**/
?? }
??
?? 字符串类型题之三
?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数SortCharA( ), 其函数的功能是: 以行为单位对字符按从小到大的顺序进行排序, 排序后的结果仍按行 重新存入字符串数组xx中。
?? void SortCharD(void)
?? {/**/
?? int i,j,k,m,n; char ch;
?? for(i=0; i < maxline; i++)
?? { j=strlen(xx[i]); /*求出每行的字符个数*/
?? for(m=0; m < j-1; m++)
?? { for(n=m+1; n < j; n++)
?? if(xx[i][m] > xx[i][n])
?? { ch=xx[i][m]; xx[i][m]=xx[i][n]; xx[i][n]=ch; }
?? }
?? }
??
??字符串处理之四
?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数StrCharJL( ), 其函数的功能是: 以 行为单位把字符串中的所有字符的ASCII值左移4位, 如果左移后, 其字符的ASCII值小于等于32或大于100, 则原字符保持不变, 否则就把左移后的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字符串对应的位置上,之后把已处理的字符串仍按行重新
?? 存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果 xx输出到OUT7.DAT文件中。
?? void StrCharJL(void)
?? {/**/
?? int i,j; char m;
?? /****此题的关键是定义 char m ,如果定义为int c的话就会出现错误
?? for(i=0; i < maxline; i++)
?? for(j=0; j < strlen(xx[i]); j++)
?? { m=xx[i][j]<<4;
?? if((m>32)&&(m<=100))
?? xx[i][j]+=m;
?? }
?? }
?? 字符串处理之五 :
?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到 字符串数组xx中; 请编制函数StrCharJR( ), 其函数的功能是: 以行为单位把字符串中的所有字符的ASCII值右移4位, 然后把右移后 的字符ASCII值再加上原字符的ASCII值, 得到新的字符仍存入原字符串对应的位置上,之后把已处理的字符串仍按行重新存入字符串 数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文 件OUT8.DAT中。
?? void StrCharJR(void)
?? {/**/
?? int i,j;
?? for(i=0; i
?? for(j=0; j
?? xx[i][j]+=xx[i][j]>>4;
?? /**/
?? }
??字符串处理之六:
??
?? 函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入 到字符串数组xx中; 请编制函数ConvertCharD(), 其函数的功能 是: 以行为单位把字符串中的所有小写字母改写成该字母的上一 个字母, 如果是字母a, 则改写成字母z,大写字母和其它字符保持不变。把已处理的字符串仍按行重新存入字符串数组xx中。
?? void ConvertCharD(void)
?? {/**/
?? int i,j;
?? for(i=0; i < maxline; i++)
?? for(j=0; j < strlen(xx[i]); j++)
?? if(xx[i][j]==#39;a#39;) xx[i][j]=#39;z#39;;
?? else if(islower(xx[i][j])) xx[i][j]-=1;
?? /**/
?? } http://jianlimoban.c321.cn/
【计算机等级考试三级C语言上机考试试题总结】相关文章:
2004年全国计算机等级考试三级C语言全真上机试题解析08-10
计算机等级考试三级网络技术上机模拟试题08-02
计算机二级考试C++上机考试试题08-23
2006年9月全国计算机等级考试三级PC技术上机试题07-23
2007年4月全国计算机等级考试三级PC技术上机试题07-23
全国计算机等级考试二级C语言笔试试题07-17
计算机等级考试一级B上机试题:Windows字处理07-23
计算机等级考试一级B上机试题:字表处理题07-23