C程序设计第四版习题完整版答案【排版整洁】(五篇范文)

时间:2019-05-12 23:01:00下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C程序设计第四版习题完整版答案【排版整洁】》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C程序设计第四版习题完整版答案【排版整洁】》。

第一篇:C程序设计第四版习题完整版答案【排版整洁】

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include int main(){ printf(“**************************nn”);printf(“

Very Good!nn”);printf(“**************************n”);return 0;}

1-6#include int main(){int a,b,c,max;printf(“please input a,b,c:n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max

第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78习题82

3-1 #include #include int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf(“p=%fn”,p);return 0;}

3-2-1 #include #include int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;

p1=p*((1+r5)*5);

// 一次存5年期

p2=p*(1+2*r2)*(1+3*r3);

// 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2);

// 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5);

// 存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(1+r0/4,4*5);

// 存活期存款。活期利息每一季度结算一次 printf(“p1=%fn”,p1);

// 输出按第1方案得到的本息和 printf(“p2=%fn”,p2);

// 输出按第2方案得到的本息和 printf(“p3=%fn”,p3);

// 输出按第3方案得到的本息和 printf(“p4=%fn”,p4);

// 输出按第4方案得到的本息和 printf(“p5=%fn”,p5);

// 输出按第5方案得到的本息和 return 0;}

3-2-2 #include #include int main(){double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;

p1=p*((1+r5)*5);

// 一次存5年期

p2=p*(1+2*r2)*(1+3*r3);

// 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2);

// 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5);

// 存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(1+r0/4,4*5);

// 存活期存款。活期利息每一季度结算一次 printf(“p1=%fn”,p1);

// 输出按第1方案得到的本息和 printf(“p2=%fn”,p2);

// 输出按第2方案得到的本息和 printf(“p3=%fn”,p3);

// 输出按第3方案得到的本息和 printf(“p4=%fn”,p4);

// 输出按第4方案得到的本息和 printf(“p5=%fn”,p5);

// 输出按第5方案得到的本息和 return 0;} 3-2-3 #include #include int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;

p1=p*((1+r5)*5);

// 一次存5年期

p2=p*(1+2*r2)*(1+3*r3);

// 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2);

// 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5);

// 存1年期,到期后将本息存再存1年期,连续存5次

p5=p*pow(1+r0/4,4*5);

// 存活期存款。活期利息每一季度结算一次 printf(“p1=%10.2fn”,p1);

// 输出按第1方案得到的本息和 printf(“p2=%10.2fn”,p2);

// 输出按第2方案得到的本息和 printf(“p3=%10.2fn”,p3);

// 输出按第3方案得到的本息和 printf(“p4=%10.2fn”,p4);

// 输出按第4方案得到的本息和 printf(“p5=%10.2fn”,p5);

// 输出按第5方案得到的本息和 return 0;}

3-3.#include #include int main(){float d=300000,p=6000,r=0.01,m;m=log10(p/(p-d*r))/log10(1+r);printf(“m=%6.2fn”,m);return 0;}

3-4 #include  int main(){int c1,c2;c1=197;c2=198;printf(“c1=%c,c2=%cn”,c1,c2);printf(“c1=%d,c2=%dn”,c1,c2);return 0;}

3-5 #include int main(){int a,b;float x,y;char c1,c2;scanf(“a=%d b=%d”,&a,&b);scanf(“%f %e”,&x,&y);scanf(“%c%c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn”,a,b,x,y,c1,c2);return 0;}

3-6 #include int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf(“passwor is %c%c%c%c%cn”,c1,c2,c3,c4,c5);return 0;} 3-7 #include int main(){float h,r,l,s,sq,vq,vz;float pi=3.141526;printf(“请输入圆半径r,圆柱高h∶”);scanf(“%f,%f”,&r,&h);

//要求输入圆半径r和圆柱高h l=2*pi*r;

//计算圆周长l s=r*r*pi;

//计算圆面积s sq=4*pi*r*r;

//计算圆球表面积sq vq=3.0/4.0*pi*r*r*r;

//计算圆球体积vq vz=pi*r*r*h;

//计算圆柱体积vz printf(“圆周长为:

l=%6.2fn”,l);printf(“圆面积为:

s=%6.2fn”,s);printf(“圆球表面积为:

sq=%6.2fn”,sq);printf(“圆球体积为:

v=%6.2fn”,vq);printf(“圆柱体积为:

vz=%6.2fn”,vz);return 0;}

3-8-1 #include int main(){ int c1,c2;

//整型定义 printf(“请输入两个整数c1,c2:”);scanf(“%d,%d”,&c1,&c2);printf(“按字符输出结果:n”);printf(“%c,%cn”,c1,c2);printf(“按ASCII码输出结果为:n”);printf(“%d,%dn”,c1,c2);return 0;}

3-8-2 #include int main(){ char c1,c2;

//定义字符型变量 int i1,i2;

//定义整型变量 printf(“请输入两个字符c1,c2:”);scanf(“%c,%c”,&c1,&c2);i1=c1;

//赋值给整型变量 i2=c2;printf(“按字符输出结果:n”);printf(“%c,%cn”,i1,i2);printf(“按整数输出结果:n”);printf(“%d,%dn”,c1,c2);return 0;} 3-8-3 #include int main(){ char c1,c2;

//定义为字符型 int i1,i2;

//定义为整型 printf(“请输入两个整数i1,i2:”);scanf(“%d,%d”,&i1,&i2);c1=i1;

c2=i2;printf(“按字符输出结果:n”);printf(“%c,%cn”,c1,c2);printf(“按整数输出结果:n”);printf(“%d,%dn”,c1,c2);return 0;}

3-8 #include int main(){ char c1,c2;printf(“请输入两个字符c1,c2:”);c1=getchar();c2=getchar();printf(“用putchar语句输出结果为:”);putchar(c1);putchar(c2);printf(“n”);printf(“用printf语句输出结果为:”);printf(“%c %cn”,c1,c2);return 0;}

第4章选择结构程序设计85 4.1选择结构和条件判断85 4.2用if语句实现选择结构87 4.2.1用if语句处理选择结构举例87 4.2.2if语句的一般形式 89 4.3关系运算符和关系表达式91 4.3.1关系运算符及其优先次序91

//将整数赋值给字符变量 4.3.2关系表达式92 4.4逻辑运算符和逻辑表达式92 4.4.1逻辑运算符及其优先次序93 4.4.2逻辑表达式94 4.4.3逻辑型变量96 4.5条件运算符和条件表达式97 4.6选择结构的嵌套99 4.7用switch语句实现多分支选择结构102 4.8选择结构程序综合举例105习题111 4-4-1 #include int main(){ int a,b,c;printf(“请输入三个整数:”);scanf(“%d,%d,%d”,&a,&b,&c);if(a

4-4-2 #include int main(){ int a,b,c,temp,max;printf(“请输入三个整数:”);scanf(“%d,%d,%d”,&a,&b,&c);temp=(a>b)?a:b;

/*将a和b中的大者存入temp中*/ max=(temp>c)?temp:c;

/*将a和b中的大者与c比较,取最大者*/ printf(“三个整数的最大数是%dn”,max);return 0;}

4-5-2 #include #include #define M 1000 int main(){ int i,k;printf(“请输入一个小于%d的整数i:”,M);scanf(“%d”,&i);while(i>M){printf(“输入的数不符合要求,请重新输入一个小于%d的整数i:”,M);scanf(“%d”,&i);} k=sqrt(i);printf(“%d的平方根的整数部分是:%dn”,i,k);return 0;}

4-5 #include #include #define M 1000 int main(){ int i,k;printf(“请输入一个小于%d的整数i:”,M);scanf(“%d”,&i);if(i>M){printf(“输入的数不符合要求,请重新输入一个小于%d的整数i:”,M);scanf(“%d”,&i);} k=sqrt(i);printf(“%d的平方根的整数部分是:%dn”,i,k);return 0;}

4-6.#include int main(){ int x,y;printf(“输入x:”);scanf(“%d”,&x);if(x<1)

/* x<1 */ { y=x;printf(“x=%3d,y=x=%dn” ,x,y);} else if(x<10)

/* 1=

/* x>=10 */ { y=3*x-11;printf(“x=%d, y=3*x-11=%dn”,x,y);} return 0;}

4-7-1 #include int main(){ int x,y;printf(“enter x:”);scanf(“%d”,&x);y=-1;if(x!=0)if(x>0)y=1;else y=0;printf(“x=%d,y=%dn”,x,y);return 0;}

4-7-2 #include int main(){ int x,y;printf(“please enter x:”);scanf(“%d”,&x);y=0;if(x>=0)if(x>0)y=1;else y=-1;printf(“x=%d,y=%dn”,x,y);return 0;}

4-8 #include int main(){ float score;char grade;printf(“请输入学生成绩:”);scanf(“%f”,&score);while(score>100||score<0){printf(“n 输入有误,请重输”);scanf(“%f”,&score);} switch((int)(score/10)){case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5: case 4: case 3: case 2: case 1: case 0: grade='E';} printf(“成绩是 %5.1f,相应的等级是%cn ”,score,grade);return 0;}

4-9 #include #include int main(){ int num,indiv,ten,hundred,thousand,ten_thousand,place;位,十位,百位,千位,万位和位数

printf(“请输入一个整数(0-99999):”);scanf(“%d”,&num);if(num>9999)

//分别代表个

place=5;else if(num>999)place=4;else if(num>99)place=3;else if(num>9)place=2;else place=1;printf(“位数:%dn”,place);printf(“每位数字为:”);ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);switch(place){case 5:printf(“%d,%d,%d,%d,%d”,ten_thousand,thousand,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%d%d%dn”,indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%d%dn”,indiv,ten,hundred,thousand);break;case 3:printf(“%d,%d,%d”,hundred,ten,indiv);printf(“n反序数字为:”);printf(“%d%d%dn”,indiv,ten,hundred);break;case 2:printf(“%d,%d”,ten,indiv);printf(“n反序数字为:”);printf(“%d%dn”,indiv,ten);break;case 1:printf(“%d”,indiv);printf(“n反序数字为:”);printf(“%dn”,indiv);break;} return 0;}

