《编程基础——C语言学习指导与实训(赵淑娟)附录A自我测试题答案.pdf》由会员分享,可在线阅读,更多相关《编程基础——C语言学习指导与实训(赵淑娟)附录A自我测试题答案.pdf(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编 程 基 础 C语 言 学 习 指 导 与 实 训 附 录 A 自 我 测 试 答 案 项 目 一 1.选 择 题(1)D(2)C(3)B(4)A(5)C(6)A(7)D(8)C(9)C(10)D(11)C(12)D(13)C(14)C(15)C2.填 空 题(1)源 程 序(2)机 器 语 言(3)是(4)函 数(5)能 直 接 访 问 物 理 地 址,可 进 行 位 操 作(6)条 件 运 算 符(7)机 器 语 言(8)源 程 序。(9)说 明 语 句(10)。3.编 程 题(1)#includemain()(printf(This is a C program.nw);(2)#inc
2、ludemain()int a,b,sum;a=123;b=456;sum=a+b;printf(sum is%dn,sum);return 0;(3)#includeint main()int max(int x,int y);int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%dn”,c);return 0;)int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);项 目 二 L 选 择 题(1)B(2)A(3)C(4)B(5)D(6)C(7)D(8)A(9)C(10)D2.填 空 题
3、(1)6_ 6 第 1 图 直 接 输 入 变 量 值,第 2 图 具 有 交 互 功 能(2)_6_ _6_ 113.04(3)_25 _J2_(4)当 x2时,输 出 x,当 x W 2 时,输 出 x+2的 值(5)当 xl时,y=x-2;当 x W l 时,y=2*最 后 输 出 y 的 值(6)当 x W 2 时,y=x,;当 2xW5 时,y=2x-3;当 x 5 时,y=l/x(7)当 整 数 x 为 偶 数 时,x 赋 值 为 x/2,x 为 奇 数 时,x 赋 值 为(x+1)/2,最 后 输 出 x 的 值(8)i100 或 i=99(9)1.25(10)S-S+l/(2*
4、i-l)i i+13.绘 制 流 程 图(或 N-S图)(1)三 个 数 比 较 的 流 程 图(2)九 九 乘 法 表 的 流 程 图(3)分 段 函 数(4)输 入 10个 数,求 最 大 值(5)用 辗 转 相 除 法 求 最 大 公 约 数 实 训 内 容 答 案(1)红 球、白 球、黑 球 的 个 数 取 值 范 围 已 经 确 定,现 在 要 求 是 所 有 可 能 的 颜 色 搭 配 情 况,使 用 循 环 结 构 检 测 m、n 范 围 内 的 所 有 可 能 取 值,再 代 入 8-m-n6中 进 行 验 证,能 够 满 足 条 件 8-m-nW6的 那 些 m、n 和 8-
5、u r n的 组 合 即 为 问 题 的 解。流 程 图 如 下:程 序 参 考:Sinclude main()(int m,n,number=O;for(m=0;m=3;m+)for(n=0;n=3;n+)if(8-m-n=6)printf(%2d:%d%d%dn”,+number,m,n,8-m-n);)(2)利 用 多 重 循 环 嵌 套 的 for语 句 实 现,用 三 重 循 环 分 别 控 制 百 位、十 位、个 位 上 的 数 字,在 已 经 组 成 的 排 列 数 中,去 掉 重 复 的 1、2、3、4,这 些 数 字 不 满 足 条 件。程 序 参 考:Sincludemai
6、n()(int i,j,k,count=0;for(i=l;i5;i+)for(j=l;j5;j+)for(k=l;k5;k+)(if(i!=k&i!=j&j!=k)(count+;printf(%d%d%d,i,j,k);printf(nthe number is%d”,count);)(3)采 用 循 环 结 构,每 循 环 一 次 就 实 现 一 次 累 加,总 共 循 环 64次 课 获 得 累 加 和。程 序 参 考:Sinclude Sinclude mainOIdouble sum=0;int i;for(i=0;i64;i+)sum=sum+pow(2,i);printf(“国
7、 王 赏 赐 给 宰 相 的 麦 子 数 为:%fn,sum);(4)#includemain()int a,b,x,y;for(a=l;a10;a+)for(b=l;b10;b+)for(x=l;x10;x+)for(y=l;y10;y+)if(600+a*10+3)*b=(4000+x*100+50+y)printf(/z%d,%d,%d,%dn”,a,b,x,y);项 目 三 1.选 择 题(1)D(2)C(3)B(4)C(6)C(7)B(8)A(9)A(11)C(12)D(13)D(14)B2.填 空 题(1)ASCCH 码 值(2)66_(3)整 数(4)dobule x=0,y=0
8、;(5)自 动 类 型 转 换 强 制 类 型 转 换(6)心(7)原 样 输 出 存 储 空 间(5)A(10)D(15)C(8)3;5 o(9)_3_(10)1 o3.编 程 题(1)#include#includemain()int num,a,b,s,p;printf(“请 输 入 一 个 三 位 整 数:”);scanf(,&num);a=num%10;b=num/10%10;c=num/100;s=a+b+c;p=a*b*c;printf(s=%d,p=%d”,s,p);)(2)#includemain()float a,b,c,sum=0,ave;scanf(u%f%f%f,&a
9、,&b,&c);sum=sum/3;printf(sum=%f,ave=%fv,sum,ave);)(3)#includemainO char ch;printf(“请 输 入 一 个 字 符:”);scanf(%ch,&ch);/ch=getchar();ch=ch+32;printf(ch=%c,ch=%dn,ch,ch);)(4)#includemainO int x,y;printf(“请 输 入 两 个 整 数:”);scanf(%d%d”,&x,&y);printf(两 数 的 商 是 2f,两 数 的 余 数 是%dn”,(double)x/y,x%y);项 目 四 L 选 择
10、题(1)D(2)C(3)A(4)C(5)A(6)C(7)C(8)C(9)B(10)B(11)C(12)A(13)B(14)D(15)B2.填 空 题(1)=10|x T0(8)1(9)(ch=a)&(ch=z)(10)常 量 或 常 量 表 达 式 o3.编 程 题(1)Sinclude mainOfloat a,b,c,min;printf(请 输 入 3 个 数:);scanf,&a,&b,&c);min=a;if(minb)min=b;if(minc)min=c;printf(最 小 数:%f,min);(2)#includemain()char x;printf(请 输 入 一 个 字
11、 符);scanf(%c,&x);if(x=,a,&x=A&x=0,&x=,9,)printf(数 字 字 符);else printf(其 它 字 符);(3)Sinclude#define PI 3.1415926main()float r,s,c;printf(输 入 半 径:);s c a n f&r);if(r0)s=PI*r*r;c=2*PI*r;printf(面 积 为%.2f,周 长 为%.2f,s,c);)else printf(半 径 必 须 大 于 0);)(4)Sinclude main()float juli,fei;printf(请 输 入 里 程 公 里 数:);
12、scanf(%f,&juli);if(juli=3)fei=10;else fei=10+(juli-3)*1.4;printf(出 租 车 费 为:%2f,fei);(5)main()float a,b,c,d,xl,x2;printf(请 输 入 方 程 的 三 个 系 数:);scanf(,z%f%f%f/z,&a,&b,&c);d=b*b 4*a*c;if(d0)xl=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(z/xl=%f,x2二 f”,xl,x2);)else if(d=0)xl=x2=(-b)/(2*a);printf(,xl=x
13、2=%f/z,xl);)else printf(此 方 程 无 解!“方(6)#include main()float score;int grade;printf(请 输 入 成 绩(百 分 制):);scanf(f,&score);grade=score/10;switch(grade)case 10:case 9:printf(An);break;case 8:printf(Bn);break;case 7:printf(Cn);break;case 6:printf(Dn);break;default:printf(W);项 目 五 L 选 择 题(1)C(2)C(3)B(4)C(5)
14、A(6)A(7)A(8)C(9)C(10)B(11)D(12)C(13)A(14)A(15)B2.填 空 题(1)for 语 句、while 语 句 dowhile 语 句(2)循 环 变 量 赋 初 值 循 环 条 件 判 断 循 环 变 量 更 新(3)dowhile 语 句 for 语 句 和 while 语 句(4)break 语 句 continue 语 句(5)break 语 句 continue 语 句(6)switch结 构 循 环 结 构(7)while(x)while(!x)(8)不 能 省 略 3.编 程 题(1)#includemain()int i,sum=0;for
15、(i=2;i=256;i*=2)sum+=i;printf(和 为%d,sum);)(2)方 法 1:#includemain()int i,cnt=0;for(i=l;i50;i+)if(i%3=0)continue;printf(%4d,i);cnt+;if(cnt%8=0)printfCV);)方 法 2:#includemainOint i,cnt=0;for(i=l;i50;i+)if(i%3!=0)printf(4d,i);cnt+;if(cnt%8=0)printf(z,nzz);)(3)#includemainO int i,x=l,sum=0;for(i=l;i=5;i+)x
16、*二 i;sum+=x;)printf C 1!+2!+3!+4!+5!=%d,z,sum);)(4)#includemainO int x,i=l;while(l)if(i+5)%6=0&(i-5)%7=0)break;i+;printf(%d”,i);)(5)#includemain()int a,n,i,s=0,sum=O;printf(输 入 一 个 数 字 a 和 一 个 整 数 n);scanf(%d%d”,&a,&n);for(i=l;i=n;i+)s=s*10+a;sum+=s;)printf(%d”,sum);)(6)Sinclude main()int i,j;for(i=
17、l;i=9;i+)for(j=l;j=i;j+)printf(/%3d+%d=%-3d,/,j,i,i+j);printf(n);)项 目 六 1.选 择 题(1)D(2)D(3)B(4)C(5)A(6)C(11)C(7)B(12)A(8)B(9)D(10)B(13)D(14)D(15)B2.填 空 题(1)数 据 类 型 _0(2)连 续 数 组 名(3)行 列(4)6_(5)int a10=9,2,7,32,-5;(6)Dev-C+5.10(7)48_(8)3 0 0(9)strcpy(s2,sl);(9)103.编 程 题(1)#include m ainO in t num20=2,-
18、3,51,-72,86,4,0,-23,3,-6 5,-1,0,5,8,2,-4,-7,-9,4,-8;int sum=O,i;for(i=0;i20;i+)if(numi0)sum=sum+numi;)printf(sum=%dn”,sum);)(2)#includem ainO int a10,i,n=0;printf(输 入 10 个 整 数:n);for(i=0;i10;i+)s c a n f&a i);for(i=0;i10;i+)if(ai%2)printf(/?%d,ai);n+;printf(z/n 奇 数 个 数 卷 dn”,n);(3)#includemain()floa
19、t a103;int i,j,n=0;for(i=0;i10;i+)for(j=0;j3;j+)s c a n f&a i j);for(i=0;i=60&ai1=60&ai2=60)n+;printf(z,n 及 格 人 数 为%dn”,n);)(4)#include main()int a23,b32,i,j;for(i=0;i2;i+)for(j=0;j3;j+)s c a n f&a i j);for(i=0;i3;i+)for(j=0;j2;j+)for(i=0;i3;i+)for(j=0;j2;j+)printf(%5d,bi j);printf(n);(5)Sinclude Si
20、nclude main()char a20,t;int i,j,k;gets(a);k=strlen(a);for(i=0;i=k-2;i+=2)for(j=i+2;jaj)t=ai;ai=aj;aj=t;)puts(a);)(6)#include main()char x=language”;char y=Ibngma”;int i=O;while(xi!=O!=O)if(xi=yi)printf(枇,xi+);else i+;项 目 七 1.选 择 题(1)A(2)C(3)B(4)B(5)A(6)C(7)C(8)A(9)A(10)C(11)A(12)C(13)A(14)C(15)C2.填
21、空 题(1)int(2)b=i+l(3)iaj(5)p=j xi p LineMax(x)(6)5JL(7)15_(8)5,8(9)120(10)_10_3.编 程 题(1)Sinclude mainOfloat a,b,c,min;printf(请 输 入 3 个 数:”);scanfC%f%f%r,&a,&b,&c);min=a;if(minb)min=b;if(minc)min=c;printf(最 小 数:%f,min);)(2)#includemainOchar x;printf(请 输 入 一 个 字 符”);s c a n f&x);if(x-a&x=,A&x=0&x=9)pri
22、ntf(数 字 字 符);else printf(其 它 字 符);)(3)Sinclude#define PI 3.1415926mainOfloat r,s,c;printf(输 入 半 径:);s c a n f&r);if(r0)s=PI*r*r;c=2*PI*r;printf(面 积 为%.2f,周 长 为%.2f,s,c);else printf(半 径 必 须 大 于 0);)(4)Sinclude main()float juli,fei;printf(请 输 入 里 程 公 里 数:);scanf(%f,&juli);if(juli0)xl=(-b+sqrt(d)/(2*a)
23、;x2=(-b-sqrt(d)/(2*a);printf(z,xl=%f,x2=%f,xl,x2);)else if(d=0)xl=x2=(-b)/(2*a);printf(xl=x2=%f,xl);else printf(此 方 程 无 解!“);(6)#include main()float score;int grade;printf(”请 输 入 成 绩(百 分 制):);scanf&score);grade=score/10;switch(grade)case 10:case 9:printf(An);break;case 8:printf(Bn);break;case 7:prin
24、tf(Cn);break;case 6:printf(Dn);break;default:printf(En);项 目 八 L 选 择 题(1)B(2)D(6)C(7)B(3)A(4)A(5)A(8)A(9)C(10)B(11)C(12)D(13)C(14)A(15)C2.填 空 题(1)(double*)(2)O n+(3)(4)5(5)0(6)10(7)int*(p4)(8)*(+p)(9)T*sn(10)s邛+3 23.编 程 题(1)#includeint main()void inv(int*x,int n);int i,arr10,*p=arr;printf(The origina
25、l array:n;for(i=0;i10;i+,p+)scanf(%d”,p);printf(n”);p=arr;inv(p,10);printf(The array has been inverted:nv);for(p=arr;parr+10;p+)printf(“双 1,*p);printf(n);)void inv(int*x,int n)int*p,m,temp,*i,*p;m=(n-l)/2;i=x;j=x+n-l;p=x+m;for(;i=p;i+,j)temp=*i;*i=*j;*j=temp;return;)(2)#incldeint mainO void average(
26、float*p,int n);void search(float(*p)4,int n);float score3 4=65,67,70,60,80,87,90,81,90,99,100,98;average(*score,12);search(score,2);void average(float*p,int n)float*p_end;float sum=0,aver;p_end=p+n-l;for(;p=p_end;p+)sum=sum+(*p);aver=sum/n;printf(average=%5.2fn,aver);void search(float(*p)4,int n)int
27、 i;printf(The score of No.%d are:n”,n);for(i=0;i4;i+)printf(,*(*(p+n)+i);printf(n”);(3)#includeint*max(int a,int n)(int*p,i;for(p=a,i=l;in;i+)if(*p ai)p=a+i;return(p);)main()(int a10,*q,i;for(i=0;i10;i+)scanf(%d”,&ai);q=max(a,10);printf(nMAX=%d,*q);(4)ttinclude void insert(char str,char ch)int i=0;c
28、har c;while(c=stri)if(ch!=c)i+;else break;if(c=0)stri=ch;stri+1=0;main()char s20=1234abcd,cl=a,c2=x;insert(s,cl);puts(s);insert(s,c2);puts(s);getchO;)(5)#include void fun(int*a,int n,int*odd,int*even)int i;*odd=*even=0;for(i=0;in;i+)i f(ai%2=0)(*even)+=ai;else(*odd)+=ai;)main()int a10=l,2,3,4,5,6,7,
29、8,9,11;int si,s2;fun(a,10,&sl,&s2);printf(sum of odd=%dn,si);printf(Usum of even=%dnv,s2);getch();)(6)#include Sinclude math,h”int prim(int n)判 断 n 是 否 为 素 数 int i,k=sqrt(n),ok=l;for(i=2;i=k;i+)if(n%i=O)ok=0;break;return ok;void fun(int n,int*p,int*q)int nl,n2;if(n%2)printf(unot evenn);return;n 不 是
30、偶 数 返 回 for(nl=3;nln/2;nl+=2)n2=n-nl;if(prim(nl)&prim(n2)nl 和 n2 都 是 素 数*p=nl;*q=n2;return;)mainO int nl,n2,n;for(n=100;n,n,nl,n2);getch();)项 目 九 1.选 择 题(1)D(2)D(3)C(4)C(5)A(6)A(7)B(8)C(9)C(10)C(11)D(12)B(13)A(14)B(15)B2.填 空 题(1)结 构 体 类 型 slrucl(2)先 定 义 类 型,再 定 义 变 量 定 义 类 型 的 同 时 定 义 变 量 直 接 定 义 变
31、量(3)13个 字 节(4)共 用 体 类 型 union(5)typedef(6)可 以 不 能(7)8 个 字 节(8)结 构 体 变 量 名.成 员 名 成 员 运 算 符 1级(9)可 以(11)结 构 体 数 组 O3.编 程 题(1)typedef struct designerchar name10;int age;DESIGN;(2)typedef struct designerchar name10;int age;DESIGN;Sinclude main()struct chanpinchar prod10;DESIGN person;int price;int num;i
32、nt zong;goods;printf(z,%d,/,sizeof(goods);)(3)typedef struct designerchar name10;int age;D ESIGN;Sinclude main()int i;stru c t chanpinchar prod10;D ESIG N person;in t price;in t num;in t zong;x 3=spring,Jane”,32,560,2000,lucky,Tom,28,600,1800),Mary,35,680,2200;for(i=0;i3;i+)printf C%10s%10s%4d%5d%6d
33、zz,x i prod,x i person,name,x i.person,age,x i.price,x i.num);p rin tf(n);)(4)typedef stru c t designerchar name10;in t age;D ESIGN;ttinclude Sinclude main()int i,cnt=0;char pin10;stru c t chanpinchar prod10;D ESIG N person;in t price;in t num;int zong;x 3=spring,Jane”,32,560,2000,lucky,Tom,28,600,1
34、800,Clear,Mary,35,680,2200;printf(请 输 入 要 查 询 的 产 品 名 称:);gets(pin);printf(n);for(i=0;i3;i+)if(strcmp(xi.prod,pin)=0)printf(zz%10s%10s%4d%5d%6dz/,xi prod,xi person,name,xi.person,age,xi.price,xi.num);cnt+;if(cnt=0)printf(没 有 此 产 品);)(5)typedef struct designerchar name10;int age;DESIGN;Sinclude main(
35、)int i;struct chanpinchar prod10;DESIGN person;int price;int num;int zong;x3=spring”,Jane”,32,560,2000),lucky,Tom,28,600,1800,Clear,Mary,35,680,2200);for(i=0;i3;i+)xi.zong=xi.price*xi num;printf(%10s%10s%4d%5d%6d%12d,xi.prod,xi.person.name,xi person,age,xi.price,xi.num,xi.zong);printf(n);)(6)typedef
36、 struct designerchar name10;int age;DESIGN;#include mainOint i,j;struct chanpinchar prod10;DESIGN person;int price;int num;int zong;goods,x 3=spring”,Jane”,32,560,2000),lucky,Tom,28,600,1800),,zleaf,z,z,Maryz/,35,680,2200;for(i=0;i3;i+)xi.zong=xi price*xi.num;for(i=0;i3;i+)for(j=i+l;j3;j+)if(xi.zong
37、xj.zong)goods=xi;xi=xj;xj=goods;)for(i=0;i3;i+)printf(z,%10s%10s%4d%5d%6d%12dz,,xi.prod,xi.person.name,xi.person.age,xi.price,xi.num,xi.zong);printf(n);)项 目 十 1.选 择 题(1)A(2)D(7)D(8)A(13)B(14)B2.填 空 题(3)C(4)B(9)C(10)B(15)C(5)D(6)A(11)C(12)A(1)!feof(fp)count+(2)r fgets(str,6,fp);(3)“w+a=getc(fpl)(4)fg
38、etc(fp)fclose(fp)(5)fseek(fp,TL,SEEK CUR)fseek(fp,ftell(fp),SEEK SET)(6)a+Fwrite(str2,6,1,fp)(7)(fp=fopen(E:test.txt,w)(c=getchar()!=n(8)(ch=getchar()!=!(9)work,d a t,r”(12)“test,d a t,“wb”fpfp3*sizeof(char)3.编 程 题(1)#include void main()|FILE*fp;char*strl=secondn,*str2=first”;if(fp=fopen(“test,dat”,
39、“w+)=NULL)(printf(不 能 打 开 文 件 n);exit(0);)fwrite(strl,6,1,fp);fseek(fp,0L,SEEK_SET);fwrite(str2,5,1,fp);fclose(fp);(2)#include void main()(int i,n;FILE*fp;if(fp=fopen(atemp.txt,“w+)=NULL)(printf(不 能 建 立 文 件 不”);exit(0);)for(i=l;i=10;i+)fprintf(fp,n%3d”,i);for(i=0;i5;i+)(fseek(fp,i*6L,SEEK_SET);fscan
40、f(fp,%d”,&n);printf(“%3d”,n);)printf(n);fclose(fp);)(3)ttinclude int main()(int p=0,n=0,z=0,temp;FILE*fp;if(fp=fopen(anum.dat”,r)=NULL)(printf(不 能 打 开 文 件 不”);exit(0);)while(!feof(fp)(fscanf(fp,%d,J,&temp);if(temp0)p+;else if(temp0)n+;else z+;fclose(fp);printf(“正 整 数 的 个 数 为:%d,零 的 个 数 为:%d,负 整 数 的
41、个 数 为:dn”,p,z,n);return 0;)(4)#include int main()FILE*fp;char str100,filename10;int i=0;if(fp=fopen(little,txt,w)=NULL)(printf(不 能 打 开 文 件!n);exit(0);)printf(Enter a string:0,?);gets(str);while(stri!=#)(if(stri=,a&stri=,z)str i=stri-32;fputc(stri,fp);i+;)fclose(fp);fp=fopen(little.txt,”r”);fgets(str
42、,strlen(str)+l,fp);printf(%sn,str);fclose(fp);return 0;)(5)Sinclude void mainO(FILE*fp;int count=0;char buff50;if(fp=fopen(test,dat“,“r)=NULL)(printf(不 能 打 开 文 件!n”);exit(0);)while(!feof(fp)fgets(buff,50,fp);count+;)printf(count=%dn”,count);fclose(fp);实 训 内 容 答 案(1)#include void main()(FILE*fp;char
43、ch;if(fp=fopen(test,dat,w)=NULL)exit(0);while(ch=getchar()!=,#)fputc(ch,fp);fclose(fp);)(2)include#include void main()(int i=0;char str60,fname10;FILE*fp;printf(请 指 定 的 输 入 文 件 名:n”);scanf(,fname);if(fp=fopen(fname,r)=NULL)(printf(不 能 打 开%s 文 件 n”,fname);exit(0);)while(fgets(str,60,fp)!=NULL)printf(
44、%3d:%s,+i,str);fclose(fp);)(3)Sinclude void mainOFILE*fp;long fl;fp=fopen(test.dat,rb);fseek(fp,0,SEEK_END);fl=ftell(fp);fclose(fp);printf(%dn,fl);)(4)#include void mainOIFILE*fp;char ch;int a6,i;if(fp二 fopen(test,dat,w)=NULL)(printf(不 能 打 开 文 件 n);exit(0);Iprintf(“输 入 6 个 整 数:n);scanf(%d%d%d%d%d%d”,a,a+1,a+2,a+3,a+4,a+5);for(i=0;i6;i+)fprintf(fp,%d,ai);fclose(fp);fp=fopen(test.dat,r”);while(ch=fgetc(fp)!=E0F)printf(%c”,ch);fclose(fp);