C语言习题库.pdf
《C语言习题库.pdf》由会员分享,可在线阅读,更多相关《C语言习题库.pdf(242页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、填 空 1.给 定 程 序 中,函 数 fu n的 功 能 是:将 形 参 n 所 指 变 量 中,各 位 上 为 偶 数 的 数 去 除,剩 余 的 数 按 原 来 从 高 位 到 低 位 的 顺 序 组 成 一 个 新 的 数,并 通 过 形 参 指 针 n 传 回 所 指 变 量。例 如,输 入 一 个 数:27638496,新 的 数:为 739。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也
2、 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include void fun(unsigned long*n)unsigned long x=0,i;int t;i=l;while(*n)/*found*/t=*n%1;1/年 不 小 不 小 不 小 不 不 小 c i i n c 不 小 不 小 不 不 小 不 小 不/if(t%2!=_ 2 _)x=x+t*i;i=i*10;*n=*n/IO;)/*found*/*n=3;)main()unsigned long n=-l;while(n99999999lln0)printf(Please input(0n 10000000
3、0):scanf(%ld,&n);fun(&n);printf(nThe result is:%ldn,n);)解 题 思 路:第 一 处:t 是 通 过 取 模 的 方 式 来 得 到*n 的 个 位 数 字,所 以 应 填:10。第 二 处:判 断 是 否 是 奇 数,所 以 应 填:0o第 三 处:最 后 通 形 参 n 来 返 回 新 数 x,所 以 应 填:xo2.给 定 程 序 中,函 数 fun的 功 能 是 将 形 参 给 定 的 字 符 串、整 数、浮 点 数 写 到 文 本 文 件 中,再 用 字 符 方 式 从 此 文 本 文 件 中 逐 个 读 入 并 显 示 在 终
4、端 屏 幕 o请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include void fun(char*s,int a,double f)/*found*/1 fp;char ch;fp=fopen(filel.txt,w);fprintf(fp,%s%d%fn,s,a,f);fclose(fp);fp=fopen(filel.txt,r);
5、printf(nThe result:nn);ch=fgetc(fp);/*、匕 1、1,/个 个 个 个 个 个 个 个 个 小 l e i 1 n l i 个 个 个 个 个 个 个 个 个 个/while(!fe o f(_ 2 _)、1,、上 r 1、b/不 小 小 不 小 不 小 不 不 小 t c i i n c 不 小 不 小 不 不 小 不 小 不/putchar(3);ch=fgetc(fp);putchar(n);fclose(fp);)main()char a10=Hello!;int b=12345;double c=98.76;fun(a,b,c);)/*宏 为 世
6、纪 教 育*/解 题 思 路:本 题 是 考 察 先 把 给 定 的 数 据 写 入 到 文 本 文 件 中,再 从 该 文 件 读 出 并 显 示 在 屏 幕 上。第 一 处:定 义 文 本 文 件 类 型 变 量,所 以 应 填:F IL E*。第 二 处:判 断 文 件 是 否 结 束,所 以 应 填:fp。第 三 处:显 示 读 出 的 字 符,所 以 应 填:ch。3.程 序 通 过 定 义 学 生 结 构 体 变 量,存 储 了 学 生 的 学 号、姓 名 和 3 门 课 的 成 绩。所 有 学 生 数 据 均 以 二 进 制 方 式 输 出 到 文 件 中。函 数 fu n的 功
7、 能 是 重 写 形参 filename 所 指 文 件 中 最 后 一 个 学 生 的 数 据,即 用 新 的 学 生 数 据 覆 盖 该 学 生 原 来 的 数 据,其 它 学 生 的 数 据 不 变。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。/*宏 为 世 纪 教 育*/注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK 1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#define N 5typedef stru
8、ct student(long sno;char name10;float score3;STU;void fun(char*filename,STU n)FILE*fp;fp=fopen(_ 1 _,rb+);/*found*/fse e k(_ 2 _,-lL*sizeof(STU),SEEK_END);/*found*/fwrite(&n,sizeof(STU),1,3);fclose(fp);)main()STU tN=10001,MaChao,91,92,77,10002,CaoKai,75,60,88,10003,LiSi,85,70,78,10004,FangFang,90,82
9、,87,10005,ZhangSan,95,80,88;STU n=10006,ZhaoSi,55,70,68,ssN;int i,j;FILE*fp;fp=fopen(student.dat,wb);fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen(student.dat,rb);fread(ss,sizeof(STU),N,fp);fclose(fp);printf(nThe original data:nn);for(j=0;jN;j+)printf(nNo:%ld Name:%-8s Scores:,ssj.sno,ssj.name);for
10、(i=0;i3;i+)printf(%6.2f,ssj.scorei);printf(n);)fun(student.dat,n);printf(nThe data after modifing:nn);fp=fopen(student.dat,rb);fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;jN;j+)printf(nNo:%ld Name:%-8s Scores:,ssj.sno,ssj.name);for(i=0;i3;i+)printf(%6.2f,ssj.scorei);printf(n);/*宏 为 世 纪 教 育*/)解 题 思
11、 路:本 题 是 考 察 如 何 从 文 件 中 读 出 数 据,再 把 结 构 中 的 数 据 写 入 文 件 中。第 一 处:从 指 定 的 文 件 中 读 出 数 据,所 以 应 填:filename。第 二 处:读 取 文 件 f p的 最 后 一 条 记 录,所 以 应 填:fp。第 三 处:再 把 读 出 的 记 录,写 入 文 件 f p 指 定 的 位 置 上,所 以 应 填:fp。4:程 序 通 过 定 义 学 生 结 构 体 变 量,存 储 了 学 生 的 学 号、姓 名 和 3 门 课 的 成 绩。所 有 学 生 数 据 均 以 二 进 制 方 式 输 出 到 文 件 中
12、。函 数 fun的 功 能 是 从 形 参 filename 所 指 的 文 件 中 读 入 学 生 数 据,并 按 照 学 号 从 小 到 大 排 序 后,再 用 二 进 制 方 式 把 排 序 后 的 学 生 数 据 输 出 到 filename所 指 的 文 件 中,覆 盖 原 来 的 文 件 内 容。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK 1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定
13、源 程 序:#include#define N 5typedef struct student long sno;/*宏 为 世 纪 教 育*/char name10J;float score3;STU;void fun(char*filename)FILE*fp;int i,j;STU sN,t;/*found*/fp=fopen(filename,1一);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;iN-l;i+)for(j=i+l;jN;j+)/*found*/if(si.sno _ 2 sj.sno)t=si;si=sj;sj=t;fp=f
14、open(filename,wb);/*found*/_ 3 _(s,sizeof(STU),N,fp);/*二 进 制 输 出*/fclose(fp);)main()STU tN=10005,ZhangSan,95,80,88,10003,LiSi,85,70,78),10002,CaoKai,75,60,88,10004,FangFang,90,82,87),10001,MaChao,91,92,77,ssN;int i,j;FILE*fp;fp=fopen(student.dat,wb);fwrite(t,sizeof(STU),5,fp);fclose(fp);printf(nnThe
15、 original data:nn);for(j=0;jN;j+)printf(nNo:%ld Name:%-8s Scores:,tj.sno,tj.name);for(i=0;i3;i+)printf(%6.2f,tj.scorei);printf(n);)fun(student.dat);printf(nnThe data after sorting:nn);fp=fopen(student.dat,rb);fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;jN;j+)printf(nNo:%ld Name:%-8s Scores:,ssfjj.
16、sno,ssj.name);for(i=0;i。第 三 处:把 已 排 序 的 结 构 数 据,重 新 写 入 文 件,所 以 应 填:fwriteo5.给 定 程 序 中,函 数 fu n的 功 能 是 将 参 数 给 定 的 字 符 串、整 数、浮 点 数 写 到 文 本 文 件 中,再 用 字 符 串 方 式 从 此 文 本 文 件 中 逐 个 读 入,并 调 用 库 函 数atoi 和 atof 将 字 符 串 转 换 成 相 应 的 整 数、浮 点 数,然 后 将 其 显 示 在 屏 幕 上。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,
17、使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK 1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include#include void fun(char*s,int a,double f)r 1、b/不 小 小 不 小 不 小 不 不 小 t c i i n c 不 小 不 小 不 不 小 不 小 不/1 fp;char str100,strl100,str2100;int al;double fl;fp=fopen(filel.txt,w);/*宏 为 世 纪 教 育*/fp
18、rintf(fp,%s%d%fn,s,a,f);r 1、b/不 小 小 不 小 不 小 不 不 小 t c i i n c 不 小 不 小 不 不 小 不 小 不/2fp=fopen(filel.txt,r);fscanf(3,%s%s%s,str,strl,str2);fclose(fp);al=atoi(strl);fl=atof(str2);printf(nThe result:nn%s%d%fn,str,al,fl);)main()char a10=Hello!;int b=12345;double c=98.76;fun(a,b,c);)解 题 思 路:本 题 是 考 察 先 把 给
19、 定 的 数 据 写 入 到 文 本 文 件 中,再 从 该 文 件 读 出 并 转 换 成 相 应 的 整 数、浮 点 数 显 示 在 屏 幕 上。第 一 处:定 义 文 本 文 件 类 型 变 量,所 以 应 填:FILE*。第 二 处:关 闭 刚 写 入 的 文 件,所 以 应 填:fclose(fp)o第 三 处:从 文 件 中 读 出 数 据,所 以 应 填:fp。6.给 定 程 序 中,函 数 fun的 功 能 是 根 据 形 参 i 的 值 返 回 某 个 函 数 的 值。当 调 用 正 确 时.,程 序 输 出:X 1=5.000000,x2=3.000000,xl*xl+xl
20、*x2=40.000000请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结 果。注 意:源 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:#include double fl(double x)return x*x;double f2(double x,double y)return x*y;*found*/1 fun(int i,double x,double y)if(i=D/*found*/return
21、 _ 2(x);elser 1、b/不 小 小 不 小 不 小 不 不 小 t c i i n c 不 小 不 小 不 不 小 不 小 不/return _ 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 1+x 1*x2=%fnn,x 1,x2,r);)解 题 思 路:本 题 是 根 据 给 定 的 公 式 来 计 算 函 数 的 值。第 一 处:程 序 中 使 用 双 精 度 double类 型 进 行 计 算,所 以 函 数 的
22、 返 回 值 类 型 也 为 d o u b le,所 以 应 填:double o第 二 处:当 i 等 于 1时,则 返 回 f l 函 数 的 值,所 以 应 填:口。第 三 处:如 果 i 不 等 于 1,则 返 回 f 2函 数 的 值,所 以 应 填:f2。7.程 序 通 过 定 义 并 赋 初 值 的 方 式,利 用 结 构 体 变 量 存 储 了 一 名 学 生 的 信 息。函 数 fun的 功 能 是 输 出 这 位 学 生 的 信 息。请 在 程 序 的 下 划 线 处 填 入 正 确 的 内 容 并 把 下 划 线 删 除,使 程 序 得 出 正 确 的 结果。注 意:源
23、 程 序 存 放 在 考 生 文 件 夹 下 的 BLANK1.C中。不 得 增 行 或 删 行,也 不 得 更 改 程 序 的 结 构!给 定 源 程 序:/*宏 为 世 纪 教 育*/#include typedef struct int num;char name9;char sex;struct int year,month,day;birthday;float score3;STU;*found*/void show(STU 1)int i;printf(n%d%s%c%d-%d-%d,tt.num,tt.name,tt.sex,tt.birthday.year,tt.birthda
24、y.month,tt.birthday.day);for(i=0;i3;i+)r 1/不 小 小 不 小 不 小 不 不 小 t c i i n c 不 小 不 小 不 不 小 不 小 不/printf(%5.1f,2);printf(n);)main()STU std=l,Zhanghua,M,1961,10,8,76.5,78.0,82.0;printf(nA student data:n);/个 小 小 不 小 个 小 不 不 小 iOc u n c1 不、小,不 小 不 不 小 不 小 不/s h o w(3);)解 题 思 路:本 题 是 利 用 结 构 体 变 量 存 储 了 一
25、名 学 生 的 信 息。第 一 处:注 变 量 在 函 数 体 fu n已 经 使 用,所 以 应 填:tt。第 二 处:利 用 循 环 分 别 输 出 学 生 的 成 绩 数 据,所 以 应 填:tt.score i。第 三 处:函 数 的 调 用,所 以 应 填:std。8.给 定 程 序 通 过 定 义 并 赋 初 值 的 方 式,利 用 结 构 体 变 量 存 储 了 一 名 学 生 的 学 号、姓 名 和 3 门 课 的 成 绩。函 数 fu n的 功 能 是 将 该 学 生 的 各 科 成 绩 都 乘 以 一 个 系 数 a。请 在 程 序 的 下 划 线 处 填 入 正 确 的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题
限制150内