4-10-1 #include int main(){ int i;double bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+100000*0.05;bon6=bon4+100000*0.03;bon10=bon6+400000*0.015;printf(“请输入利润i:”);scanf(“%d”,&i);if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bon1+(i-100000)*0.075;else if(i<=400000)bonus=bon2+(i-200000)*0.05;else if(i<=600000)bonus=bon4+(i-400000)*0.03;else if(i<=1000000)bonus=bon6+(i-600000)*0.015;else bonus=bon10+(i-1000000)*0.01;printf(“奖金是: %10.2fn”,bonus);return 0;}

4-10-2 #include int main(){ int i;double bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf(“请输入利润i:”);scanf(“%d”,&i);branch=i/100000;if(branch>10)branch=10;switch(branch){ case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break;case 2: case 3: bonus=bon2+(i-200000)*0.05;break;case 4: case 5: bonus=bon4+(i-400000)*0.03;break;case 6: case 7: case 8: case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bon10+(i-1000000)*0.01;} printf(“奖金是 %10.2fn”,bonus);return 0;}

4-11 #include int main(){int t,a,b,c,d;printf(“请输入四个数:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(a>d){ t=a;a=d;d=t;} if(b>c){ t=b;b=c;c=t;} if(b>d){ t=b;b=d;d=t;} if(c>d){ t=c;c=d;d=t;} printf(“排序结果如下: n”);printf(“%d %d %d %d n” ,a,b,c,d);return 0;}

4-12 #include int main(){ int h=10;float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;printf(“请输入一个点(x,y):”);scanf(“%f,%f”,&x,&y);d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);

/*求该点到各中心点距离*/ d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);if(d1>1 && d2>1 && d3>1 && d4>1)

h=0;/*判断该点是否在塔外*/ printf(“该点高度为 %dn”,h);return 0;}

第5章循环结构程序设计114 5.1为什么需要循环控制114 5.2用while语句实现循环115 5.3用do…while语句实现循环117 5.4用for 语句实现循环120 5.5循环的嵌套124 5.6几种循环的比较125 5.7改变循环执行的状态125 5.7.1用break语句提前终止循环126 5.7.2用continue语句提前结束本次循环127 5.7.3break语句和continue语句的区别128 5.8循环程序举例131习题140 5-2 #include #include

// 程序中用到数学函数fabs,应包含头文件math.n int main(){ int sign=1,count=0;

// sign用来表示数值的符号,count用来统计循环次数

double pi=0.0,n=1.0,term=1.0;

// pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值

while(fabs(term)>=1e-8)

// 检查当前项term的绝对值是否大于或等于10的(-6)次方 { pi=pi+term;

// 把当前项term累加到pi中 n=n+2;

// n+2是下一项的分母

sign=-sign;

// sign代表符号,下一项的符号与上一项符号相反

term=sign/n;

// 求出下一项的值term count++;

// count累加1 } pi=pi*4;

// 多项式的和pi乘以4,才是π的近似值 printf(“pi=%10.8fn”,pi);

// 输出π的近似值 printf(“count=%dn”,count);

// 输出循环次数 return 0;} 5-3 #include int main(){ int p,r,n,m,temp;printf(“请输入两个正整数n,m:”);scanf(“%d,%d,”,&n,&m);if(n int main(){ char c;int letters=0,space=0,digit=0,other=0;printf(“请输入一行字符:n”);while((c=getchar())!='n'){ if(c>='a' && c<='z' || c>='A' && c<='Z')letters++;else if(c==' ')space++;else if(c>='0' && c<='9')digit++;else other++;} printf(“字母数:%dn空格数:%dn数字数:%dn其它字符数:%dn”,letters,space,digit,other);return 0;}

5-5 #include int main(){ int a,n,i=1,sn=0,tn=0;printf(“a,n=:”);scanf(“%d,%d”,&a,&n);while(i<=n){ tn=tn+a;/*赋值后的tn为i个 a组成数的值*/ sn=sn+tn;/*赋值后的sn为多项式前i项之和*/ a=a*10;++i;} printf(“a+aa+aaa+...=%dn”,sn);return 0;}

5-6 #include int main()

{double s=0,t=1;int n;for(n=1;n<=20;n++){ t=t*n;s=s+t;} printf(“1!+2!+...+20!=%22.15en”,s);return 0;} 5-7 #include int main(){ int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for(k=1;k<=n1;k++)/*计算1到100的和*/ {s1=s1+k;} for(k=1;k<=n2;k++)/*计算1到50各数的平方和*/ {s2=s2+k*k;} for(k=1;k<=n3;k++)/*计算1到10的各倒数和*/ {s3=s3+1/k;} printf(“sum=%15.6fn”,s1+s2+s3);return 0;}

5-8 #include int main(){ int i,j,k,n;printf(“parcissus numbers are ”);for(n=100;n<1000;n++){ i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i + j*j*j + k*k*k)printf(“%d ”,n);} printf(“n”);return 0;}

5-9-1 #define M 1000

/*定义寻找范围*/ #include int main(){ int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for(a=2;a<=M;a++)

/* a是2-1000之间的整数,检查它是否完数 */ {n=0;

/* n用来累计a的因子的个数 */ s=a;

/* s用来存放尚未求出的因子之和,开始时等于a */ for(i=1;i

/* 检查i是否a的因子 */ if(a%i==0)

/* 如果i是a的因子 */ {n++;

/* n加1,表示新找到一个因子 */ s=s-i;

/* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n)

/* 将找到的因子赋给k1...k9,或k10 */ {case 1: k1=i;break;

/* 找出的笫1个因子赋给k1 */ case 2: k2=i;break;

/* 找出的笫2个因子赋给k2 */ case 3: k3=i;break;

/* 找出的笫3个因子赋给k3 */ case 4: k4=i;break;

/* 找出的笫4个因子赋给k4 */ case 5: k5=i;break;

/* 找出的笫5个因子赋给k5 */ case 6: k6=i;break;

/* 找出的笫6个因子赋给k6 */ case 7: k7=i;break;

/* 找出的笫7个因子赋给k7 */ case 8: k8=i;break;

/* 找出的笫8个因子赋给k8 */ case 9: k9=i;break;

/*找出的笫9个因子赋给k9 */ case 10: k10=i;break;

/* 找出的笫10个因子赋给k10 */ } } if(s==0){ printf(“%d ,Its factors are ”,a);if(n>1)printf(“%d,%d”,k1,k2);

/* n>1表示a至少有2个因子 */ if(n>2)printf(“,%d”,k3);

/* n>2表示至少有3个因子,故应再输出一个因子 */ if(n>3)printf(“,%d”,k4);

/* n>3表示至少有4个因子,故应再输出一个因子 */ if(n>4)printf(“,%d”,k5);

/* 以下类似 */ if(n>5)printf(“,%d”,k6);if(n>6)printf(“,%d”,k7);if(n>7)printf(“,%d”,k8);if(n>8)printf(“,%d”,k9);if(n>9)printf(“,%d”,k10);printf(“n”);} } return 0;}

5-9-2 #include int main(){int m,s,i;for(m=2;m<1000;m++){s=0;for(i=1;i

5-10 #include int main(){ int i,n=20;double a=2,b=1,s=0,t;for(i=1;i<=n;i++){ s=s+a/b;t=a, a=a+b, b=t;} printf(“sum=%16.10fn”,s);return 0;}

5-11 #include int main(){ double sn=100,hn=sn/2;int n;for(n=2;n<=10;n++){ sn=sn+2*hn;

/*第n次落地时共经过的米数*/ hn=hn/2;

/*第n次反跳高度*/ } printf(“第10次落地时共经过%f米n”,sn);printf(“第10次反弹%f米n”,hn);return 0;}

5-12 #include int main(){ int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;

/*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;} printf(“total=%dn”,x1);return 0;}

5-13 #include #include int main(){ float a,x0,x1;printf(“enter a positive number:”);scanf(“%f”,&a);x0=a/2;x1=(x0+a/x0)/2;do {x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf(“The square root of %5.2f is %8.5fn”,a,x1);return 0;}

5-14 #include #include int main(){double x1,x0,f,f1;x1=1.5;do {x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf(“The root of equation is %5.2fn”,x1);return 0;}

5-15 #include #include int main(){float x0,x1,x2,fx0,fx1,fx2;do {printf(“enter x1 & x2:”);scanf(“%f,%f”,&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do {x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fx1)<0){x2=x0;fx2=fx0;} else {x1=x0;fx1=fx0;} }while(fabs(fx0)>=1e-5);printf(“x=%6.2fn”,x0);return 0;}

5-16 #include int main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(“ ”);for(k=0;k<=2*i;k++)printf(“*”);printf(“n”);} for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(“ ”);for(k=0;k<=4-2*i;k++)printf(“*”);printf(“n”);} return 0;}

5-17 #include int main(){ char i,j,k;

/*是a的对手;j是b的对手;k是c的对手*/ for(i='x';i<='z';i++)for(j='x';j<='z';j++)if(i!=j)for(k='x';k<='z';k++)if(i!=k && j!=k)if(i!='x' && k!='x' && k!='z')printf(“A--%cnB--%cnC--%cn”,i,j,k);return 0;}

第6章利用数组处理批量数据142 6.1怎样定义和引用一维数组142 6.1.1怎样定义一维数组143 6.1.2怎样引用一维数组元素144 6.1.3一维数组的初始化145 6.1.4一维数组程序举例146 6.2怎样定义和引用二维数组148 6.2.1怎样定义二维数组149 6.2.2怎样引用二维数组的元素150 6.2.3二维数组的初始化151 6.2.4二维数组程序举例152 6.3字符数组154 6.3.1怎样定义字符数组154 6.3.2字符数组的初始化155 6.3.3怎样引用字符数组中的元素155 6.3.4字符串和字符串结束标志156 6.3.5字符数组的输入输出159 6.3.6使用字符串处理函数161 6.3.7字符数组应用举例165习题168 6-1 #include #include int main(){int i,j,n,a[101];for(i=1;i<=100;i++)a[i]=i;a[1]=0;for(i=2;i

