计算机二级C语言上机题库2.pdf
第 01套:给 定 程 序 中,函 数 fun的 功 能 是:将 形 参 n所 指 变 量 中,各 位 上 为 偶 数 的 数 去 除,剩 余 的 数 按 原 来 从 高 位 到 低 位 的 顺 序 组 成 一 个 新 的 数,并 通 过 形 参 指 针 n传 回 所 指 变 量。例 如,输 入 一 个 数:2 7 6 3 8 4 9 6,新 的 数:为 739。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 B L A N K 1.C 中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include void fun(unsigned long*n)unsigned long x=0,i;int t;i=l;while(*n)t=*n%1;if(t%2!=_ 2 _)x=x+t*i;i=i*10;*n=*n/10;*n=_ 3_;)main()unsigned long n=-l;while(n99999999lln0)printf(MPlease input()nl()OOOOO(X):“);scanf(kT,&n);fun(&n);printf(nnThe result is:%ldnM,n);)解 题 思 路:第 一 处:t是 通 过 取 模 的 方 式 来 得 到*n的 个 位 数 字,所 以 应 填:10o第 二 处:判 断 是 否 是 奇 数,所 以 应 填:0o第 三 处:最 后 通 形 参 n来 返 回 新 数 X,所 以 应 填:Xo给 定 程 序 M O D I 1.C中 函 数 f u n 的 功 能 是:计 算 n!。例 如,给 n输 入 5,则 输 出 120.000000。请 改 正 程 序 中 的 错 误,使 程 序 能 输 出 正 确 的 结 果。注 意:不 要 改 动 main函 数,不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include double fun(int n)double result=1.0;ifn=Oreturn 1.0;while(nl&n 170)result*=n-return result;)main()int n;printf(Input N:H);scanf(%d,&n);printf(nn%d!=%lfnnM,n,fun(n);)解 题 思 路:第 一 处:条 件 语 句 书 写 格 式 错 误,应 改 为:if(n=O)。第 二 处:语 句 后 缺 少 分 号。*请 编 写 一 个 函 数 f u n,它 的 功 能 是:将 一 个 数 字 字 符 串 转 换 为 一 个 整 数(不 得 调 用 C 语 言 提 供 的 将 字 符 串 转 换 为 整 数 的 函 数)。例 如,若 输 入 字 符 串-1234”,则 函 数 把 它 转 换 为 整 数 值-1234。函 数 fun中 给 出 的 语 句 仅 供 参 考。注 意:部 分 源 程 序 存 在 文 件 P R O G 1.C文 件 中。请 勿 改 动 主 函 数 main和 其 它 函 数 中 的 任 何 内 容,仅 在 函 数 fun的 花 括 号 中 填 入 你 编 写 的 若 干 语 句。给 定 源 程 序:#include#include long fun(char*p)inti,len,t;/*len为 串 长,t为 正 负 标 识*/long x=0;len=strlen(p);if(P=-)t=-l;len-;p+;else t=l;/*以 下 完 成 数 字 字 符 串 转 换 为 一 个 数 字*/return x*t;)main。/*主 函 数*/char s6;long n;printf(nEnter a string:nH);gets(s);n=fun(s);printf(%ldn”,n);NONO();)NONO()/*本 函 数 用 于 打 开 文 件,输 入 数 据,调 用 函 数,输 出 数 据,关 闭 文 件。*/FILE*fp,*wf;int i;char s20;long n;fp=fopen(nc:testin.dat,r);wf=fopen(,c:testout.dat,,w);for(i=0;i 10;i+)fscanf(fp,u%sn,s);n=fun(s);fprintf(wf,H%ldn,n);)fclose(fp);fclose(wf);)解 题 思 路:本 题 是 将 一 个 数 字 字 符 串 转 换 为 一 个 整 数。参 考 答 案:#include#include long fun(char*p)(int i,len,t;/*len为 串 长,t为 正 负 标 识*/long x=0;len=strlen(p);if(pO=-1)t=-l;len-;p+;else t=l;/*以 下 完 成 数 字 字 符 串 转 换 为 一 个 数 字*/while(*p)x=x*1048+(*p+);return x*t;)main。/*主 函 数*/char s6;long n;printfCnter a stringAn);gets(s);n=fun(s);printf(,%ldn,n);NONO();)NONO()/*本 函 数 用 于 打 开 文 件,输 入 数 据,调 用 函 数,输 出 数 据,关 闭 文 件。*1FILE*fp,*wf;int i;char s20;long n;fp=fopen(,c:testin.dat,rH);wf=fopen(c:testoul.dat Jw);for(i=0;i 10;i+)fscanf(fp,u%sM,s);n=fun(s);fprintf(wf,%ldnM,n);)fclose(fp);fclose(wf);)注 意:由 于 NONO()这 个 函 数 是 改 卷 人 用 的,与 考 生 没 有 什 么 关 系,故 下 面 从 第 2套 试 题 开 始 均 省 略 NONO()第 02套:给 定 程 序 中,函 数 fun的 功 能 是 将 形 参 给 定 的 字 符 串、整 数、浮 点 数 写 到 文 本 文 件 中,再 用 字 符 方 式 从 此 文 本 文 件 中 逐 个 读 入 并 显 示 在 终 端 屏 幕 上。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include void fun(char*s,int a,double f)-1-fp;char ch;fp=fopenCYilel.txt1,w);fprintf(fp,%s%d%fn,s,a,f);fclose(fp);fp=fopen(”fHel.txt”,V);printf(HnThe result:nnH);ch=fgetc(fp);while(!feof(_ 2_)putchar(_ 3_);ch=fgetc(fp);putchar(n);fclose(fp);main()char a10=Hen。!”;int b=12345;double c=98.76;fun(a,b,c);)解 题 思 路:本 题 是 考 察 先 把 给 定 的 数 据 写 入 到 文 本 文 件 中,再 从 该 文 件 读 出 并 显 示 在 屏 幕 上。第 一 处:定 义 文 本 文 件 类 型 变 量,所 以 应 填:FILE*o第 二 处:判 断 文 件 是 否 结 束,所 以 应 填:fp。第 三 处:显 示 读 出 的 字 符,所 以 应 填:ch。*给 定 程 序 MODI 1.C中 函 数 fun的 功 能 是:依 次 取 出 字 符 串 中 所 有 数 字 字 符,形 成 新 的 字 符 串,并 取 代 原 字 符 串。请 改 正 函 数 fun中 指 定 部 位 的 错 误,使 它 能 得 出 正 确 的 结 果。注 意:不 要 改 动 main函 数,不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include void fun(char*s)int i,j;for(i=O,j=O;si!=W;i+)if(si=0&si=9)sj=si;sj=O;1main()char item80;printf(nEnter a string:M);gets(item);printf(nnThe string is:,%sn,item);fun(item);printf(HnnThe string of changing is:s”n”,item);)解 题 思 路:第 一 处:要 求 是 取 出 原 字 符 串 中 所 有 数 字 字 符 组 成 一 个 新 的 字 符 串,程 序 中 是 使 用 变 量 j来 控 制 新 字 符 串 的 位 置,所 以 应 改 为:sj+=si;。第 二 处:置 新 字 符 串 的 结 束 符,所 以 应 改 为:s lik、。,;.*请 编 写 函 数 f u n,函 数 的 功 能 是:将 M行 N列 的 二 维 数 组 中 的 字 符 数 据,按 列 的 顺 序 依 次 放 到 一 个 字 符 串 中。例 如,二 维 数 组 中 的 数 据 为:W W W WS S S SH H H H则 字 符 串 中 的 内 容 应 是:WSHWSHWSHo注 意:部 分 源 程 序 在 文 件 PROG 1.C中。请 勿 改 动 主 函 数 main和 其 它 函 数 中 的 任 何 内 容,仅 在 函 数 fun的 花 括 号 中 填 入 你 编 写 的 若 干 语 句。给 定 源 程 序:#include#define M 3#define N 4void fun(char sN,char*b)(int i,j,n=O;for(i=0;i N;i+)/*请 填 写 相 应 语 句 完 成 其 功 能*/bn=O;)main()chara100,w M N=W 7W?W W S,S,S,SH,H,H,H*);int i,j;printf(The matrixAn1);for(i=0;iM;i+)for(j=0;jN;j+)printf(M%3cn,wi j);printf(nH);)fun(w,a);printf(HThe A string:nM);puts(a);printf(nn);NONO();)解 题 思 路:本 题 是 把 二.维 数 组 中 的 字 符 数 据 按 列 存 放 到 一 个 字 符 串 中。1.计 算 存 放 到 一 维 数 组 中 的 位 置。2.取 出 二 维 数 组 中 的 字 符 存 放 到 一 维 数 组(已 计 算 出 的 位 置)中。参 考 答 案:void fun(char sN,char*b)(int i,j,n=O;for(i=0;i N;i+)/*请 填 写 相 应 语 句 完 成 其 功 能*/(for(j=0;j M;j+)bn=sji;n=i*M+j+1;bn=O;第 03套:程 序 通 过 定 义 学 生 结 构 体 变 量,存 储 了 学 生 的 学 号、姓 名 和 3门 课 的 成 绩。所 有 学 生 数 据 均 以 二 进 制 方 式 输 出 到 文 件 电 函 数 fun的 功 能 是 重 写 形 参 filename所 指 文 件 中 最 后 一 个 学 生 的 数 据,即 用 新 的 学 生 数 据 覆 盖 该 学 生 原 来 的 数 据,其 它 学 生 的 数 据 不 变。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#define N 5typedef struct student long sno;char name10;float score3;STU;void fun(char*filename,STU n)FILE*fp;fp=fopen(一 1一,“rb+”);fseek(_2_,-lL*sizeof(STU),SEEK_END);fwrite(&n,sizeof(STU),1,3);fclose(fp);)main()STU tN=10001;,MaChaor,91,92,77,10002,MCaoKain,75,60,88,10003JLiSi”,85,70,78,10004,FangFang,90,82,87),10005JZhangSan”,95,80,88;STU n=10(X)6,ZhaoSi,55,70,68,ssN;int i,j;FILE*fp;fp=fopen(nstudent.datH,Hwb);fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen(student.datH,rb);fread(ss,sizeof(STU),N,fp);fclose(fp);printf(nThe original data:nnn);for(j=0;jN;j+)printf(nNo:%ld Name:%-8s Scores:n,ssj.sno,ssj.name);for(i=0;i3;i+)printf(H%6.2fn,ssj.scorei);printfCAn1);)fun(Hstudent.datn,n);printf(nThe data after modifing:nnH);fp=fopen(student.dat nrbM);fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;jN;j+)printf(nNo:%ld Name:%-8s Scores:,ssj.sno,ss|j.name);for(i=0;i3;i+)printf(H%6.2fn,ssj.scorei);printf(nnn);)解 题 思 路:本 题 是 考 察 如 何 从 文 件 中 读 出 数 据,再 把 结 构 中 的 数 据 写 入 文 件 中。第 一 处:从 指 定 的 文 件 中 读 出 数 据,所 以 应 填:filename第 二 处:读 取 文 件 fp的 最 后 一 条 记 录,所 以 应 填:fPo第 三 处:再 把 读 出 的 记 录,写 入 文 件 fp指 定 的 位 置 上,所 以 应 填:fp。*给 定 程 序 MODI 1.C中 的 函 数 Creatlink的 功 能 是 创 建 带 头 结 点 的 单 向 链 表,并 为 各 结 点 数 据 域 赋 0到 m-1的 值。请 改 正 函 数 Creatlink中 指 定 部 位 的 错 误,使 它 能 得 出 正 确 的 结 果。注 意:不 要 改 动 main函 数,不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#include typedef struct aa int data;struct aa*next;NODE;NODE*Creatlink(int n,int m)NODE 昨 NULL,*p,*s;int i;p=(NODE)malloc(sizeof(NODE);h=p;p-next=NULL;for(i=l;idata=rand()%m;s-next=p-next;p-next=s;p=p-next;)return p;outlink(NODE*h)NODE*p;p=h-next;printf(nnTHE LIST:nn HEAD”);while(p)printf(-%d n,p-data);p=p-next;)printf(n);)main()NODE*head;head=Creatlink(8,22);outlink(head);)解 题 思 路:第 一 处:指 向 刚 分 配 的 结 构 指 针,所 以 应 改 为:p=(NODE*)malloc(sizeof(NODE);第 二 处:在 动 态 分 配 内 存 的 下 一 行 语 句 是,使 用 临 时 结 构 指 针 变 量 h保 存 p指 针 的 初 始 位 置,最 后 返 回 不 能 使 用 P,是 因 为 p的 位 置 已 经 发 生 了 变 化,所 以 应 改 为 返 回 h。*请 编 写 函 数 f u n,函 数 的 功 能 是:统 计 一 行 字 符 串 中 单 词 的 个 数,作 为 函 数 值 返 回。一 行 字 符 串 在 主 函 数 中 输 入,规 定 所 有 单 词 由 小 写 字 母 组 成,单 词 之 间 由 若 干 个 空 格 隔 开,一 行 的 开 始 没 有 空 格。注 意:部 分 源 程 序 在 文 件 PROG1.C中。请 勿 改 动 主 函 数 main和 其 它 函 数 中 的 任 何 内 容,仅 在 函 数fun的 花 括 号 中 填 入 你 编 写 的 若 干 语 句。给 定 源 程 序:#include#include#define N 80int fun(char*s)main()char lineN;int num=0;printf(Enter a string:nH);gets(line);num=fun(line);注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#define N 5typedef struct student long sno;char name10;float score3;STU;void fun(char*filename)FILE*fp;int i j;printf(The number of word is:%dnnM,num);STU sN,t;NONO();)解 题 思 路:本 题 是 统 计 字 符 串 中 的 单 词 数。1.利 用 while循 环 语 句 和 指 针 变 量,当 字 符 为 空 格 时,则 单 词 数 k加 1。2.循 环 结 束 返 回 k。参 考 答 案:int fun(char*s)(int k=1;while(*s)if(*s=1)k+;s+;fp=fopen(filename,1一);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;iN-l;i+)for(j=i+l;jN;j+)if(si.sno _ 2 sj.sno)t=si;si=sj;sj=t;fp=fopen(filename,Hwb);_ 3 _(s,sizeof(STU),N,fp);/*二 进 制 输 出*/fclose(fp);)main()STU tN=10005,HZhangSanM,95,80,88,10003,MLiSiM,85,70,78,)return k;)第 04套:程 序 通 过 定 义 学 生 结 构 体 变 量,存 储 了 学 生 的 学 号、姓 名 和 3门 课 的 成 绩。所 有 学 生 数 据 均 以 二 进 制 方 式 输 出 到 文 件 1 1函 数 fun的 功 能 是 从 形 参 filename所 指 的 文 件 中 读 入 学 生 数 据,并 按 照 学 号 从 小 到 大 排 序 后,再 用 二 进 制 方 式 把 排 序 后 的 学 生 数 据 输 出 到 filename所 指 的 文 件 中,覆 盖 原 来 的 文 件 内 容。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。10002,CaoKai1;75,60,88,10004JFangFang,90,82,87),10001,nMaChaon,91,92,77,ssN;int i,j;FILE*fp;fp=fopen(,student.dat,wb);fwrite(t,sizeof(STU),5,fp);fclose(fp);printf(nnThe original data:nnH);for(j=O;jN;j+)printf(nNo:%ld Name:%-8s Scores:,tj.sno,tj.name);for(i=0;i3;i+)printf(H%6.2fM,tj.score(i);printf(,n,);)fun(student.datM);printf(HnnThe data after sorting:nnH);fp=fopen(student.dal JTb);fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;jN;j+)printf(unNo:%ld Name:%-8s Scores:H,ssj.sno,ssj.name);for(i=0;i。第 三 处:把 已 排 序 的 结 构 数 据,重 新 写 入 文 件,所 以 应 填:fwriteo*给 定 程 序 MODII.C中 函 数 fun的 功 能 是:在 字 符 串 的 最 前 端 加 入 n个*号,形 成 新 串,并 且 覆 盖 原 串。注 意:字 符 串 的 长 度 最 长 允 许 为 79。请 改 正 函 数 fun中 指 定 部 位 的 错 误,使 它 能 得 出 正 确 的 结 果。注 意:不 要 改 动 main函 数,不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#include void fun(char s,int n)(char a80,*p;int i;s=p;for(i=0;in;i+)ai=*;do ai=*p;i+;)while(*p+)ai=0;strcpy(s,a);)main()int n;char s80;printf(nEnter a string:);gets(s);printf(HnThe string s“n”,s);printf(unEnter n(number of*):);scanf(n%d&n);fun(s,n);printf(nThc string after insert:V%s nM,s);)解 题 思 路:第 一 处:指 针 p应 指 向 s,所 以 应 改 为:p=s;o第 二 处 死 循 环,当 do while循 环 执 行 一 次,临 时 变 量 p应 该 指 向 字 符 串 的 下 一 位 置,所 以 应 改 为:while(*p+);。*请 编 写 函 数 fun,函 数 的 功 能 是:统 计 各 年 龄 段 的 人 数。N个 年 龄 通 过 调 用 随 机 函 数 获 得,并 放 在 主 函 数 的 age数 组 中;要 求 函 数 把 0至 9岁 年 龄 段 的 人 数 放 在 d0中,把 10至 19岁 年 龄 段 的 人 数 放 在 d|II中,把 20至 29岁 年 龄 段 的 人 数 放 在 d2中,其 余 依 此 类 推,把 100岁(含 100)以 上 年 龄 的 人 数 都 放 在 d10中。结 果 在 主 函 数 中 输 出。注 意:部 分 源 程 序 在 文 件 PROG 1.C中。请 勿 改 动 主 函 数 main和 其 它 函 数 中 的 任 何 内 容,仅 在 函 数 fun的 花 括 号 中 填 入 你 编 写 的 若 干 语 句。给 定 源 程 序:#include#define N 50#define M 1 1void fun(int*a,int*b)()double rnd()static t=29,c=217,m=1024,r=0;r=(r*t+c)%m;retum(double)r/m);)main()int ageN,i,dM;for(i=0;iN;i+)agei=(int)(l 15*md();printf(uThe original data:nM);for(i=0;iN;i+)printf(i+l)%10=0?,%4dn,:,%4d,agei);printf(nnM);fun(age,d);for(i=0;i 1 0;i+4-)printf(n%4d-%4d:%4dn,i*10,i*10+9,di);printf(H Over 100:%4dn,d10);NONO(d);)解 题 思 路:本 题 是 统 计 各 年 龄 段 的 人 数。1.初 始 化 各 年 龄 段 人 数 为 0。2.使 用 for循 环 以 及 求 出 各 年 龄 的 十 位 数 字 作 为 存 放 人 数 的 地 址,如 果 大 于 值 大 于 10,则 存 入 d10中 大 于 110岁 的 人)。参 考 答 案:void fun(int*a,int*b)inti,j;for(i=0;i M;i+)bi=0;for(i=0;i 10)bM-1+;else bj+;)double rnd()static t=29,c=217,m=1024,r=0;r=(r*t+c)%m;return(double)r/m);)第 05套:给 定 程 序 中,函 数 fun的 功 能 是 将 参 数 给 定 的 字 符 串、整 数、浮 点 数 写 到 文 本 文 件 中,再 用 字 符 串 方 式 从 此 文 本 文 件 中 逐 个 读 入,并 调 用 库 函 数 atoi和 atof将 字 符 串 转 换 成 相 应 的 整 数、浮 点 数,然 后 将 其 显 示 在 屏 幕 上。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#include void fun(char*s,int a,double f)(_ 1-fp;char str100,strl100,str2100;int al;double fl;fp=fopenCYilel.txt,w1);fprintf(fp,H%s%d%fnH,s,a,f);_ 2 _;fp 二 fopen(filel.txt,T);fscanf(_ 3_,%s%s%s,str,strl,str2);fclose(fp);al=atoi(str 1);fl=atof(str2);printf(unThe result:nn%s%d%fnM,str,al,fl);)main()chara10=,Heno!u;int b=12345;double c=98.76;fun(a,b,c);)解 题 思 路:本 题 是 考 察 先 把 给 定 的 数 据 写 入 到 文 本 文 件 中,再 从 该 文 件 读 出 并 转 换 成 相 应 的 整 数、浮 点 数 显 示 在 屏 幕 上。第 一 处:定 义 文 本 文 件 类 型 变 量,所 以 应 填:FILE*。第 二 处:关 闭 刚 写 入 的 文 件,所 以 应 填:fclose(fp)。第 三 处:从 文 件 中 读 出 数 据,所 以 应 填:fp。*给 定 程 序 MODI1.C中 函 数 fun的 功 能 是:对 N名 学 生 的 学 习 成 绩,按 从 高 到 低 的 顺 序 找 出 前 m(mW 10)名 学 生 来,并 将 这 些 学 生 数 据 存 放 在 一 个 动 态 分 配 的 连 续 存 储 区 中,此 存 储 区 的 首 地 址 作 为 函 数 值 返 回。请 改 正 函 数 fun中 指 定 部 位 的 错 误,使 它 能 得 出 正 确 的 结 果。注 意:不 要 改 动 main函 数,不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#include#include#define N 10typedef struct ss char numflO;int s;STU;STU*fun(STU a,int m)STU bN,int i,j,k;t=(STU*)calloc(sizeof(STU),m)for(i=0;iN;i+)bi=ai;for(k=0;km;k+)for(i=j=0;ib|j.s)j=i;t(k)=b(j);bj.s=O;)return t;)outresult(STU a|,FILE*pf)inti;for(i=0;i10)prinlf(nGive the number of the students who have betterscore:);scanf(M%dH,&m);)pOrder=fun(a,m);printf(叫*THE RESULT*n)printfCThe top:n);for(i=0;im;i+)printf(H%s%dn,pOrderi.num,pOrderi.s);free(pOrder);)解 题 思 路:第 一 处:语 句 最 后 缺 少 分 号。第 二 处:应 该 使 用 方 括 号,而 不 是 圆 括 号。像 此 类,使 用 编 译,即 可 发 现。*请 编 写 函 数 f u n,函 数 的 功 能 是:删 去 一 维 数 组 中 所 有 相 同 的 数,使 之 只 剩 一 个。数 组 中 的 数 已 按 由 小 到 大 的 顺 序 排 列,函 数 返 回 删 除 后 数 组 中 数 据 的 个 数。例 如,一 维 数 组 中 的 数 据 是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 1010 10.删 除 后,数 组 中 的 内 容 应 该 是:23 45 67 89 10。注 意:部 分 源 程 序 在 文 件 PROG 1.C中。请 勿 改 动 主 函 数 main和 其 它 函 数 中 的 任 何 内 容,仅 在 函 数 fun的 花 括 号 中 填 入 你 编 写 的 若 干 语 句。给 定 源 程 序:#include#define N 80int fun(int a,int n)main()int aN=2,2,23,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20;printf(The original data:nn);for(i=0;in;i+)printf(M%3d,ai);n=fun(a,n);printf(HnnThe data after deleted:n);for(i=0;in;i+)printf(,%3d,ai);printf(Hnn);NONO();)解 题 思 路:本 题 是 删 除 已 排 序 过 数 组 中 的 相 同 数。1.取 出 数 组 中 的 第 1个 数 存 放 在 临 时 变 量 k中,再 利 用 for循 环 来 依 次 判 断 所 有 的 数。2.如 果 取 出 的 数 和 k相 比,如 果 不 相 同,则 仍 存 放 在 原 数 组 中,其 中 存 放 的 位 置 由 j来 控 制,接 着 把 这 个 数 重 新 存 入 k。如 果 相 同,则 取 下 一 数。参 考 答 案:int fun(int a,int n)(int i,j=1,k=afO;for(i=1;i n;i+)if(k!=ai)aj4-+=ai;k=ai;)ajl=O;return j;)第 06套:给 定 程 序 中,函 数 fun的 功 能 是 根 据 形 参 i的 值 返 回 某 个 函 数 的 值。当 调 用 正 确 时,程 序 输 出:x 1=5.000000,x2=3.000000,xl*xl+xl*x2=40.000(X)0请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include double fl(double x)return x*x;double f2(double x,double y)return x*y;_ 1 _ fun(int i,double x,double y)if(i=l)return _ 2_(x);elsereturn _ 3 _(x,y);)main()double xl=5,x2=3,r;r=fun(l,xl,x2);r+=fun(2,xl,x2);printf(nxl=%f,x2=%f,x 1*x 14-x 1*x2=%fnn,x 1,x2,r);)解 题 思 路:本 题 是 根 据 给 定 的 公 式 来 计 算 函 数 的 值。第 一 处:程 序 中 使 用 双 精 度 double类 型 进 行 计 算,所 以 函 数 的 返 回 值 类 型 也 为 d o u b le,所 以 应 填:double第 二 处:当 i等 于 1时,则 返 回 f l函 数 的 值,所 以 应 填:f l。第 三 处:如 果 i不 等 于 1,则 返 回 f2函 数 的 值,所 以 应 填:f2o*给 定 程 序 MODI 1.C中 函 数 fun的 功 能 是:比 较 两 个 字 符 串,将 长 的 那 个 字 符 串 的 首 地 址 作 为 函 数 值 返 回。请 改 正 函 数 fun中 指 定 部 位 的 错 误,使 它 能 得 出 正 确 的 结 果。注 意:不 要 改 动 main函 数,不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include char fun(char*s,char*。int sl=O,tl=O;char*ss,*tt;ss=s;tt=t;while(*ss)sl+;(*ss)+;)while(*tt)tl+;(*tt)+;)if(tlsl)return t;else return s;main()char a80,b8(),*p,*q;int i;printf(nEnter a string:);gets(a);printf(nEnter a string again:);gets(b);printf(nThe longer is:nn%sn”,fun(a,b);)解 题 思 路:第 一 处:试 题 要 求 返 回 字 符 串 的 首 地 址,所 以 应 改 为:char*fun(char*s,char*t)第 二 处:取 字 符 串 指 针 S S的 下 一 个 位 置,所 以 应 改 为:SS+;。第 三 处:取 字 符 串 指 针 tt的 下 一 个 位 置,所 以 应 改 为:tt+;。*请 编 写 函 数 fun,函 数 的 功 能 是:移 动 字 符 串 中 的 内 容,移 动 的 规 则 如 下:把 第 1到 第 m个 字 符,平 移 到 字 符 串 的 最 后,把 第 m+1到 最 后