《四川省计算机等级考试二级C语言机试题答案.pdf》由会员分享,可在线阅读,更多相关《四川省计算机等级考试二级C语言机试题答案.pdf(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、四 川 省 计 算 机 等 级 考 试 二 级 C语 言 机 试 题(第 十 八 次)18-1套 参 考 答 案:一、程 序 调 试 题(文 件 名 testl-l.c)(4 0分)#include#include int fun(int m);int sum,n=0,j,yes;while(m=2)&(n10)yes=0;for(j=2;j=m/2;j+)if(m%j=0)yes=0;break;)if(yes=l)sum+=m;n+;m;)return;/*去 掉 分 号(;)*/*改 为 sum=0*/*改 为(n10)*/*改 为 yes=l*/*改 为 yes=l*/*改 为 ret
2、urn sum*/main()int m;clrscr();scanf(%d,m);/*改 为&m*/printf(%dn,fun(m);)评 分 标 准:每 改 对 一 处 得 5 分,运 行 结 果 正 确 得 5 分。二、编 写 程 序(程 序 文 件 取 名 为 testl-2.c)(6 0分)评 分 标 准:1.文 件 打 开 与 关 闭 正 确 1 0分 2.文 件 读 写 正 确 1 0分 3.函 数 及 函 数 调 用 正 确 2 0分 4.屏 幕 上 显 示 结 果 正 确 1 0分 5.T estl-2.txt中 结 果 正 确 1 0分 参 考 程 序:#include#
3、include#define M 10int aMM=0;fm(int aM,int m)intj,k;for(j=0;jm;j+)for(k=0;km;k+)aUk=(k+l)*a+l);)main()int i,j,n;FILE*fp;fp=fopen(,testl-2.txtn,wn);clrscr();printf(nEnter n:”);scanf(M%dH,&n);fm(a,n);for(i=0;in;i+)for(j=0;jn;j+)printf(%4d,aij);fprintf(fp,%4d,ai|j);)printf(n);fprintf(fp,n);fclose(fp);四
4、 川 省 计 算 机 等 级 考 试 二 级 C 语 言 机 试 题(第 十 九 次)19-1套 参 考 答 案:一、程 序 调 试 题(文 件 名 testl-l.c)(4 0分)#include void fun(long sjong t)long sl=10;*t=s%10;whilego);s=s/100;t=s%10*sl+t;sl=sl*100;)void main()long s,t;/*改 为 long*t*/*改 为 while(s0)*/*改 为*t=s%10*sl+*t*/*改 为 sl=sl*10*/printf(nnPlease enter integer s:n);
5、scanf(n%ldn,&s);if(s0)fun(s,&t);printf(nThe result is:%ldnn,t);else printf(ns value eiror.nu);评 分 标 准:每 改 对 一 处 得 6 分,第 二 处 有 两 个 错 误,结 果 正 确 得 1 0分。二、编 写 程 序(程 序 文 件 取 名 为 testl-2.c)(6 0分)评 分 标 准:1.文 件 打 开、关 闭 正 确 1 0分 2.屏 幕 结 果 输 出 正 确 5 分 3.文 件 结 果 输 出 正 确 5 分 4.数 据 输 入 方 法 正 确 5 分 5.排 号 正 确 5 分
6、6.数 据 初 始 化 正 确 5 分 7.数 据 处 理 正 确 2 0分 8.找 出 结 果 正 确 5 分 参 考 程 序:#include#define nmax 50void main()int i,k,m,n,numnmax,*p;FILE*fp;printf(Please enter the n:H);scanf(H%dH,&n);p=num;for(i=0;in;i+)*(p+i)=i+l;i=0;k=0;m=0;while(mn-1)if(*(p+i)!=O)k+;if(k=5)*(p+i)=O;k=O;m+;i+;if(i=n)i=0;)while(*p=O)p+;fp=f
7、open(test l-2.dat,w);printf(%d number is a last ont.n,*p);fprintf(fp,%d number is a last ont.n,*p);fclose(fp);)自 己 写 的#include stdio.h”#include stdlib.h”#define MAX 50void main()(int aM AX,n,i,sh,t=0;FILE*fp;printf(input people number:);scanf(n%dH,&n);sh=n;for(i=0;i l)(for(i=0;in;i+)if(ai=O)(t=(t+l)
8、%5;if(t=O)(a i=-l;sh-=l;)for(i=0;in;i+)(if(ai=O)(printf(n%d num ber is a last o n t.n i+l);break;fp=fopen(ntest 1-2.datH,n w*);fprintf(fp,n%d number is a last ont.nn,i+l);fclose(fp);)19-2套 参 考 答 案:一、程 序 调 试 题(文 件 名 test2-l.c)(4 0分)#include#include void fun(char*s,char*tl,char*t2,char*w)char*p,*r,*pl
9、ace;strcpy(w,s);place=NULL;while(*w)r=t2;p=w;r=tl;while(r)/*改 为*r*/if(*r=*p)/*改 为*/r+;p+;else continue;/*改 为 break*/if(*r=l)/*改 为 0*/place=w;W+;)if(place!=NULL)while(&r)/*改 为*r*/*place=*r,place+,r+;)main()chars100,tll00,t2100,wl00;printf(nPlease enter string s:);scanf(n%ss);printf(nnPlease enter sub
10、string tl:);scanf(n%sn,tl);printf(HnPlease enter substring t2:);scanf(”s”,;if(strlen(t 1)=strlen(t2)fun(s,tl,t2,w);printf(nnThe result is:%sn,w);)else printf(nError:strlen(tl)!=strlen(t2)nn);评 分 标 准:每 改 对 一 处 得 6 分,结 果 正 确 得 10分。二、编 写 程 序(程 序 文 件 取 名 为 test2-2.c)(6 0分)评 分 标 准:1.文 件 打 开、关 闭 正 确 10分 2
11、.屏 幕 结 果 输 出 正 确 5 分 3.文 件 结 果 输 出 正 确 5 分4.数 据 输 入 方 法 正 确 5 分 5.函 数 调 用 和 函 数 参 数 定 义 方 法 正 确 1 0分 6.下 标 为 奇 数 位 置 的 判 断 正 确 1 0分 7.字 母 转 换 正 确 1 0分 8.命 令 行 参 数 使 用 正 确 5 分 参 考 程 序:#include void fun(char*st)char*p=st;int i=0;while(*p)if(i%2)&(*p=*a,&*p=z,)*p-=32;p+;i+;)void main(int argc,char*argv
12、)char tt51;FILE*wf;if(argc!=2)printf(nnToo few parameter!nn);exit(O);)wf=fopen(argv 1,nwn);printfCTlease enter an charachter string within 50 characters);gets(tt);fun(tt);puts(tt);fprintf(wf,t=%s,tt);fclose(wf);)19-3套 参 考 答 案:一、程 序 调 试 题(文 件 名 test3 l.c)(4 0分)#include“stdio.h#include string.h”char*i
13、nsert(char*si,char*s2)int lenl,len2;char p,q;lenl=strlen(sl);Ien2=strlen(s2);q=sl;p=sl+lenl;while(*sl!=,0,IL*sl!=*s2)*sl+;if(*sl!=,0,)for(;p=sl;n+)*(p+len2)=*p;/*改 为*p,*q*/*改 为 lenl-1*/*改 为&*/*改 为*sl+*/*改 为 p-*/while(*s2)*sl+=*s2+;*(q+lenl+len2)=,0,;return p;/*改 为 return q*/)void main()char s tr 1 1
14、00,s tr2 100,*add;printf(Input a string:nn);gets(strl);printf(nlnput the string do you want to insert:n);gets(str2);add=insert(strl,str2);printf(noutput is:%sn,add);评 分 标 准:每 改 对 一 处 得 5 分,结 果 正 确 得 10分。二、编 写 程 序(程 序 文 件 取 名 为 test3-2.c)(6 0分)评 分 标 准:1.字 符 串 输 入 正 确 5 分 2.函 数 及 函 数 调 用 正 确 10分 3.替 换
15、 位 置 定 义 正 确 10分 4.字 符 串 替 换 正 确 15分 5.屏 幕 上 显 示 结 果 正 确 5 分 6.文 件 打 开、关 闭 正 确 5 分 7.文 件 写 入 正 确 5 分 8.返 回 结 果 正 确 5 分参 考 程 序:#include#include char*strrep(char*sl,char*s2,int n)charp=sl+n;q=s2;while(*q)*p+=*q+;*p=,0,;return si;)main()char a100,b100,*str;int n,len;FILE*fp;fp=fopen(,test3-2.dat,w);pri
16、ntf(HInput string a and b:nn);gets(a);gets(b);len=strlen(a);printf(nInput number:n);scanf(n%dn,&n);if(n=O)&(n=len)str=strrep(a,b,n);printf(nOutput is:%snH,str);fprintf(fp,Output is:%snn,str);else printf(nn value is error.nn);fprintf(fp,Hn value is errorAn);fclose(fp);四 川 省 计 算 机 等 级 考 试 二 级 C 语 言 机
17、试 题(第 二 十 次)20-1套 参 考 答 案:-、程 序 调 试 题(文 件 名 testl-l.c)(4 0分)#include int len_max(char*strp)int max=0,len=0;while(strp!士 0)while(*strp=,A,&*strp=,a,&*strp-z,)/*改 为 I I*/len+;_/*增 加 一 行 语 句:strp+;*/if(lenmax*/len=0;strp+;return;/*改 为 return max*/void main()char str100;int maxlen;printf(nInput a senten
18、ce:n);gets(str);printf(,maxlen=%dn,maxlen);maxlen=len_max(&str);/*改 为 str*/二、编 写 程 序(程 序 文 件 取 名 为 testl-2.c)(6 0分)评 分 标 准:1.文 件 打 开、关 闭 正 确 2.屏 幕 结 果 输 出 正 确 3.文 件 结 果 输 出 正 确 4.函 数 定 义、形 参 书 写 正 确 5.正 确 定 义 实 参 二 维 数 组,并 能 正 确 调 用 c r e a t函 数 6.函 数 中 对 二 维 数 组 的 处 理 正 确 参 考 程 序:#include void crea
19、t(int a1010,int n)int i,j;for(i=0;in;i+)for(j=0;j=i;j+)aij=i*4+j*2+l;)main()inta1010,m,ij;FILE*fp;fp=fopen(,testl-2.dat,nwn);printf(nInput m(l10):“);scanf(n%dn,&m);creat(a,m);for(i=0;im;i+)for(j=0;j=i;j+)printf(%5d,aij);fprintf(fp,%5d,ai|j);printf(n);fprintf(fp,n);)fclose(fp);)20-2套 参 考 答 案:一、程 序 调
20、试 题(文 件 名 test2-l.c)(4 0分)#include/*增 加 一 行 内 容:*s=0;*/void fun(int m,char s)/*改 为*s*/int k,i=10;while(m!=0)k=m/i;/*改 为 m%i*/*s=k+O;/*改 为 O*/s+;m=(m-k)/i;)void main()int x,i;char s10;scanf(%d,&x);if(x0)fun(x,s);for(i=0;_ s_;i+)/*改 为 si*/printf(%c*,si);)else printf(x value errorn);)二、编 写 程 序(程 序 文 件
21、取 名 为 test2-2.c)(6 0分)评 分 标 准:1.文 件 打 开 和 关 闭 正 确 2.串 的 读 入 正 确 3.串 的 排 序 正 确 4.文 件 位 置 指 针 定 位 正 确 5.屏 幕 输 出 和 文 件 输 出 正 确 6.程 序 结 构 合 理 参 考 程 序:#include#include main()char str380,string80;int i,j,k;FILE*fp;fp=fopen(ntest2-2.txtV,r+n);for(i=0;i3;i+)fgets(stri,80,fp);printf(nThe strings:nn);for(i=0;
22、i3;i+)printf(%sH,stri);for(i=0;i2;i+)k=i;for(j=i+l;j 0)k=j;if(k!=i)strcpy(string,strk);strcpy(strk,stri);strcpy(stri,string);)printf(nSorted result:nn);fseek(fp,0,2);for(i=0;i3;i+)printf(u%sstri);fclose(fp);20-3套 参 考 答 案:一、程 序 调 试 题(文 件 名 test3-Lc)(4 0分)#include#define M 2#define N 3#define P 2void
23、fun(int aM1fNLbNlPl,cMP)/*改 为 int bNP,int cMP*/int i,j,k;for(i=0;i=P;i+)/*改 为 iP*/for(j=0;jP;j+)cij=0;for(k=0;kn;k+)/*改 为 kN*/*改 为+=*/)void main()int a23=12,3),4,5,6);intb32=l,2,3,4,5,6;intc22,i,j;fun(*a,*b,*c);/*改 为 fun(a,b,c)*/for(i=0;i2;i+)for(j=0;j2;j+)printf(%dprintf(n);)二、编 写 程 序(程 序 文 件 取 名 为
24、 test3-2.c)(6 0分)评 分 标 准:1.文 件 打 开 和 关 闭 正 确 2.函 数 定 义、调 用 和 参 数 使 用 正 确 3.屏 幕 输 出 和 文 件 输 出 正 确 4.递 归 调 用 方 法 正 确 5.命 令 行 参 数 使 用 正 确 6.程 序 结 构 合 理 参 考 程 序:#include int fun(int n)int f;if(nl)return 0;else if(n=l)f=l;else f=fun(n-l)+n;return f;main(int argc,char*argv)int sum,n;FILE*fp;if(argc!=2)pri
25、ntf(”Error!n);exit(O);)fp=fopen(argvf 1,nwn);printf(nInput n:);scanf(n%d,&n);sum=fun(n);printf(,14-2+.+%d=%dn,1,n,sum);fprintf(fp,l+2+.+%d=%dn,n,sum);fclose(fp);四 川 省 计 算 机 等 级 考 试 二 级 C 语 言 机 试 题(第 二 十 一 次)21-1套 参 考 答 案:一、程 序 调 试 题(文 件 名 testl-l.c)(4 0分)#include#include char*fun(char str)int i;for(
26、i=0;str;i+)if(,a,=stri)ll(stri=,z,)stri+=32;return*str;)main()(char str81;/*改 为*str*/*改 为 stri*/*改 为&*1改 为-=*/*改 为 str*/printf(nn Please enter a string:0);gets(str81J);/*改 为 str*/printf(nn The result string is:n%s,fun(str);)评 分 标 准:每 改 对 1 处 得 5 分,结 果 正 确 得 1 0分。二、编 写 程 序(程 序 文 件 取 名 为 testl-2.c)(6
27、0分)评 分 标 准:1.被 调 函 数 编 写 正 确 2 0分 2.文 件 打 开、数 据 读 入 正 确 和 定 位 正 确 10分 3.函 数 调 用 正 确 5 分 4.屏 幕 输 出 和 文 件 输 出 正 确 2 0分 5.程 序 结 构 合 理 5 分 参 考 程 序:#include#include int prime(int a,int n)int i,j,k=0,flag=0;for(i=0;in;i+)for(j=2;jai;j+)if(ai%j=0)flag=0;break;)else flag=l;if(flag)ak+=ai;)return k;)main()in
28、t n,i,a10;FILE*fp;fp=fopen(Htestl-2.txt1,nr+n);for(n=0;nl 0;n+)fscanf(fp,%dn,&a n);n=prime(a,n);fseek(fp,0,2);for(i=0;in;i+4-)printf(n%5dn,ai);fprintf(fp,n%5d,ai);)fclose(fp);)21-2套 参 考 答 案:一、程 序 调 试 题(文 件 名 为 test2-l.c)(4 0分)#include#define N10/*改 为 N 10*/void fi(int a,int m)/*改 为 int*/(int low=0,h
29、igh=N,mid;while(low=high)mid=(low+high)/2;if(m=amid)/*改 为 mamid*1low=mid+l;else return(mid);)return(-l);)main()(int i,aN=-3,4,7,9,13,45,67,89,100,180,k,m;for(i=0;i0)printf(m=%d,index=%dn,m,k);/*改 为 k=0*/else printf(Not be found!n);)评 分 标 准:每 改 对 1处 得 5 分,结 果 正 确 得 10分。二、编 写 程 序(程 序 文 件 取 名 为 test2-2
30、.c)(6 0分)评 分 标 准:1.被 调 函 数 编 写 正 确 2 0分 2.文 件 打 开、数 据 读 入 正 确 15分3.函 数 调 用 正 确 5 分 4.屏 幕 输 出 及 结 果 正 确 15分 5.程 序 结 构 合 理 5 分 参 考 程 序:#include#define M 3#define N 4void fun(int ttMN,int ppN)int i,j,min;for(j=0;jN;j+)min=tt0;for(i=0;iM;i+)if(ttijmin)min=ttij;ppj=min;)main()inttMN;int pN,i,j,k;FILE*fp;
31、fp=fopen(test2-2.dat,r);for(i=0;i3;i+)for(j=0;j4;j+)fscanf(fp,n%d 1,&t i j);fclose(fp);printf(nThe original data is:nH);for(i=0;iM;i+)forG=0;jN;j+)printf(%6d,ti|j);printf(nn);)fun(t,p);printf(nThe result is:n);for(k=0;kN;k+)printf(%4d,pk);printf(n);)21-3套 参 考 答 案:一 1、程 序 调 试 题(te s t3-l.c):#include
32、void main()(int i,k;char a80,b80,*p;/*改 为 k=0*/p=*a;/*改 为 p=a*/gets(p);while(!*p)/*改 为*p*/(for(i=1;i3&*p!=O;p+,k+,i+)/*改 为 i=3*/bfk=*p;if(i=4)bk=2;k+;/*改 为*/bk=O;puts(*b);/*改 为 b*/评 分 标 准:每 改 对 1处 得 5 分,结 果 正 确 得 10分。二、编 写 程 序(程 序 文 件 取 名 为 test4-2.c)(6 0分)评 分 标 准:1.被 调 函 数 编 写 正 确 2 0分 2.文 件 打 开、数
33、据 写 入 正 确 10分 3.函 数 调 用 正 确 10分 4.屏 幕 输 出 正 确 10分 5.m 输 入 正 确 5 分 6.程 序 结 构 合 理 5 分 参 考 程 序:#include int create(int a,int m)int i,j=0;for(i=l;i=m;i+)if(i%3=0 I I i%7=0)aj+l=i;return(j);)main()int a80,m;int i,n;FILE*fp;if(fp=fopen(,test3-2.dat;nw,)=NULL)printf(,Can,t open the file.n);exit(O);)printf(
34、MInput m:nH);scanf(n%dn,&m);n=creat(a,m);printf(n=%dn”,n);fprintf(,fp,n=%dn,n);for(i=0;in;i+)printf(M%4dn,ai);fprintf(fp,n%4d;ai);fclose(fp);21-4套 参 考 答 案:一*、程 序 调 试 题(te s t4-l.c):#include main()(char str81,c;int i,j,n;/*改 为 n=0*/printf(nn Enter a string:);gets(str81);/*改 为 str*/printf(nn Enter a c
35、haracter:);etchar(c);/*改 为 c=getchar()*/for(i=j=0;stri;i+)if(stri!=c)strj=stri;/*改 为 j+*/elsen;/*改 为 n+*/s tr jl=;/*改 为 strj=O*/printf(nnSTR=%s,N=%dnstr,n);getchar();)评 分 标 准:每 改 对 处 得 5 分,结 果 正 确 得 1 0分。二、编 写 程 序(程 序 文 件 取 名 为 test4-2.c)(6 0分)评 分 标 准:1.输 入 数 据 正 确 5 分 2.被 调 函 数 编 写 正 确 2 0分 3.文 件 操
36、 作 及 数 据 写 入 正 确 15分 4.函 数 调 用 正 确 5 分 5.屏 幕 输 出 及 结 果 正 确 10分 6.程 序 结 构 合 理 5 分 参 考 程 序:#include#include void fun(char*s,char*t)int i,j=O,n;n=strlen(s);for(i=0;in;i+)if(!(i%2=0&si%2!=0)tj+=si;)main()chars100,t100;FILE*fp;printf(Please enter a string:n);gets(s);fun(s,t);fp=fopen(test4-2.txt,w);print
37、f(,%sn%sn,s,t);fprintf(fp,n%sn%sn n,s,t);fclose(fp);)四 川 省 计 算 机 等 级 考 试 二 级 C 语 言 机 试 题(第 二 十 二 次)22-1套 参 考 答 案:-、程 序 调 试 题(文 件 名 为 testl-l.c)#include#include char move(char*str,int r)char t;int i,len;len=strlen(str);for(k=0;k=r;k+)t=*str;strcpy(str+l,str);strlen-l=t;)return*str;/*(40 分)/*改 为*move*
38、/*改 为 k*/*改 为 kr*/*改 为 strcpy(str+l,str)*/改 为 str*/void main()char s81;int m;printf(Hn Please enter a string:nn);gets(s);do printf(nn Please enter m:);scanf(d,ni);/*改 为&m*/if(mstrlen(s)printf(n Data error!nn);while(mstrlen(s);printf(Hn Result:%sn,move(s,m);评 分 标 准:每 改 对 1处 得 5 分,结 果 正 确 得 1 0分。二、编 写
39、 程 序(程 序 文 件 取 名 为 testl-2.c)(6 0分)评 分 标 准:1.被 调 函 数 编 写 正 确 2 5分 2.文 件 打 开、数 据 读 出 正 确 1 0分 3.函 数 调 用 正 确 1 0分 4.屏 幕 输 出 正 确 1 0分 5.程 序 结 构 合 理 5 分 参 考 程 序:#include sort(char a,char b)char c;int i,j=0;for(i=1;istrlen(a);i+=2)bj+=ai;bj=O;for(i=1;istrlen(b);i+)for(j=O;jbj+l)c=bU;bU=bU+l;bU+l=c;)main(
40、)(FILE*in;char a128,b65;in=fopen(Mtest 1-2.in,nrn);fgets(a,128,in);fclose(in);sort(a,b);puts(b);)22-2套 参 考 答 案:-、程 序 调 试 题(文 件 名 为 test2 Lc)(4 0分)#include main()(float a 1F10L min;/*改 为 a1010*/int i,j;int invert();/*改 为 float*/for(i=0;i10;i+)for(j=0;j10;j+)aij=i+j;for(i=0;i10;i+)(min=invert(a,10);pr
41、intf(,a%dmin=%fn,i,min);/*改 为 ai*/float invert(float*a,_n)1*改 为 int n*/int i;float min;min=*(a+0);for(i=l;in;i+)if(min*/min=(a+i);/*改 为*(a+i)*/return min;评 分 标 准:每 改 对 1处 得 5 分,结 果 正 确 得 1 0分。二、编 写 程 序(程 序 文 件 取 名 为 test2-2.c)(6 0分)评 分 标 准:1.被 调 函 数 编 写 正 确 1 5分 2.文 件 打 开、数 据 写 入 正 确 15分 3.函 数 调 用 正
42、 确 1 0分 4.屏 幕 输 出 正 确 1 0分 5.程 序 结 构 合 理 1 0分 参 考 程 序:#include int select(int a)if(!(a%3)&!(a%5)return 1;else return 0;)main()(int i,k=0;FILE*fp;if(fp=fopen(test2-2.dat,wb)=NULL)(printf(cannot open the filen);exit(0);for(i=3;i400;i+)if(select(i)k=k+1;printf(%10d,i);fprintf(fp,%10d,i);if(k%5=0)printf
43、(n);fprintf(fp,n);)fclose(fp);)22-3套 参 考 答 案:一、程 序 调 试 题(文 件 名 为 test3-l.c)(4 0分)#include int fun(float s,int n,float*aver)/*改 为*s*/float ave,t=0.0;int count,k,i;I*改 为 count=0*/for(k=0;kn;k+)t=sfk;/*改 为+=*/ave=t/n;for(i=0;in;i+)if(siave)count+;/*改 为*/*aver=&ave;/*改 为 ave*/return count;)main()float s
44、30,aver;int m,i;printf(nPlease enter n(30):);scanf(%d,&m);printf(nPlease enter%d mark:n,m);for(i=0;im;i+)scanf(%f,s+i);printf(nThe number of students:%d n,fun(s,m,aver):/*改 为&aver*/printf(Ave=%f n,aver);)评 分 标 准:每 改 对 1处 得 5 分,结 果 正 确 得 10分。二、编 写 程 序(程 序 文 件 取 名 为 test3-2.c)(6 0分)评 分 标 准:1.被 调 函 数 编
45、 写 正 确 2 0分 2.文 件 操 作 和 读 数 据 正 确 15分 3.函 数 调 用 正 确 10分 4.屏 幕 输 出 正 确 10分5.程 序 结 构 合 理 5 分 参 考 程 序:#include#include#define M 10void fun(int*s)(int i,j,t;for(i=l;iM-2;i+)for(j=i+1;jsj)t=si;si=sj;sj=t;)int input(int s)(FILE*fp;int i;if(fp=fopen(test3-2.in,r)=NULL)printf(cannot open filen);retum(O);for
46、(i=0;iM;i+)fscanf(fp,u%d n,&si);fclose(fp);retum(l);)main()(int sfM;int i;if(input(s)(fun(s);printf(n,);for(i=0;iM;i+)printf(n%d n,si);四 川 省 计 算 机 等 级 考 试 二 级 C 语 言 机 试 题(第 二 十 三 次)23-1套 参 考 答 案:一、程 序 调 试 题(文 件 名 为 testl-l.c)(40分)#include#include/*改 为:math.h*/main()char str100,*p=str,helpfl5;static
47、long int num50;int i=0,k=0,m,sign=0;printf(nninput the string:);scanf(”s”,p);do if(*p=0&*p=48&*p=0)numi+=(helpk-48)*(long int)pow(n+,10);/*改 为:pow(10,n+)*/i+;k=0;sign=O;else/*改 为:else;*/P+;while(*(p-l)!=O,);for(m=0;mi;m+)printfCd;1,numm);/*改 为:%Id(即 长 整 型 格 式 输 出)评 分 标 准:每 改 对 一 处 得 6 分,结 果 正 确 得 4
48、分 二、编 程 题(程 序 文 件 取 名 为 testl-2.c)(6 0分)评 分 标 准:1.被 调 函 数 fun编 写 正 确 2 0分 2.文 件 打 开 和 关 闭 正 确 10分 3.函 数 调 用 正 确 5 分 4.屏 幕 输 出 和 文 件 输 出 正 确 15分 5.输 出 格 式 正 确 5 分 6.程 序 结 构 合 理 5 分 参 考 程 序:#include#define M 1000int fun(int*a)int m,k=0;for(m=1;m=M;m+)if(m%7=0&m%ll!=0)I I(m%7!=0&m%ll=0)ak+=m;return k;m
49、ain()int aM,n,k;FILE*fp;clrscr();/*清 屏 函 数*/fp=fopen(1,testl-2.dat,wn);n=fun(a);printf(n%dnH,n);fprintf(fp,%dnM,n);for(k=0;kn;k+)printf(n%5dn,ak);fprintf(fp,H%5dn,ak);if(k+l)%10=0)printfCnn);fprintf(fp,n);)fclose(fp);)23 2 套 参 考 答 案:-、程 序 调 试 题(文 件 名 test2-l.c)(4 0 分)#include#define N 80void fun(int
50、*s,int*t,int k)/*改 为*k*/int i,m;*k=0;m=*s;for(i=l;iv(*t-l);i+)if(mvs+i)/*改 为*(s+i)*/m=*(s+i);k=i;/*改 为*k*/s-i+l=m;*t+;/*改 为(*t)+*/1main。【int aN=876,675,896,101,301,401,980,431,451,777);int i,n=10,mi;fun(afN&n&mi);/*改 为 a*/printf(nThe index of max is%dn”,mi);printf(The result:n):for(i=0;ivn;i+)printf