6-2 #include int main(){int i,j,min,temp,a[11];printf(“enter data:n”);for(i=1;i<=10;i++){printf(“a[%d]=”,i);scanf(“%d”,&a[i]);} printf(“n”);printf(“The orginal numbers:n”);for(i=1;i<=10;i++)printf(“%5d”,a[i]);printf(“n”);for(i=1;i<=9;i++){min=i;for(j=i+1;j<=10;j++)if(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]=temp;} printf(“nThe sorted numbers:n”);for(i=1;i<=10;i++)printf(“%5d”,a[i]);printf(“n”);return 0;} 6-3 #include int main(){ int a[3][3],sum=0;int i,j;printf(“enter data:n”);for(i=0;i<3;i++)for(j=0;j<3;j++)scanf(“%3d”,&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf(“sum=%6dn”,sum);return 0;} 6-4 #include int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;printf(“array a:n”);for(i=0;i<10;i++)printf(“%5d”,a[i]);printf(“n”);printf(“insert data:”);scanf(“%d”,&number);end=a[9];if(number>end)a[10]=number;else {for(i=0;i<10;i++){if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;} break;} } } printf(“Now array a:n”);for(i=0;i<11;i++)printf(“%5d”,a[i]);printf(“n”);return 0;}

6-5 #include #define N 5 int main(){ int a[N],i,temp;printf(“enter array a:n”);for(i=0;i

//循环的作用是将对称的元素的值互换 { temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;} printf(“nNow,array a:n”);for(i=0;i

6-6 #include #define N 10 int main(){ int i,j,a[N][N];for(i=0;i

6-7 #include int main(){ int a[15][15],i,j,k,p,n;p=1;while(p==1){printf(“enter n(n=1--15):”);scanf(“%d”,&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;} for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;} else {if(i<1)i=n;if(j>n)j=1;} if(a[i][j]==0)a[i][j]=k;else {i=i+2;j=j-1;a[i][j]=k;} } for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf(“%5d”,a[i][j]);printf(“n”);} return 0;}

6-8 #include #define N 4 #define M 5

/* 数组为4行5列 */ int main(){ int i,j,k,a[N][M],max,maxj,flag;printf(“please input matrix:n”);for(i=0;i

/* 输入数组 */ for(j=0;j

/* 开始时假设a[i][0]最大 */ maxj=0;

/* 将列号0赋给maxj保存 */ for(j=0;j

/* 找出第i行中的最大数 */ if(a[i][j]>max){max=a[i][j];

/* 将本行的最大数存放在max中 */ maxj=j;

/* 将最大数所在的列号存放在maxj中 */ } flag=1;

/* 先假设是鞍点,以flag为1代表 */ for(k=0;ka[k][maxj])

/* 将最大数和其同列元素相比 */ {flag=0;

/* 如果max不是同列最小,表示不是鞍点令flag1为0 */ continue;} if(flag)

/* 如果flag1为1表示是鞍点 */ {printf(“a[%d][%d]=%dn”,i,maxj,max);

/* 输出鞍点的值和所在行列号 */ break;} } if(!flag)

/* 如果flag为0表示鞍点不存在 */ printf(“It is not exist!n”);return 0;}

6-9 #include #define N 15 int main(){ int i,number,top,bott,mid,loca,a[N],flag=1,sign;char c;printf(“enter data:n”);scanf(“%d”,&a[0]);i=1;while(i=a[i-1])i++;else printf(“enter this data again:n”);} printf(“n”);for(i=0;i

//top是查找区间的起始位置 bott=N-1;

//bott是查找区间的最末位置

if((numbera[N-1]))//要查的数不在查找区间内 loca=-1;

// 表示找不到 while((!sign)&&(top<=bott)){mid=(bott+top)/2;if(number==a[mid]){loca=mid;printf(“Has found %d, its position is %dn”,number,loca+1);sign=1;} else if(number

6-10 #include int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for(i=0;i<3;i++){ printf(“please input line %d:n”,i+1);gets(text[i]);for(j=0;j<80 && text[i][j]!='';j++){if(text[i][j]>='A'&& text[i][j]<='Z')upp++;else if(text[i][j]>='a' && text[i][j]<='z')low++;else if(text[i][j]>='0' && text[i][j]<='9')dig++;else if(text[i][j]==' ')spa++;else oth++;} } printf(“nupper case: %dn”,upp);printf(“lower case: %dn”,low);printf(“digit

: %dn”,dig);printf(“space

: %dn”,spa);printf(“other

: %dn”,oth);return 0;}

6-11 #include int main(){ char a[5]={'*','*','*','*','*'};int i,j,k;char space=' ';for(i=0;i<5;i++){ printf(“n”);printf(“

”);for(j=1;j<=i;j++)printf(“%c”,space);for(k=0;k<5;k++)printf(“%c”,a[k]);} printf(“n”);return 0;}

6-12a-c #include int main(){ int j,n;char ch[80],tran[80];printf(“input cipher code:”);gets(ch);printf(“ncipher code :%s”,ch);j=0;while(ch[j]!=''){ if((ch[j]>='A')&&(ch[j]<='Z'))tran[j]=155-ch[j];else if((ch[j]>='a')&&(ch[j]<='z'))tran[j]=219-ch[j];else tran[j]=ch[j];j++;} n=j;printf(“noriginal text:”);for(j=0;j

6-12b #include int main(){int j,n;char ch[80];printf(“input cipher code:n”);gets(ch);printf(“ncipher code:%sn”,ch);j=0;while(ch[j]!=''){ if((ch[j]>='A')&&(ch[j]<='Z'))ch[j]=155-ch[j];else if((ch[j]>='a')&&(ch[j]<='z'))ch[j]=219-ch[j];else ch[j]=ch[j];j++;} n=j;printf(“original text:”);for(j=0;j

6-13

#include int main(){ char s1[80],s2[40];int i=0,j=0;printf(“input string1:”);scanf(“%s”,s1);printf(“input string2:”);scanf(“%s”,s2);while(s1[i]!='')i++;while(s2[j]!='')s1[i++]=s2[j++];s1[i]='';printf(“nThe new string is:%sn”,s1);return 0;}

6-14 #include int main(){ int i,resu;char s1[100],s2[100];printf(“input string1:”);gets(s1);printf(“ninput string2:”);gets(s2);i=0;while((s1[i]==s2[i])&&(s1[i]!=''))i++;if(s1[i]=='' && s2[i]=='')resu=0;else resu=s1[i]-s2[i];printf(“nresult:%d.n”,resu);return 0;}

6-15 #include #include int main(){ char s1[80],s2[80];int i;printf(“input s2:”);scanf(“%s”,s2);for(i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf(“s1:%sn”,s1);return 0;}

第7章用函数实现模块化程序设计170 7.1为什么要用函数170 7.2怎样定义函数172 7.2.1为什么要定义函数172 7.2.2定义函数的方法173 7.3调用函数174 7.3.1函数调用的形式174 7.3.2函数调用时的数据传递175 7.3.3函数调用的过程177 7.3.4函数的返回值178 7.4对被调用函数的声明和函数原型179 7.5函数的嵌套调用182 7.6函数的递归调用184 7.7数组作为函数参数192 7.7.1数组元素作函数实参193 7.7.2数组名作函数参数194 7.7.3多维数组名作函数参数197 7.8局部变量和全局变量199 7.8.1局部变量199 7.8.2全局变量200 7.9变量的存储方式和生存期204 7.9.1动态存储方式与静态存储方式204 7.9.2局部变量的存储类别205 7.9.3全局变量的存储类别208 7.9.4存储类别小结212 7.10关于变量的声明和定义214 7.11内部函数和外部函数215 7.11.1内部函数215 7.11.2外部函数215习题218 7-1-1 #include int main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;scanf(“%d,%d”,&u,&v);h=hcf(u,v);printf(“H.C.F=%dn”,h);l=lcd(u,v,h);printf(“L.C.D=%dn”,l);return 0;}

int hcf(int u,int v){int t,r;if(v>u){t=u;u=v;v=t;} while((r=u%v)!=0){u=v;v=r;} return(v);}

int lcd(int u,int v,int h){ return(u*v/h);}

7-1-2 #include int Hcf,Lcd;int main(){void hcf(int,int);void lcd(int,int);int u,v;scanf(“%d,%d”,&u,&v);hcf(u,v);lcd(u,v);printf(“H.C.F=%dn”,Hcf);printf(“L.C.D=%dn”,Lcd);return 0;}

void hcf(int u,int v){int t,r;if(v>u){t=u;u=v;v=t;} while((r=u%v)!=0){u=v;v=r;} Hcf=v;}

void lcd(int u,int v){ Lcd=u*v/Hcf;}

7-2 #include #include float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf(“input a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);printf(“equation: %5.2f*x*x+%5.2f*x+%5.2f=0n”,a,b,c);disc=b*b-4*a*c;printf(“root:n”);if(disc>0){ greater_than_zero(a,b);printf(“x1=%fttx2=%fn”,x1,x2);} else if(disc==0){equal_to_zero(a,b);printf(“x1=%fttx2=%fn”,x1,x2);} else {smaller_than_zero(a,b);printf(“x1=%f+%fitx2=%f-%fin”,p,q,p,q);} return 0;}

void greater_than_zero(float a,float b){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}

void equal_to_zero(float a,float b){ x1=x2=(-b)/(2*a);}

void smaller_than_zero(float a,float b){ p=-b/(2*a);q=sqrt(-disc)/(2*a);}

7-3 #include int main(){int prime(int);int n;printf(“input an integer:”);scanf(“%d”,&n);if(prime(n))printf(“%d is a prime.n”,n);else printf(“%d is not a prime.n”,n);return 0;}

int prime(int n){int flag=1,i;for(i=2;i

7-4 #include #define N 3 int array[N][N];int main(){ void convert(int array[][3]);int i,j;printf(“input array:n”);for(i=0;i

void convert(int array[][3]){int i,j,t;for(i=0;i #include int main(){void inverse(char str[]);char str[100];printf(“input string:”);scanf(“%s”,str);inverse(str);printf(“inverse string:%sn”,str);return 0;}

void inverse(char str[]){char t;int i,j;for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){t=str[i];str[i]=str[j-1];str[j-1]=t;} }

7-6

#include int main(){void concatenate(char string1[],char string2[],char string[]);char s1[100],s2[100],s[100];printf(“input string1:”);scanf(“%s”,s1);printf(“input string2:”);scanf(“%s”,s2);concatenate(s1,s2,s);printf(“nThe new string is %sn”,s);return 0;}

void concatenate(char string1[],char string2[],char string[]){int i,j;for(i=0;string1[i]!='';i++)string[i]=string1[i];for(j=0;string2[j]!='';j++)string[i+j]=string2[j];string[i+j]='';}

7-7 #include int main(){void cpy(char [],char []);char str[80],c[80];printf(“input string:”);gets(str);cpy(str,c);printf(“The vowel letters are:%sn”,c);return 0;}

void cpy(char s[],char c[]){ int i,j;for(i=0,j=0;s[i]!='';i++)if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U'){c[j]=s[i];j++;} c[j]='';}

7-8 #include #include int main(){char str[80];void insert(char []);printf(“input four digits:”);scanf(“%s”,str);insert(str);return 0;}

void insert(char str[]){int i;for(i=strlen(str);i>0;i--){str[2*i]=str[i];str[2*i-1]=' ';} printf(“output:n%sn”,str);} 7-9 #include int letter,digit,space,others;int main(){void count(char []);char text[80];printf(“input string:n”);gets(text);printf(“string:”);puts(text);letter=0;digit=0;space=0;others=0;count(text);printf(“nletter:%dndigit:%dnspace:%dnothers:%dn”,letter,digit,space,others);return 0;}

void count(char str[]){int i;for(i=0;str[i]!='';i++)if((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z'))letter++;else if(str[i]>='0' && str [i]<='9')digit++;else if(str[i]==32)space++;else others++;}

7-10 #include #include int main(){int alphabetic(char);int longest(char []);int i;char line[100];printf(“input one line:n”);gets(line);printf(“The longest word is :”);for(i=longest(line);alphabetic(line[i]);i++)printf(“%c”,line[i]);printf(“n”);return 0;}

int alphabetic(char c){if((c>='a' && c<='z')||(c>='A'&&c<='z'))return(1);else return(0);}

int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i<=strlen(string);i++)if(alphabetic(string[i]))if(flag){point=i;flag=0;} else len++;else {flag=1;if(len>=length){length=len;place=point;len=0;} } return(place);}

7-11 #include #include #define N 10 char str[N];int main(){void sort(char []);int i,flag;for(flag=1;flag==1;){printf(“input string:n”);scanf(“%s”,&str);if(strlen(str)>N)printf(“string too long,input again!”);else flag=0;} sort(str);printf(“string sorted:n”);for(i=0;i

void sort(char str[]){int i,j;char t;for(j=1;jstr[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;} }

7-12 #include #include int main(){float solut(float a,float b,float c,float d);float a,b,c,d;printf(“input a,b,c,d:”);scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);printf(“x=%10.7fn”,solut(a,b,c,d));return 0;}

float solut(float a,float b,float c,float d){float x=1,x0,f,f1;do {x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;} while(fabs(x-x0)>=1e-3);return(x);}

7-13 #include #define N 10 #define M 5 float score[N][M];float a_stu[N],a_cour[M];int r,c;

int main(){ int i,j;float h;float s_var(void);float highest();void input_stu(void);void aver_stu(void);void aver_cour(void);input_stu();aver_stu();aver_cour();printf(“n NO.cour1

cour2

cour3

cour4

cour5

avern”);for(i=0;i

NO.%2d

course %2dn”,h,r,c);printf(“variance %8.2fn”,s_var());return 0;}

void input_stu(void){int i,j;for(i=0;i

void aver_stu(void){int i,j;float s;for(i=0;i

void aver_cour(void){int i,j;float s;for(j=0;j

float highest(){float high;int i,j;high=score[0][0];for(i=0;ihigh){high=score[i][j];r=i+1;c=j+1;} return(high);}

float s_var(void){int i;float sumx,sumxn;sumx=0.0;sumxn=0.0;for(i=0;i

7-*14 #include #define N 10 #define M 5 float score[N][M];float a_stu[N],a_cour[M];int r,c;int main(){ int i,j;float h;float s_var(void);float highest();void input_stu(void);void aver_stu(void);void aver_cour(void);input_stu();aver_stu();aver_cour();printf(“n NO.cour1

cour2

cour3

cour4

cour5 for(i=0;i

NO.%2d

course %2dn“,h,r,c);printf(”variance %8.2fn“,s_var());return 0;}

void input_stu(void){int i,j;for(i=0;i

void aver_stu(void){int i,j;float s;for(i=0;i

avern”);a_stu[i]=s/5.0;} }

void aver_cour(void){int i,j;float s;for(j=0;j

float highest(){float high;int i,j;high=score[0][0];for(i=0;ihigh){high=score[i][j];r=i+1;c=j+1;} return(high);}

float s_var(void){int i;float sumx,sumxn;sumx=0.0;sumxn=0.0;for(i=0;i #include #define N 10 int main(){void input(int [],char name[][8]);void sort(int [],char name[][8]);void search(int ,int [],char name[][8]);int num[N],number,flag=1,c;char name[N][8];input(num,name);sort(num,name);while(flag==1){printf(“ninput number to look for:”);scanf(“%d”,&number);search(number,num,name);printf(“continue ot not(Y/N)?”);getchar();c=getchar();if(c=='N'||c=='n')flag=0;} return 0;}

void input(int num[],char name[N][8]){int i;for(i=0;i

void sort(int num[],char name[N][8]){ int i,j,min,templ;char temp2[8];for(i=0;inum[j])min=j;templ=num[i];strcpy(temp2,name[i]);num[i]=num[min];strcpy(name[i],name[min]);num[min]=templ;strcpy(name[min],temp2);} printf(“n result:n”);for(i=0;i

void search(int n,int num[],char name[N][8]){int top,bott,mid,loca,sign;top=0;bott=N-1;loca=0;sign=1;if((nnum[N-1]))loca=-1;while((sign==1)&&(top<=bott)){mid=(bott+top)/2;if(n==num[mid]){loca=mid;printf(“NO.%d , his name is %s.n”,n,name[loca]);sign=-1;} else if(n

7-16 #include #define MAX 1000 int main(){ int htoi(char s[]);int c,i,flag,flag1;char t[MAX];i=0;flag=0;flag1=1;

第二篇:C语言程序设计教程课后习题答案

C语言程序设计教程课后习题答案

第一章 C语言程序设计概述 -习题答案 算法的描述有哪些基本方法?

1、自然语言

2、专用工具C语言程序的基本结构是怎样的?举一个例子说明。

1、C语言程序由函数构成;

2、“/*”与“*/”之间的内容构成C语言程序的注释部分;

3、用预处理命令#include、#define可以包含有关文件或预定义信息;

4、大小写字母在C语言中是有区别的;

5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。C语言有什么特点?

1、具有结构语言的特点,程序之间很容易实现段的共享;

2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;

3、运算符丰富,包含的范围很广;

4、数据类型丰富;

5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;

6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;

7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。★指出合法与不合法的标识符命名。

AB12--√ leed_3--a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×说明下列Turbo C热键的功能。

F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。

①main()

{printf(“********************n”);printf(“ welcome you n”);printf(“ very good n);printf(”********************n“);} ②main()

{ int a,b,c,t;printf(”please input three numbers;“);scanf(”%d,%d,%d“,&a,&b,&c);/*教材S是错误的*/ t=max(max(a,b),c);printf(”max number is:%dn“,t);} int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);} 答

运行结果:

******************** welcome you very good ******************** 运行结果:

please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/ max number is:4 7 一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

main()8 在Turbo C环境下进行程序调试时,可以使用Run下拉菜单的___命令或按___键转到用户屏幕查看程序运行结果。

1、User screen

2、Alt+F5 9 ★C语言对标识符与关键字有些什么规定?

1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。

2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。C源程序输入后是如何进行保存的?

是以C为扩展名保存的纯文本文件。

第二章 C语言程序的基本数据类型与表达式 -习题答案 ★指出下列常数中哪些是符合C语法规定的。

''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--×请找出下列程序中的错误,改正后写出程序运行结果。

①void main(){int x,y=z=5,aver;x=7 AVER=(x+y+z)/3 printf(”AVER=%dn“,aver);} ②void main()

{ char c1='a';c2='b';c3='c';int a=3.5,b='A' printf(”a=%db='“endn”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 答

main(){int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(“AVER=%dn”,aver);}

运行结果:AVER=5 ②main()

{ char c1='a', c2='b', c3='c';int a=3,b='A';printf(“a=%d,b='%c'”end“n”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);}

运行结果:a=3,b='A'“end”

aabcc abc 3 写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。int 99

-1 char 'h'

unsigned int

float

55.78

long int

答 int 99 104 66 55 68-1 char 'c' 'h' 'B' '7' 'D'

unsigned int 99 104 66 55 68 65535

float 99.00 104.00 66.00 55.78 68.00-1.00

long int 99 104 66 55 68-1

★写出程序运行结果。

①void main(){int i,j;i=8,j=10;printf(“%d,%d,%d,%dn”,i,j,++i,j++);} ②main()

{ int a=1,b=2,c=30;;printf(“%d,%d,%d,%dn”,a=b=c,a=b==c,a==(b=c),a==(b==c));} 注意:a=b=c,a=b==c之间应为逗号,教材有误 答

运行结果: 9,11,9,10 运行结果: 30,1,0,0

③void main()

{int a=10,b=20,c=30,d;d=++a<=10||b-->=20||c++;printf(“%d,%d,%d,%dn”,a,b,c,d);}

运行结果: 11,19,30,1

★写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3)

⑵n++,a+=a-=a*=a ⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a

⑼a+b,18+(b=4)*3,(a/b,a%b)

⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾a

⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?

①m=(a=4,4*5)与m=a=4,4*5 ②(float)(a/b)与(float)a/b ③(int)a+b与(int)(a+b)④m%=2+a*3与m=m%2+a*3 ⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b 答

①前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;

②前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。

③因为a、b均为整数,其前后两个表达式的计算结果是一致的。

④前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;另外,前一表达式的m只被赋过一次值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。⑤前后表达式的计算结果应该是一致的:a=2, b=3, m=6 7 条件表达式x>0?x:-x的功能是什么?

如果x的值是一正数,则表达式的值为x值;如果x的值是一非正数,则表达式的值为-x。其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。用一个条件表达式描述从a、b、c中找出最大都赋给max.答

max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x为int型变量,则执行以下语句后x的值为()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下类型说明语句: char w;int x;float y;double z;则表达式w*x+z-y的结果为()类型。A.float B.char C.int D.double 答 D.第三章 顺序结构程序设计 -习题答案 变量k为float类型,调用函数scanf(“%d”,&k),不能使变量k得到正确数值的原因是___。

格式修饰符与变量类型不一致。因为%d输入的数据类型应该为十进制整数,而&k为占用4个字节的float类型变量的地址。★a=1234,b=12,c=34,则执行“printf(“|%3d%3d%-3d|n”,a,b,c);”后的输出是___。

|1234 1234 |

分析如下:

①%3d为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。

②%-3d为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。★设有“int a=255,b=8;”,则“printf(“%x,%on”,a,b);”输出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”则输出为FF,10。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“%x”则输出小写,如果是“%X”则输出大写。

②如果希望在输出十六进制时输出前导符0x或0X,则以上输出语句应改“printf(“%#x,%on”,a,b);”为或“printf(“%#X,%on”,a,b);”。本条解释不必须掌握。★以下程序输出的结果是___。main(){ int a1=1,a2=0,a3=2;printf(“%d,%d,%dn”,a1,a1+a2+a3,a3-a1);} 答 1,3,1 5 printf函数中用到格式符%5s,其中5表示输出字符占用5列。如果字符串长度大于5,则按___输出;如果字符串长度小于5,则按___输出。

①实际 ②左端补空格 6 ★已定义变量如下: int a1,a2;char c1,c2;若要求输入a1、a2、c1和c2的值,正确的输入函数调用语句是___。

scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);7 输入两个整型变量a、b的值,输出下列算式以及运算结果___。a+b、a-b、a*b、a/b、(float)a/b、a%b 每个算式占一行。如a=10,b=5,a+b输出为:10+5=15 答

设int a=10,b=5;以下为输出语句及结果: ①printf(“%d+%d=%dn”,a,b,a+b);10+5=15 ②printf(“%d-%d=%dn”,a,b,a-b);10-5=5 ③printf(“%d*%d=%dn”,a,b,a*b);10*5=50 ④printf(“%d/%d=%dn”,a,b,a/b);10/5=2 ⑤printf(“%(float)d/%d=%fn”,a,b,(float)a/b);(float)10/5=2.000000 ⑥printf(“%d%%%d=%dn”,a,b,a%b);10%5=0 8 ★输入一个非负数,计算以这个数为半径的圆周长和面积。答

#define PI 3.1415926 main(){ float r,l,area;printf(“Input a positive:”);scanf(“%f”,&r);l=2*PI*r;area=PI*r*r;printf(“l=%ftarea=%fn”,l,area);} 9 输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。

main(){ int x,y;printf(“Input a number(100-999):”);scanf(“%d”,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意分析此处算法*/

第三篇:完整的delphi程序设计教程课后习题答案

1.239页1题小时钟 procedure TForm1.Timer1Timer(Sender: TObject);var xt,yt:integer;h,m,s,ms:word;begin decodetime(time,h,m,s,ms);xt:=paintbox1.clientwidth div 2;yt:=paintbox1.clientheight div 2;paintbox1.refresh;paintbox1.canvas.moveto(xt,yt);paintbox1.canvas.pen.width:=3;paintbox1.canvas.lineto(xt+round(sin((60*h+m)/(12*60)*2*pi)*100), yt-round(cos((60*h+m)/(12*60)*2*pi)*100));paintbox1.canvas.moveto(xt,yt);paintbox1.canvas.pen.width:=2;paintbox1.canvas.lineto(xt+round(sin(m/60*2*pi)*140), yt-round(cos(m/60*2*pi)*140));paintbox1.canvas.moveto(xt,yt);paintbox1.canvas.pen.width:=1;paintbox1.canvas.lineto(xt+round(sin(s/60*2*pi)*180), yt-round(cos(s/60*2*pi)*180));end;end.2.239页3题求两点间的距离 procedure TForm1.Button1Click(Sender: TObject);begin paintbox1.Refresh;formpaint(sender);end;procedure TForm1.FormPaint(Sender: TObject);var xt,yt:integer;ax,ay,bx,by:integer;begin xt:=paintbox1.ClientWidth div 2;yt:=paintbox1.Clientheight div 2;paintbox1.canvas.MoveTo(xt,0);paintbox1.canvas.lineTo(xt,2*yt);paintbox1.canvas.MoveTo(0,yt);paintbox1.canvas.lineTo(2*xt,yt);ax:=strtoint(edit1.text);ay:=strtoint(edit2.text);bx:=strtoint(edit3.text);by:=strtoint(edit4.text);

edit5.Text:=floattostr(sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)));

paintbox1.canvas.MoveTo(xt+ax*10,yt-ay*10);

paintbox1.canvas.lineTo(xt+bx*10,yt-by*10);end;end.3.226页5题输入学生成绩 var

Form1: TForm1;type

studentrecord=record xh,xm:string[6];xb:boolean;yy,sx,dz:integer;end;

implementation {$R *.dfm} procedure

TForm1.Button1Click(Sender: TObject);

var t:studentrecord;

f,f1:file of studentrecord;p1,p2:boolean;begin

assignfile(f,'c:my documentsstu.dat');reset(f);

assignfile(f1,'c:my documentsstu1.dat');rewrite(f1);

while not eof(f)do begin read(f,t);

p1:=(t.sx>=85)and(t.yy>=85)and(t.dz>=85);

p2:=t.sx+t.yy+t.dz>=270;if p1 or p2 then write(f1,t);end;

closefile(f);closefile(f1);end;

procedure

TForm1.FormCreate(Sender: TObject);

var t:studentrecord;f:file of studentrecord;xingbie:string;begin

assignfile(f,'c:my documentsstu.dat');reset(f);

while not eof(f)do begin read(f,t);if t.xb then xingbie:='男' else

xingbie:='女';

listbox1.Items.Add(t.xh+' '+t.xm+' '+xingbie+' '+inttostr(t.sx)+

' '+inttostr(t.yy)+' '+inttostr(t.dz));end;

closefile(f);end;

procedure

TForm1.Button2Click(Sender: TObject);begin close;end;end.4.226页8题保存获得奖学金者 var

Form1: TForm1;type

studentrecord=record xh,xm:string[6];xb:boolean;yy,sx,dz:integer;end;

implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);var t:studentrecord;f,f1:file of studentrecord;p1,p2:boolean;begin assignfile(f,'c:my documentsstu.dat');reset(f);assignfile(f1,'c:my documentsstu1.dat');rewrite(f1);while not eof(f)do begin read(f,t);p1:=(t.sx>=85)and(t.yy>=85)and(t.dz>=85);p2:=t.sx+t.yy+t.dz>=270;if p1 or p2 then write(f1,t);end;closefile(f);closefile(f1);end;procedure TForm1.FormCreate(Sender: TObject);var t:studentrecord;f:file of studentrecord;xingbie:string;begin assignfile(f,'c:my documentsstu1.dat');reset(f);while not eof(f)do begin read(f,t);if t.xb then xingbie:='男' else xingbie:='女';listbox1.Items.Add(t.xh+' '+t.xm+' '+xingbie+' '+inttostr(t.sx)+ ' '+inttostr(t.yy)+' '+inttostr(t.dz));end;closefile(f);end;procedure TForm1.Button2Click(Sender: TObject);begin close;end;end.5.166页22题素数 procedure

TForm1.Button1Click(Sender: TObject);type

sushuset=set of byte;var

sushu:sushuset;i,j,n,m,k:longword;s,s0:string;begin

n:=strtoint(edit1.text);m:=strtoint(edit2.text);if n mod 2=0 then n:=n+1;k:=m-n;

if k>255 then

showmessage('范围太大,请重新输入区间端点!')else begin

sushu:=[0..k];for i:=2 to n-1 do for j:=n to m do

if j mod i =0 then sushu:=sushu-[j-n];for i:=n to m div 2 do for j:= i+1 to m do

if j mod i =0 then sushu:=sushu-[j-n];s:='';s0:='';

for i:=n to m do if i-n in sushu then begin

if length(s0+' '+inttostr(i))>60 then begin

s:=s+s0+chr(13);s0:='' end;

s0:=s0+' '+inttostr(i);end;s:=s+s0;label1.caption:=s;

groupbox1.Top:=(panel1.Top-groupbox1.height)div 2;end;end;

procedure

TForm1.FormCreate(Sender: TObject);begin

groupbox1.Top:=(panel1.Top-groupbox1.height)div 2;end;

procedure

TForm1.Edit1KeyPress(Sender: TObject;var Key: Char);var j:set of char;begin

j:=['0'..'9',#8];

if not(key in j)then key:=#0;end;end.6.148页12题整除的数 implementation {$R *.dfm}

function d7(x:integer):boolean;begin

if x mod 7=0 then d7:=true else d7:=false;end;

function d17(x:integer):boolean;begin

if x mod 17=0 then d17:=true else d17:=false;end;

procedure

TForm1.FormActivate(Sender: TObject);var

n:integer;begin

for n:=1000 to 4000 do if d7(n)and d17(n)then memo1.Lines.Add(inttostr(n));end;end.7.148页17题求斐波那契数列问题 implementation {$R *.dfm} function fib(n:integer):int64;begin case n of 1,2:fib:=1;else fib:=fib(n-1)+fib(n-2);end;end;procedure TForm1.Button1Click(Sender: TObject);var k:integer;begin memo1.lines.clear;for k:=1 to strtoint(edit1.text)do memo1.lines.add(format('%2d %3d',[k,fib(k)]));end;end.8.120页10题,判断是否是闰年 procedure TForm1.Button1Click(Sender: TObject);var y,m:integer;begin y:=strtoint(edit1.text);m:=strtoint(edit2.text);label3.Caption:='';if((y mod 4 = 0)and(y mod 100 <> 0))or(y mod 400=0)then label3.Caption:=edit1.text+'年是闰年,' else label3.Caption:=edit1.text+'年不是闰年,';case m of 3,4,5:Label3.Caption:=Label3.Caption+edit2.Text+'月份是春天,';6,7,8:Label3.Caption:=Label3.Caption+edit2.Text+'月份是夏天,';9,10,11:Label3.Caption:=Label3.Caption+edit2.Text+'月份是秋天,';else Label3.Caption:=Label3.Caption+edit2.Text+'月份是冬天,';end;

case m of

1,3,5,7,8,10,12:Label3.Caption:=Label3.Caption+'共有31天,';

4,6,9,11:Label3.Caption:=Label3.Caption+'共有30天,';else

if((y mod 4 = 0)and(y mod 100 <> 0)or(y mod 400=0))then Label3.Caption:=Label3.Caption+'共有29天,' else

Label3.Caption:=Label3.Caption+'共有28天,';end;end;end.9.120页11题求和的 procedure

TForm1.Button1Click(Sender: TObject);var

n,k,j:integer;s:int64;begin

n:=strtoint(edit1.text);j:=0;s:=0;

for k:=1 to n do begin j:=j+k;s:=s+j;end;

panel2.Caption:=format('s = %d',[s]);edit1.setfocus;end;

procedure

TForm1.Edit1KeyPress(Sender: TObject;var Key: Char);var b:boolean;begin

b:=(key<>#8)and(key<#48)or(key>#57);

if b then key:=#0;end;end.10.120页12题男人,女人,小孩各有多少人 procedure

TForm1.Button1Click(Sender: TObject);var

x,y,z:integer;p:string;begin

memo1.clear;for x:=0 to 16 do for y:=0 to 24 do begin

z:=30-x-y;

if 3*x+2*y+z/1=50 then begin

p:=format('%3d %3d %3d',[x,y,z]);

memo1.lines.add(p);end;end;end;end.11.98页2题求长方体的表面积 procedure

TForm1.Button1Click(Sender: TObject);var

s,l,k,h:double;begin

l:=strtofloat(edit1.text);k:=strtofloat(edit2.text);h:=strtofloat(edit3.text);s:=2*l*k+2*k*h+2*l*h;label1.Caption:=floattostr(s);end;end.12.98页5题计算圆的面积和周长 procedure

TForm1.Edit1KeyPress(Sender: TObject;var Key: Char);var r:real;b:boolean;begin b:=(key<>#8)and(key<>'.')and(key<>#13)and(key<#48)or(key>#57);if b then key:=#0;if key =#13 then begin if edit1.text='' then edit1.text:='0';r:=strtofloat(edit1.text);if radiobutton1.Checked then label1.Caption:=format('圆的面积为: %f',[pi*r*r]);if radiobutton2.Checked then label1.Caption:=format('圆的周长为: %f',[2*pi*r]);if radiobutton3.Checked then label1.Caption:=format('圆的面积为: %f'+chr(13)+ '周长为: %f',[pi*r*r,2*pi*r]);edit1.SelectAll;end;end;procedure TForm1.RadioButton1Click(Sender: TObject);var sender0:tobject;key:char;begin sender0:=edit1;key:=#13;form1.edit1keypress(sender0,key);end;procedure TForm1.RadioButton2Click(Sender: TObject);var sender0:tobject;key:char;begin sender0:=edit1;key:=#13;form1.edit1keypress(sender0,key);end;procedure TForm1.RadioButton3Click(Sender: TObject);var sender0:tobject;key:char;begin

sender0:=edit1;key:=#13;

form1.edit1keypress(sender0,key);end;end.13.98页6题统计奇数和偶数的个数

procedure

TForm1.Button1Click(Sender: TObject);var

k,j,n:word;begin k:=0;

n:=combobox1.items.count;for j:=1to n do

if strtoint(combobox1.items[j-1])mod 2 = 0 then k:=k+1;

label1.caption:=format('共有: '+#13+'%d个偶数,'+#13+'%d个奇数。',[k,n-k]);end;

procedure

TForm1.Button2Click(Sender: TObject);begin

combobox1.items.clear;end;

procedure

TForm1.ComboBox1KeyPress(Sender: TObject;var Key: Char);begin if(key =#13)and(combobox1.text<>'')then

//按键后接收输入的选项 begin

combobox1.items.insert(0,combobox1.text);

//按键后移去选项

combobox1.selstart:=0;combobox1.text:='';end;

if key = #27 then

if combobox1.itemindex<>-1 then

combobox1.items.Delete(combobox1.itemindex);end;end.14.98页8题设置倒计时的时间,并进行倒计时 procedure

TForm1.Timer1Timer(Sender: TObject);var

m,n,s,h:integer;begin

timer1.Tag:=timer1.Tag-1;m:=timer1.Tag;if m<0 then begin

timer1.enabled:=false;

showmessage('预定的时间到了!');edit1.Text:='0';end else begin s:=m;

n:=s div 60;s:=s mod 60;h:=n div 60;n:=n mod 60;

maskedit1.text:=format('%d:%d:%d',[h,n,s]);

if n <> strtoint(edit1.text)then edit1.Text:=inttostr(n);end;end;

procedure

TForm1.Button1Click(Sender: TObject);begin

timer1.enabled:=True;

timer1.Tag:=strtoint(edit1.Text)*60;end;end.

第四篇:C语言程序设计教程第九章习题答案

1、li

300.0 chang 30

200.0 chang

2、#include struct students {

char sid[100];

char name[100];

float score[3];}student;void main(){

int i;float j;

printf(“nPlease input sid:

”);

scanf(“%s”,student.sid);

printf(“nPlease input name: ”);

scanf(“%s”,student.name);

printf(“nPlease input 3 score:(like1,1,1)”);/*输入逗号隔开*/

scanf(“%f,%f,%f”,&student.score[0],&student.score[1],&student.score[2]);

printf(“nsid = %s”,student.sid);

printf(“nname = %s”,student.name);

j=(student.score[0]+student.score[1]+student.score[2])/3.0;

printf(“naverage = %.2f”,j);

getch();}

3、#include #include #define F sizeof(student)#define NULL 0 typedef struct scores { int english;int math;int c_language;int all;}TP;typedef struct students { char sid[15];char name[15];TP score;struct students *next;}student;student *input(){ student *head,*p1,*p2;int n=0;char ch;clrscr();head=(student *)malloc(F);head->next=NULL;

do {

n++;

printf(“nnPlease input %d student message:

nn”,n);

printf(“t%d student sid:

”,n);

p1=(student *)malloc(F);p1->next=NULL;

scanf(“%s”,p1->sid);

printf(“nt%d student name:

”,n);

scanf(“%s”,p1->name);

printf(“nt%d student scores(englesh,math,c_language):

”,n);

scanf(“%d,%d,%d”,&p1->score.english,&p1->score.math,&p1->score.c_language);

p1->score.all=p1->score.english+p1->score.math+p1->score.c_language;

if(n==1)

{ head->next=p1;p2=p1;}

else

{ p2->next=p1;

p2=p1;

}

printf(“nntttContinue or back(press y/n):

”);

ch=getch();

}while(ch=='y'||ch=='Y');return head;} void average1(student *head){ student *p;int j;clrscr();p=head->next;

while(p)

{ j=p->score.all/3;

printf(“nnname:

%staverage: %d”,p->name,j);

p=p->next;

} printf(“nnnPress eny key return.”);getch();} void average2(student *head){ student *p;int n=0,temp1=0,temp2=0,temp3=0;p=head->next;while(p){ temp1+=p->score.english;

temp2+=p->score.math;

temp3+=p->score.c_language;

p=p->next;n++;} printf(“nnaverage english is : %dnaverage math is : %dnaverage c_language is : %dt”,temp1/n,temp2/n,temp3/n);} student *sort(student *head){ student *head1,*p,*q,*r;int temp1=0,temp2=0,temp3=0,temp4;char s[15],n[15];head1=head;for(p=head1->next;p->next!=NULL;p=p->next){ r=p;

for(q=p->next;q;q=q->next)

if(q->score.all>r->score.all)

r=q;

if(r!=p)

{ strcpy(s,p->sid);strcpy(n,p->name);

temp1=p->score.english;

temp2=p->score.math;

temp3=p->score.c_language;

temp4=p->score.all;

strcpy(p->sid,r->sid);strcpy(p->name,r->name);

p->score.english=r->score.english;

p->score.math=r->score.math;

p->score.c_language=r->score.c_language;

p->score.all=r->score.all;

strcpy(r->sid,s);strcpy(r->name,n);

r->score.english=temp1;

r->score.math=temp2;

r->score.c_language=temp3;

r->score.all=temp4;

} } return head1;} void output(student *head){ student *head2,*p;int i=1;clrscr();head2=sort(head);for(p=head2->next;p!=NULL;p=p->next)

printf(“nnname: %stsid: %stenglish: %dtmath: %dtc_language: %dtaverage: %dtmingci: %d”,p->name,p->sid,p->score.english,p->score.math,p->score.c_language,p->score.all/3,i++);

average2(head);

printf(“nnnttPress eny key back.”);getch();} void main(){ student *head,*p1,*p2;int i=0,j=1;head=input();do {

clrscr();

printf(“nn(1): average1.nn(2): average2.nn(3): sort.nn(4): output.nnn

Please choose:

”);

scanf(“%d”,&i);

switch(i)

{ case 1: average1(head);break;

case 2: clrscr();average2(head);printf(“nnnPress eny key retuen.”);getch();break;

case 3: clrscr();p1=sort(head);for(p2=p1->next;p2!=NULL;p2=p2->next)printf(“nttname: %stmingci:%d”,p2->name,j++);printf(“nnnPress eny key back.”);getch();break;

case 4: output(head);break;

default: printf(“nYour choose is not right.”);break;

} }while(i!=-1);}

4、#include #include #define NULL 0 #define F sizeof(worker)typedef struct work { char sid[15];char name[15];int money;struct work *next;}worker;int min=0,max=0;char a[15],b[15];worker *input(){ worker *head,*p,*q;int n=0;char ch;head=(worker *)malloc(F);head->next=0;do { n++;

p=(worker *)malloc(F);p->next=0;

printf(“nntPlease input %d worker message :

”,n);

printf(“n%d worker sid:

”,n);scanf(“%s”,p->sid);

printf(“n%d worker name:

”,n);scanf(“%s”,p->name);

printf(“n%d worker money:

”,n);scanf(“%d”,&p->money);

if(n==1)

{

head->next=p;q=p;

max=p->money;strcpy(a,p->name);

min=p->money;strcpy(b,p->name);

}

else

{

q->next=p;

if(p->money>max){max=p->money;strcpy(a,p->name);}

if(p->moneymoney;strcpy(b,p->name);}

q=p;

}

printf(“ntty/n”);ch=getch();}while(ch=='y'||ch=='Y');return head;} void output(){

clrscr();printf(“nThe max money is: %dttname is: %snn”,max,a);printf(“nThe min money is: %dttname is: %s”,min,b);} void main(){

input();output();getch();} 5、6、#include“stdio.h” #define F sizeof(stu)#define NULL 0 typedef struct student { int sid;int average;struct student *next;}stu;stu *head;stu *create(){ stu *p1,*p2;int n=0;char ch;head=(stu *)malloc(F);head->next=NULL;

do {

n++;

printf(“nnPlease input %d student message:

nn”,n);

printf(“t%d student sid:

”,n);

p1=(stu *)malloc(F);p1->next=NULL;

scanf(“%d”,&p1->sid);

printf(“nt%d student average:

”,n);

scanf(“%d”,&p1->average);

if(n==1)

{ head->next=p1;p2=p1;}

else

{ p2->next=p1;

p2=p1;

}

printf(“nntttContinue or back(press y/n):

ch=getch();

}while(ch=='y'||ch=='Y');return head;} stu *select(stu *head,int x){ stu *s;s=head->next;while(s){

if(s->sid==x)

break;

s=s->next;} return s;}

stu *insert(stu *head,int x,int y){ stu *p,*r,*q;clrscr();p=head->next;r=(stu *)malloc(sizeof(stu));r->sid=x;r->average=y;if(p==NULL)/*如果插入空表*/

{

p=r;

r->next=NULL;

”);

printf(“ninsert success!”);

}

else

{ while(x>p->sid)/*找到插入的位置,按学号大小。(找到位置或者到了表尾都会跳出循环)*/

{

if(p->next==NULL)break;p=p->next;

}

if(x

sid)

/*插到中间位置*/

{

r->sid=p->sid;

r->average=p->average;

p->sid=x;

p->average=y;

r->next=p->next;

p->next=r;

printf(“ninsert success!”);

}

else if(x==p->sid)/*学号不能相同*/

printf(“nError--->your input this same sid.”);

else

/*插到末尾*/

{

p->next=r;

r->next=NULL;

printf(“ninsert success!”);

}

}

return head;} stu *get(stu *head,int n)/*得到位置为n的结点的指针*/ { stu *p;int i;p=head->next;if(n==0)return head;else

{

for(i=1;i

p=p->next;

return p;} } stu *delete(stu *head,int sid){

stu *p,*q;int temp=0,i=0;p=head->next;if(!p)

{

printf(“nlist is empty.press eny key back.”);getch();return head;}/*表空*/ else { while(p)

/*查找学号为sid的结点的指针*/

{i++;/*标记学号为sid的结点的位置*/

if(p->sid==sid)

{temp=1;break;} /*temp=1标记找到了*/

p=p->next;}

if(temp==1)/*如果有学号为sid的结点*/

{ q=get(head,i-1);/*得到sid的前一个结点的指针*/

q->next=p->next;

free(p);

printf(“nndelete sucess!!”);

return head;

}

else

/*没有找到*/

{ printf(“nnNO this data.n”);

return head;

} } } void print(stu *head){ stu *p;p=head->next;if(!p){printf(“nlist is empty.press eny key back.”);getch();} while(p){

printf(“n%d :t%d ”,p->sid,p->average);

p=p->next;} } main(){ stu *p1,*p2;char ch1;int n,i=0,j=0;head=create();do {clrscr();printf(“n1.insert.”);printf(“n2.select.”);printf(“n3.delect.”);printf(“n4.print list.”);printf(“n5.EXIT

”);printf(“n

............choice(1-5).............”);ch1=getch();switch(ch1){

case '1':

{ clrscr();

printf(“nplease input insert sid.and average(like 1,1):”);

scanf(“%d,%d”,&i,&j);

head=insert(head,i,j);

printf(“nnnPress eny key back.”);getch();

break;

}

case '2':

{ clrscr();

printf(“ninput you want to selete sid:

”);

scanf(“%d”,&n);

p1=select(head,n);

{

if(p1)printf(“nsid:%dtaverage:%d”,p1->sid,p1->average);

else

printf(“nNo this data.”);

}

printf(“nnnPress eny key back.”);getch();

break;

}

case '3':

{ clrscr();printf(“nPlease input you want delete sid: ”);

scanf(“%d”,&n);

head=delete(head,n);

printf(“nnnPress eny key back.”);getch();

break;

}

case '4':

{ clrscr();

printf(“All information :”);

print(head);

printf(“nnnPress eny key back.”);getch();

break;

}

case '5': return;

default: printf(“nnYour enter is not right.press eny key back.”);getch();}

}while(n);}

7、#include #define F sizeof(L)typedef struct list {

char data;

struct list *next;}L;L *set_list(){

L *head,*p1,*p2;

char c;

int n=0;

head=(L *)malloc(F);head->next=0;

/*建立链表*/

p1=p2=head;

printf(“nPlease input char(press * finish):”);

scanf(“%c”,&c);

while(c!='*')

{

n++;

if(n==1)

p1->data=c;

else

{

p1=(L *)malloc(F);

p1->data=c;

p2->next = p1;

p2 = p1;

p1->next = 0;

}

scanf(“%c”,&c);

}

p1=head;

while(p1)

{

printf(“%c ”,p1->data);p1=p1->next;

}

printf(“nnn”);

return head;} void change_list(L *head1)

/*算法:p2指向最后一个元素,p1指向第一个元素。交换他们的值,p1,p2同时往中间靠拢。*/ {

L *p1,*p2,*p3;

int i,j,k,n=1;

char temp;

p1=head1;p2=head1;p3=head1;

while(p3->next)

{ p3=p3->next;n++;

}/*求链长*/

for(i=n;i>(n/2);i--)/*外循环使p1后移,p2前移。*/

{

p2=head1;for(j=1;j

p2=p2->next;/*p2指向最后一个元素*/ temp=p1->data;p1->data=p2->data;p2->data=temp;/*交换他们的值*/ p1=p1->next;/*p1向后移*/

}

while(head1)

{ printf(“%c ”,head1->data);head1=head1->next;} } void main(){ L *head;head=set_list();change_list(head);getch();}

第五篇:国际贸易与实务习题与答案第四

合同的主体与标的

一、填空题

1.商品的品质是指商品的()和()的综合。

2.以实物表示商品的品质通常包括()和()两种表示方法。

3.卖方交货品质只要未超出品质机动幅度范围,买方无权拒收,但为了体现按质论价原则,可在合同中订立()条款。

4.表示品质的方法可分为以()表示和以()表示。

5.对等样品又称()或(),是指()方根据()方提供的样品,加工复制出一个类似的样品提供给()方确认后的样品。

6.公差条款一般应用于()交易,是指允许卖方所交货物品质高于或低于合同中的规定。

7.品质条款既是构成()的组成部分,又是买卖双方()的基本依据之一。8. 以说明表示商品品质是指以文字、图表、相片等方式来说明商品的品质,包括凭()买卖、凭()买卖、凭()买卖、凭()买卖及凭()买卖。9.如在合同中未明确规定是用毛重还是净重计量、计价的,按惯例应以()计。

10.国际贸易中常用的计量单位有()单位、()单位、()单位、()单位、()单位和()单位。

11.国际贸易中常用的计算重量的方法有()、()、()、()及法定重量与实物净重等。

12.采用净重时,计算包装重量的做法通常有()皮重、()皮重、()皮重和()皮重。

13.我方对日出口货物100箱,合同规定允许溢短装5%,则我方最多可装()箱,最少可装()箱。

14.运输包装的标志,按其作用不同可分为()标志、()标志和()标志三种。

15.卖方按买方要求,在其出售的商品或包装上标明买方指定的商标或牌号,这种做法称为()。

二、单项选择题

1.珠宝、首饰、字画等商品具有独特性质,在确定其品质时()。A.最好用样品磋商

B.最好用文字说明 C.应该既用样品,又用文字说明

D.只能看货洽谈成交

2.在凭文字说明买卖,又提供参考样品的情况下,卖方所交货物的品质()。A.既要符合文字说明,又要与样品完全一致 B.要符合文字说明,样品不作为最后交货依据 C.必须与样品完全一致

D.由买方决定选择何种标准

3.“标的物”条款就是()。

A.品质条款

B.合同条款

C.说明条款

D.品名条款

4.如我方欲进口一套机电设备,一般应选用的表示品质的依据为()。A.凭卖方样品买卖

B.凭买方样品买卖 C.凭说明书买卖

D.凭商标和牌名买卖 5.ISO9000系列标准的制定机构为()。A.国际商会

B.国际标准化组织 C.国际法协会

D.同业协会 6.ISO9000系列标准是()。

A.欧洲质量管理标准

B.亚洲质量管理标准 C.北美质量管理标准

D.国际性质量管理标准

7.一种样品若没有标明是参考样品还是标准样品,应看作为()。A.参考样品

B.标准样品 C.双方协商

D.参照国际标准

8.我国出口一批农产品,如合同中以FAQ来说明品质,并订有具体规格,则在交货时,检验货物的品质依据应为()。

A.本年该产品的中等货

B.装船时在发运地发运的同一种产品的平均品质 C.双方再协商

D.合同规定的具体标准

9.如卖方所交货物品质低于样品品质,但在品质公差范围内,买方应()。A.拒收、拒付

B.收货、拒付 C.降价收货

D.按合同价收货

10.如果出口日用消费品、轻工业品及机械产品常用的计量单位为()。A.重量单位

B.数量单位 C.长度单位

D.面积单位

11.我方与外商签订的合同规定:每箱100美元CIF纽约,数量为100箱,允许5%溢短装。实际交货105箱,我方应收款()。

A.10,000美元

B.10,500美元 C.9,500美元

D.双方再协商

12.对生丝、棉花和羊毛等商品的计重方法通常采用()。

A.公量

B.毛重

C.理论重量

D.法定重量

13.运输标志是()。

A.商品内包装上的标志

B.运输包装上的标志

C.运输工具上的标志

D.待运货物的标志

14.进口钢板,计算重量的方法一般采用()。

A.公量

B.理论重量

C.净重

D.毛重

15.如果在合同中未明确规定用何种方法计算重量和价格的,按惯例应以()计。

A.毛重

B.净重

C.理论重量

D.公量

16.某外商欲购我“华生”牌电扇,但要求改用“钻石”牌商标,并不得注明产地,外商这一要求实质是()。

A.无牌中性包装

B.定牌中性包装

C.软性包装

D.硬性包装

17.我国出口商品包装条形码采用()条码。

A.统一编码委员会

B.欧洲物品委员会 C.亚洲编码协会

D.国际物品编码协会 18.美国出口商品包装上使用的物品标识符号为()。A.UPC码

B.EAN码

C.690

D.500

三.多项选择题

1.确定有多个不同名称商品的品名时,应主要考虑()。

A.品名简洁

B.进出口限制

C.海关规定

D.品名新颖、奇异

E.品名通俗 2.构成国际贸易中的标的物,应具备()。

A.双方当事人一致同意

B.国际最流行的C.合法 D.双方占有

E.卖方所占有 3.商品的内在素质包括()。

A.化学成分和性质

B.物理性质

C.色、香、味 D.机械性

E.造型

4.凭样品买卖时,在合同中除列明“凭样品买卖”外,还应加列()。A.样品编号

B.样品寄送日期

C.样品使用范围

D.样品制造所用的原料

E.交货品质与样品“大致相符” 5.在国际贸易中,若卖方交货数量多于合同规定数量,根据《公约》规定,买方可以()。A.只接受合同规定的数量,而拒绝超出部分

B.接受合同规定数量以及超出合同规定数量的一部分

C.拒收全部货物

D.接受全部货物

E.只能接受全部货物

6.订立出口数量条款时,应考虑的因素为()。A.国内市场的实际需要

B.国际市场的实际需要 C.国内的实际支付能力

D.国际市场的价格动态 E.国外客户的资信状况 7.运输包装应该()。

A.吸引顾客

B.保护商品

C.适合有关国家法律 D.适应进口国销售习惯

E.适应运输方式的要求

8.在我国出口危险品包装上,应标打()上所规定的标志。

A.《危险货品包装标志》

B.《包装储运图示标志》

C.《国际海运危险品标志》 D.《联合国国际货物销售合同公约》

E.《国际标准化组织危险品标志》

9.联合国欧洲经济委员会简化国际贸易程序工作组制定的标准运输标志包括的四项内容是()。

A.收货人名称的缩写或代号

B.目的港(地)

C.箱号或件号

D.参考号(合同号、订单号等)

E.磅码、产地标志

四、判断题

1.参考样品只供对方参考,不作为交货的最终依据。()T 2.凭样品买卖,要求卖方所交货物的品质必须与样品完全一致。()T 3.某外商来电要我提供大豆,按含油量20%,含水份15%,不完全粒7%,杂质1%的规格订立合同。对此,一般情况下,我方可以接受。()F 4.在规格与样品同时使用的出口贸易中,一般无须写明以规格为准。()F 5.目前世界上的各种标准,都具有约束性。()F 6.商标或品牌本身实际上是一种品质象征。()T 7.商品的品质好坏只影响商品的使用和价格。()F 8.为了防止在市价波动时,享有溢短装权利的一方故意多装或少装货物,可以在合同中规定按装船时的市场价格计算溢装或短装部分的价格。()T 9.数量的溢短装条款是对卖方较有利的。()T 10.国际贸易中使用最多的计量方法是按重量计算。()T 11.即使度量衡制度存在差异,但同一计量单位所表示的数量也是一样的。()T 12.不同国家对“包”和“袋”的实际重量的含义不尽相同。()T 13.采用净重计算时的关键是如何计算包装的重量。()T 14.标准回潮率是指商品中的实际水分与干量之百分比。()F 15.公量是公定重量的简称,比较适合于经济价值较高、含水量又极不稳定的商品。()T 16.加拿大出口商品包装上的物品标识符号为EAN。()17.《国际海运危险品标志》是我国国家技术监督局发布的。()F 18.国际货物的指示性标志中所用的文字一般为英文。()T 19.目前我出口贸易中必须使用联合国欧洲经济委员会简化国际贸易程序工作组制定的标准运输标志。()F 20.凡标有“690/691/692”条形码的商品,即表示是中国生产的商品。()T 21.国际贸易中,对“适合海洋运输包装”有统一的定义和解释。()F 22.国际贸易中,亚洲地区对同一图案、同一色彩的理解和喜好基本相同。()F 23.国际贸易中大多数商品均为包装货。()T

七、案例题

1.国内某单位向英国出口一批大豆,合同规定水份最高为14%,杂质不超过2.5%,在成交前我方曾向买方寄过样品,订约后我方又电告买方成交货物与样品相似,当货物运到英国后,买方提出货物与样品不符,并出示相应的检验证书证书货物的质量比样品低7%,并以此要求我方赔偿15000英镑的损失。请问:在此情况下我方是否可以该项交易并非凭样品买卖而不予理赔?

要点:从合同内容看,属于凭规格的买卖。但是成交前寄送样品时并未声明是参考样品,签约后又电告对方成交货物与样品相似,这样对方就有理由认为该笔交易既凭规格又凭样品。

2.南通某家纺公司向加拿大出口一批绣花被罩,国外要求花绣在被罩的横面。但合同签订后,该厂在加工时,认为花纹应绣在被罩的竖面才较明显,便擅自决定改变了绣花部位。货物出口到国外后,买方以布局与合同不符为由,要求全部退货。请问我方应如何处理较为妥当?

要点:如果卖方所交货物的品质与合同规定不符,买方有权拒收货物或提出索赔要求。

3.烟台某出口公司向日本出口一批苹果。合同规定是三级品,但到发货时才发现三级苹果库存告急,于是该出口公司拟以二级品交货,并在发票上加注:“二级苹果仍按三级计价”。请问这种以好顶次的做法是否妥当?

要点:如果卖方所交货物的品质与合同规定不符,买方有权拒收货物或提出索赔要求。

4.合同中数量条款规定“10000M/T 5% MORE OR LESS AT SELLER’S OPTION”。卖方正等待交货时,该货物国际市场价格大幅度上涨,问:(1)如果你是卖方拟实交多少货量?为什么?(2)如果站在买方立场上,磋商合同条款时,应注意什么?

要点:卖方应该在合同允许范围内尽量少装货物

5.国内某厂向国外出口一批灯具。合同上规定为每筐30只,共有100筐。我方工作人员为方便起见,改为每筐50只,共装60筐,总只数不变。请问:这种处理方式是否会构成违约? 要点:买卖双方必须严格接照合同规定的条款履行合同 6.菲律宾某公司与上海某自行车厂洽谈业务,打算从我国进口“永久”自行车1000辆。但要求我方改用“剑”牌商标,并在包装上不得注明“Made in China”字样。请问:我方是否可以接受?在处理此项业务时,应注意什么问题? 要点:中性包装,一般可以接受。注意事项,参阅教材

下载C程序设计第四版习题完整版答案【排版整洁】(五篇范文)word格式文档
下载C程序设计第四版习题完整版答案【排版整洁】(五篇范文).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    JSP程序设计习题解答

    习题一 1.运行startup.bat启动Tomcat服务器的好处是什么? 答:确保Tomcat服务器使用的是Java_home环境变量设置的JDK。 2.请在C:下建立一个名字为book的目录,并将该目录设置成一个......

    自考Java语言程序设计(一)课后习题及答案

    更多优质自考资料尽在百度贴吧自考乐园俱乐部 (http://tieba.baidu.com/club/5346389)欢迎❤加入...欢迎❤交流...止不住的惊喜等着你......... 自考Java语言程序设计(一)课后习......

    《C#程序设计基础教程与实训》习题答案

    附录Ⅰ 各章习题答案 第1章 C#语言概述 一、判断题 1、√2、×3、√4、×5、√6、√7、×8、× 二、选择题 1、C 2、B 3、C 4、A 5、A 6、B 7、B 8、B 三、填空题 1、最新的......

    c语言程序设计课后习题答案 第7章

    /*练习7-1*/ #include main { int a[10],n,sum=0,i; float ave; printf("enter n:n"); scanf("%d",&n); printf("enter %d ge zheng shu:n",n); for(i=0;i......

    《C语言程序设计教程(第二版)》习题答案[合集]

    2 第1章 程序设计基础知识 一、单项选择题(第23页) 1-4.CBBC 5-8.DACA 二、填空题(第24页) 1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言 7.有......

    《C语言程序设计教程(第二版)》习题答案

    《C语言程序设计教程(第二版)》习题答案 说明 1. 本习题答案是我自己做的,错误和疏漏在所难免。编程题全部调试通过,但选择题和填空题不敢保证全对。 2. 凡未指明解题所用的......

    第四单元习题精选

    一、我能看拼音写汉字。 wēi xiàohuǒyànbáoshāchúchuāngkǎoē linghúnlàzhúpânxiāngquán suōcíài hōnggānguāiqiǎoduōsuowãiqúnshâng dàn ji......

    Web程序设计沈士根版课后习题答案

    Web考试复习资料 第一章 1.填空题 .NET Framework主要包括 公共语言运行库(CLR) 和 类库 ASP.NET网站在编译时,首先将语言代码编译成 MSIL,微软中间语言 一台IIS Web......