C语言课后题编程答案.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 编程 答案
- 资源描述:
-
(完整版)C语言课后题编程标准答案 C语言课后题编程答案 所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可.希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。 第3章 3-17 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。 #include〈stdio.h> main() {int h,m。 h=560/60。 m=560%60. printf(“560分钟可转换成%d小时%d分钟",h,m)。 } 程序总结: (1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用#include命令包含进来。否则库函数的使用无效。输入输出库函数的头文件是:stdio。h。数学函数的头文件是:math.h。字符处理函数的头文件是:ctype。h。字符串处理函数的头文件是:string.h。 (2)注意C语言中的“/”和“%”两种运算符。“/”的运算结果取决于两操作数的类型。比如:1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值),1.0/2=0.5(除之前2要自动类型转换成2。0,因为只有同类型的操作数才能进行除运算), 1/2。0=0.5, 1。0/2。0=0.5.“%”的两个操作数都必须是整数。 (3)printf(“560分钟可转换成%d小时%d分钟”,h,m).printf第一个参数要尽量详细,这样可以提高输出结果的可读性,恰当好处的添加提示性信息,可以提高程序的质量。 (4)int h,m。变量起名要有艺术性,尽量做到见名知意。 3-18 编写程序,输入两个整数,1500和350,求出它们的商和余数并进行输出。 #include<stdio.h> main() {int a,b,m,n。 printf(“请输入两个整数:\n”)。 scanf(“%d%d",&a,&b)。 m=a/b. n=a%b. printf(“%d除以%d商%d余%d",a,b,m,n). } 程序总结: (1)printf(“请输入两个整数:\n”)。这是一个提示信息,避免用户在看到黑屏后不知所措。 (2)scanf(“%d%d”,&a,&b).scanf的功能是用户要通过键盘输入数据,赋值给各输入项。注意每个输入项前面必须要加&符号。%d与输入项的个数要一致,类型要匹配。%d与int一致,%f与float对应,%lf与double匹配,%c与char对应。 3—19 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果. #include<stdio。h〉 main() {double a,b,c,x. printf(“请输入三个双精度数:\n”)。 scanf(“%lf%lf%lf”,&a,&b,&c)。 x=(a+b+c)/3。 x=x*10. x=x+0.5。 x=(int)x. x=x/10. printf(“x=%.1lf”,x). } 程序总结: (1) double a,b,c,x。 和scanf(“%lf%lf%lf”,&a,&b,&c)。有直接联系,%lf与输入项a,b,c在定义时所用的类型double一致. (2)%.1lf, .1的意思是结果仅保留小数点后一位小数。 3—20 编写程序,读入三个整数给a、b、c,然后交换他们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c。 #include<stdio.h〉 main() {int a,b,c,t。 printf(“请输入三个整数:\n”). scanf(“%d%d%d”,&a,&b,&c)。 printf(“交换之前:a=%d,b=%d,c=%d”,a,b,c)。 t=a。 a=c。 c=b。 b=t。 printf(“交换之后:a=%d,b=%d,c=%d”,a,b,c). } 程序总结: 交换两个变量的值和三个变量的值,都需要借助另外一个变量。 第4章 4—21 若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。 if(a〈30) m=1. else if(a〈40) m=2。 else if(a<50) m=3。 else if(a〈60) m=4。 else m=5. #include〈stdio.h> main() {int a。 printf(“enter a(a〈100):\n”)。 scanf(“%d",&a)。 printf(“a=%d\n",a)。 switch(a/10) {case 0: case 1: case 2:printf(“m=1\n”)。break。 case 3:printf(“m=2\n”).break。 case 4:printf(“m=3\n”).break。 case 5:printf(“m=4\n")。break。 default:printf(“m=5\n”)。 } } 程序总结: (1) 选择结构的实现除了使用if语句以外,还可以使用switch语句来实现。 (2) switch后的表达式和case后的标号的类型要一致,switch后的表达式直接决定了switch语句体的执行入口。执行完入口的case语句后,依次顺序往下执行,直到遇到break语句就彻底跳出switch语句体,转去执行switch 语句体后的语句。 (3) default语句可有可无,位置无所谓,当switch后的表达式和所有case后的标号都不一致时,转去执行default语句,然后依次顺序执行default语句后其他的switch语句,直到遇到break语句,则彻底跳出switch 语句体. (4) break语句可出现在循环语句体和switch 语句体内,目的是彻底跳出循环体和switch 语句体。 (5) case和其后的标号之间必须要加空格。 4—22编写程序,输入一位学生的生日(年:y0、月m0、日d0),并输入当前的日期(年:y1、月m1、日d1),输出该生的实际年龄。 #include〈stdio.h〉 main() {int y0,m0,d0,y1,m1,d1,age; printf(“输入一位学生的生日:\n”). scanf(“%d%d%d”,&y0,&m0,&d0)。 printf(“输入当前日期:\n”). scanf(“%d%d%d”,&y1,&m1,&d1)。 age=y1—y0。 if(m1<m0||m0==m1&&d1<d0) age—-。 printf(“age=%d\n",age)。 } 程序总结: (1) if(m1〈m0||m0==m1&&d0〈d1),在程序设计中,要学会用逻辑与、或、非代替复杂的if语句嵌套. (2) 在printf语句中,要尽量加上\n,这样可以避免黑屏上的结束语press any key to continue 出现在有价值的输出结果的后面,而是换行输出。这样就提高了程序输出结果的可读性。 (3) 通过本设计,要加强对变量起名艺术性的认识。 4-23编写程序,输入一个整数,打印出它是奇数还是偶数。 #include<stdio.h> main() {int x,y. printf(“请输入一个整数:\n”) scanf(“%d”,&x)。 y=x%2。 if(y==0) printf(“%d是一个偶数!\n”,x)。 else printf(“%d是一个奇数!\n”,x)。 } 程序总结: y=x%2。这是判断一个数是奇数还是偶数的一贯表示方式。计算机中的等号是双等号,与数学中的等号不一样。 4—24编写程序,输入a,b,c三个数,打印出最大者。 方法一: #include〈stdio.h〉 main() {int a,b,c,max。 printf(“请输入三个数:\n")。 scanf(“%d%d%d”,&a,&b,&c). if(a〉b) {if(a〉c) max=a。 else max=c. } else {if(b>c) max=b。 else max=c。 } printf(“max=%d”,max)。 } 程序总结: 利用if-else的嵌套,可求出一组数的最大值和最小值。在if-else的嵌套中,要格外注意if和else的配对问题。配对的原则是:从最后一个else开始,寻找与其配对的if,找的原则是离else最近的还没有配对的if就是该else的配对对象。if和else的配对一旦出问题,输出结果全错. 方法二: #include〈stdio。h> main() {int a,b,c,t。 printf(“请输入三个数:\n”)。 scanf(“%d%d%d",&a,&b,&c)。 if(a〉b) {t=a。 a=b。 b=t。 } if(a〉c) {t=a。 a=c。 c=t。 } if(b>c) {t=b。 b=c. c=t。 } printf(“最大值为:%d”,c)。 } 程序总结: (1) 方法一利用if—else的嵌套来进行程序设计,极易容易出错。而方法二采用三个if语句的并列来实现,同样可以求出最大值。 (2) 方法二算法分析:第一个if语句结束后,b中保存a和b中的较大值;第二个if语句结束后,c中保存a和c中的较大值;第三个if语句结束后,c中保存b和c中的较大值;三次比较后,c中的值就是三个数中最大的. (3) 现实生活中,交换两盆水必须要借助第三个盆子;在程序设计中,要想实现两个变量中值的交换,就必须借助第三个变量。 4-25 对于以下函数: Y=x(—5〈x〈0),y=x-1(x=0),y=x+1(0〈x〈10),编写程序,要求输入x的值,输出y的值.分别用:(1)不嵌套的if语句(2)嵌套的if语句(3)if—else语句(4)switch语句 (1)#include<stdio.h> main() {int x,y。 printf(“请输入x的值:\n”). scanf(“%d”,&x). if(x==0) y=x—1。 if(x>-5&&x<0) y=x。 if(x〉0&&x〈10) y=x+1. printf(“y=%d\n",y)。 } (2)#include<stdio。h〉 main() {int x,y。 printf(“请输入x的值:\n"). scanf(“%d”,&x)。 if(x>-5) if(x〈0) y=x. if(x〉0) if(x〈10) y=x+1. if(x==0) y=x—1. Printf(“y=%d\n",y)。 } (3)#include<stdio.h> main() {int x,y。 printf(“请输入x的值:\n”)。 scanf(“%d",&x)。 if(x>—5&&x〈0) y=x。 else if(x==0) y=x—1。 else y=x+1。 Printf(“y=%d\n”,y)。 } (4)#include〈stdio.h> main() {int x,y,i。 printf(“请输入x的值:\n”). scanf(“%d”,&x). if(x>—5&&x〈0) i=1。 if(x==0) i=2。 if(x〉0&&x<10) i=3。 switch(i) { case 1:y=x。printf(“x=%d,y=%d\n”,x,y)。break。 case 2:y=x-1。printf(“x=%d,y=%d\n”,x,y).break。 case 3:y=x—1。printf(“x=%d,y=%d\n”,x,y)。 } } 程序总结: 对于这个程序设计我建议大家采用第一种方法,因为第一种方法是大众化的思路,鉴于上机考试是机器阅卷,希望大家不要在上机试卷上展现自己的个性。大家可以在平常练习中,尝试多种方法解决同一问题,这样可以通过一个程序设计,巩固多个知识点。 第5章 5—17编写程序,求1-3+5—7+…—99+101的值. 方法一: #include<stdio。h〉 main() {int s,n,t,j。 s=0。 n=1。 t=1。 j=1。 while(n<=101) { s=s+t。 n+=2. j=-j。 t=j*n。 } printf(“1-3+5-7+…—99+101=%d”,s)。 } 程序总结: (1)循环结构可用循环语句来实现,循环语句有三种:while,do-while,for,循环语句的使用场合是:数之间有规律可循并且是重复执行某项操作。 (2)本程序设计是正负数交替求和,所以必须单独定义一个变量,通过每次乘以-1,来实现正负交替.本题中的j就扮演了这个角色。 (3)while语句简介:功能是可实现循环结构。While与其后的括号之间无空格,括号里的表达式只要是合法的表达式即可,不过关系表达式最为常见。While的管辖范围是紧跟在其后的一条“C语句"(可以是单纯的一条C语句,也可以是用花括号括起来的复合语句)。程序设计最忌讳死循环,所以说循环体中必须要有使while后表达式为假的趋势,这样才能正常的跳出循环体,从而避免死循环的出现. 方法二: #include〈stdio.h〉 #include〈math。h> main() {int a,b,c,s。 a=1。b=1。c=1。s=0. while(fabs(c)〈=101) {s+=c。 b+=2。 a=—a。 c=a*b。 } printf(“1-3+5-7+…—99+101=%d",s)。 } 程序总结: 若程序中用到了数学函数,就必须把#include〈math。h>加上。 5-18编写程序,求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+… (1)用for循环,计算前50項。 (2)用while循环,要求直至最后一项的值小于10的-6次方。 (1) 方法一: #include〈stdio。h〉 main() {int m,n。 float e=1.0,i=1.0,t。 for(n=1.n<=50。n++) {m=n。 for(t=1.0。m>=1.m-—) t=t*m。 i=1/t. e=e+i。 } printf(“e=%f”,e)。 } 程序总结:for(t=1。0。m〉=1。m——) t=t*m。实现的是阶乘的求法. 方法二: #include<stdio。h〉 main() {float a,b,c,e。 e=1.0。a=1.0.c=0。 for(b=1。0.b<50。b++) {e+=c。 c=1.0/(a*b)。 a=a*b。 } printf(“e=%f”,e)。 } 程序总结:c=1。0/a*b。a=a*b.这两句是阶乘的另一种实现方法。此算法的设计思路是:1!*2=2!,2!*3=3!,3!*4=4!……后一项的分母是前一项分母再乘以一个有规律的数。 (2)#include<stdio。h> main() {float a=1.0,b=1。0,c=1。0,e=1.0。 while(c〉=1e-6) {e+=c。 b++。 c=1.0/(a*b)。 a=a*b。 } printf(“e=%f\n”,e)。 } 程序总结:1乘以10的—6次方,在C语言中表示为1e-6。 5-19编写程序,输出从公元2000年至3000年所有闰年的年号,每输出10个年号换一行,判断公元年是否为闰年的条件是: (1)公元年数如能被4整除,而不能被100整除,则是闰年。 (2)公元年数能被400整除也是闰年. #include〈stdio.h> main() { int i,j=0。 for(i=2000。i<=3000.i++) { if(i%4==0&&i%100!=0||i%400==0) {printf(“i=%d”,i)。 j++。 } if(j%10==0) printf(“\n”). } printf(“\n”)。 } 程序设计: (1)int i,j=0。这条语句中的j=0非常必要,因为j的作用就是累计闰年的个数,在所有的程序设计中,具有累计功能的变量都需要初始化为零。否则随机数会来捣乱,从而导致最后累计结果的无意义。 (2)if(j%10==0)这是换行的一贯表示形式。 (3)语句printf(“\n")。在程序的最后出现两次,这两次的作用是不一样的,前者实现的是每10个闰年换行一次.后者的功能是让黑屏上的press any key to continue 乖乖换行,从而提高程序输出结果的可读性。 5-20编写程序,打印以下图形:* *** ***** ******* ***** *** * #include〈stdio。h〉 main() {int i,j,k. for(i=3。i〉=0。i--) {for(k=1。k<=i。k++) Printf(“”)。 for(j=0。j<7-i*2。j++) printf(“*"). printf(“ \n”). } for(i=4.i〈7。i++) {for(k=4。k〈=i.k++) printf(“”). for(j=3。j〈=15-i*2.j++) printf(“*")。 printf(“ \n”). } } 程序总结: (1) 类似图形的设计是有规律可循的,比如此题:空格的个数从上往下依次是3、2、1、0、1、2、3,星号的个数从上往下依次是1、3、5、7、5、3、1,并且上下两部分是对称的。 (2) 本题中for循环的控制条件很难想出来,大家只要把这个题记住就可以,到时候稍微变一下型就可以。 第6章 6-19 请编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII代码值,每行输出三对。 #include<stdio。h〉 main() {int n=0。 char c。 while((c=getchar())!='\n’) {n++。 printf(“ASCII=%d,c=%c",c,c). if(n%3==0) printf(“\n”)。 } putchar(‘\n')。 } 程序总结: (1) 字符型数据在内存中保存的是与之相对应的ASCII码值。大家要牢记的ASCII代码值有:数字字符’0’的ASCII值是48,字符‘a’的ASCII值是65,字符‘A’的ASCII值是97,字符‘’的ASCII值是32,这4个特殊字符的ASCII值必须记住。其他的只要在它们的基础上递推就可以。 (2) 在printf和scanf中所用到的%后的字母,取决于输入输出项在定义时所用的关键字。Int与%d对应,float与%f对应,double与%lf对应,char与%c对应,long int与%ld对应,short int与%hd对应。 (3) 本题中的语句char c.和printf(“ASCII=%d,c=%c”,c,c).貌似与(2)中讲的理论相冲突,其实是可行的,由于字符型数据在内存中保存的是与之相对应的ASCII码值,ASCII码值都是整型数,所以char既可以与%c对应,也可以与%d对应. (4)注意语句while((c=getchar())!=’\n')中括号的用法,很多同学容易把(c=getchar())外的这层括号忘掉,变成while(c=getchar()!=’\n’),由于!=的优先级要高于=,所以导致运算顺序的改变,最终引起结果的错误. (5)putchar(‘\n’)。的功能仍然是让黑屏上的press any key to continue 乖乖换行,从而提高程序输出结果的可读性。与printf(“\n").是完全等价的。 (6)getchar()的功能是等待用户从键盘输入一个字符到内存,它的功能决定了它的写法必须是赋给一个字符型的内存变量,如本题的c=getchar(). 6—20 请编写程序,输入一行数字字符(用回车结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如,若输入(〈CR〉代表Enter键):2 4 8 3 〈CR〉,则输出整数:2483。 #include〈stdio。h> main() {char ch,int i=0. while((ch=getchar())!='\n’) if(ch〉=’0'&&ch〈=’9’) i=i*10+ch—‘0’。 printf(“%d”,i). putchar(‘\n’)。 } 程序总结: (1)ch〉=’0’&&ch〈=’9’不能写成’0’<=ch〈=’9’。数字字符转换成相应的数字,程序实现为:ch=ch—‘0’.大写字母转换成小写字母,程序实现为:ch=ch—‘A'+'a’.小写字母转换成大写字母,程序实现为:ch=ch-‘a+’A’。 (2)while((c=getchar())!=’\n') {if(ch>='0’&&ch<=’9’) i=i*10+ch—‘0’。} 红色标记的这对儿花括号是完全没有必要的,因为if(ch〉=’0’&&ch<='9’)和i=i*10+ch-‘0’是一体的,是一条语句。而while恰恰只需要对这一条语句负责,而不是对多条语句负责,所以花括号是多余的. (3)大家要格外注意i=i*10+ch—‘0’。这条语句,这条语句是本程序的一大亮点。 6—21 请编写程序统计输入的行数,用!号结束输入,!号所在的行不计入行数。 #include〈stdio。h> main() {char ch。 int i=0。 while((ch=getchar())!=’!’)。 if(ch==’\n’) i++。 printf(“%d",i). putchar(‘\n')。 } 程序总结:本程序是要统计输入的行数,其实就是统计'\n’出现的次数。 6-22 请编写程序统计输入的一行中小写字母的个数。 #include〈stdio.h> main() {char ch。 int i=0. while((ch=getchar())!=’\n’) if(ch〉=’a'&&ch〈=’z') i++. printf(“%d”,i)。 putchar(‘\n'). } 程序总结:ch〉='a’&&ch〈=’z'不能写成’a’<=ch〈=’z’。 6—23 请编写输出以下图案的程序,图案的行数由输入的整数值确定(每行中字符之间没有空格)。A BBB CCCCC DDDDDDD EEEEEEEEE #include<stdio.h> main() {int i,j,k,m,n. char ch。 printf(“Enter n:\n"). scanf(“%d”,&n)。 for(i=1。i<=n。i++) {ch=’A'+i—1。 m=2*i—1。 for(k=n.k>=i.k- —) putchar(“”)。 for(j=1。j〈=m.j++) putchar(ch)。 printf(“\n”)。 } } 第7章 7—15编写函数int mymod(int a,int b)用以求a被b除之后的余数。 int mymod(int a,int b) {int s。 s=a%b。 return s。} 程序总结: (1) 函数定义分为两部分,函数首部和函数体。结合本题,函数首部是int mymod(int a,int b),函数体是花括号内的所有语句。 (2) int mymod(int a,int b)中的int 是函数的返回值类型,return后的表达式是函数的返回值,所以int 类型的书写,是根据return后表达式的类型而定的,必须要保证两处的一致性。要是函数体中没有return语句,或是只有return这个单词,其后没有表达式,则认定为该函数没有返回值.那么函数首部中int 就要改写成void。要是函数首部省略函数的返回值类型,写成mymod(int a,int b)的形式,并不表示该函数没有返回值,而是系统默认该函数的返回值为int 类型。 (3) int mymod(int a,int b)中的mymod是函数名,只要符合标识符的命名规则即可,尽量做到见名知义. (4) int mymod(int a,int b)中的a, b是该函数的两个形参.形参的个数取决于题目的实际需要,形参前的类型名一定不能少。 (5) return s。语句的功能是把该被调用函数得到的结果返回调用函数。用return语句只能带回一个数据。要想返回多个数据,必须用到后面的知识点:传址。 (6) %(取余运算符)是双目运算符,其左右的两个运算符必须都是整型数。 7-16编写函数,根据整型形参n的值,计算如下公式的值: 1-1/2+1/3—1/4+1/5-1/6+1/7…… floatres(int n) {int i=1。 float e=0,m,j. for(j=1.0。j〈=n。j++) {m=1/j。 e+=i*m。 i=-i。 } return e。 } 程序总结: (1) 要注意m=1/j.中的1/j,若是把j的类型定义成int 类型的,只要1和j(j大于1)进行整除运算,统统为0。只要把j的类型定义成float类型,这种情况即可避免.举例:1/2=0,而1/2.0=0.5,1.0/2=0。5,1.0/2.0=0.5,运算结果的类型取决于两操作数中较大的类型,双目运算符在运算之前,首先要统一两操作数的类型(统一的原则请参看附录5)。 7—17编写函数,根据整型形参m的值,计算如下公式的值: t=1-1/2*2-1/3*3-…… float fun(int m) {float i,t=1,n. for(n=2。n〈=m。n++) {i=-1/(n*n)。 t+=i。 } return t. } 7—18编写函数用以求表达式x*x-5x+4的值,x作为参数传送给函数,调用此函数求: y1=2*2—5*2+4 y2=(x+15)*(x+15)+4 y3=sinx*sinx—5*sinx+4 y1的值为-2。0;x为0.5时,y2的值为166.75,y3的值为1.832721 double fun(double x) {double y。 y=x*x-5*x+4。 return y。 } 第8章 8-17请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传送回调用函数。 Void fun(float a,float b,float *m,float *n) {*m=a+b. *n=a—b。 } 程序总结: 本题的要求是在调用函数中传递两数到被调用函数,在被调用函数中求出和值和差值,然后传送到调用函数。显然return语句无能为力,因为return语句仅能返回一个数据。像这样涉及到多个数据的传递的必须要用到传址运算. 8-18请编写函数,对传送过来的三个数选出最大数和最小数,并通过形参传回调用函数。 void fun(float *a,float*b,float *c) {float t。 if(*a〈*b) {t=*a。*a=*b。*b=t。} if(*a〈*c) {t=*a。*a=*c。*c=t。} if(*b〈*c) {t=*b。*b=*c。*c=t。} } 程序总结:本函数的设计思路是:在被调用函数中利用指针远程遥控,把三个数按从大到小的顺序排好,然后在调用函数中输出最大数a和最小数c。 第9章 9-27输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符'0’的个数,下标为1的元素统计字符'1'的个数,…. #include<stdio.h〉 main() {char ch。 int num[10]={0}。 printf(“请输入一行字符:\n”)。 while((c=getchar())!=’\n') if(ch〉=’0'&&ch<=’9') num[ch—‘0’]+=1。 for(i=0。i〈10。i++) printf(“num[%d]=%d\n”,i,num[i]). } 程序总结: (1)ch〉=’0’&&ch〈=’9’,注意这个表达式的写法。千万不能写成’0’〈=ch<=’9’。 (2)int num[10]={0}。因为num数组的功能是累加,所以在累加之前必须要清零。 (3)注意语句num[ch—‘0’]+=1。进一步巩固数字字符转化为数字的算法:ch=ch—‘0’。 9—28编写函数,对具有10个整数的数组进行如下操作:从下标为0的元素开始直到最后一个元素,依次向前移动一个位置.输出移动后的结果。 #include〈stdio.h> void move(int *w,int n) {int i. for(i=n-1。i<10。i++) w[i]=w[i+1]。 } main() {int a[10],n,i。 printf(“给数组a赋值:\n”)。 for(i=0。i<10.i++) scanf(“%d”,a[i])。 printf(“请输入n(0<n<10)的值:\n”)。 scanf(“%d",&n)。 move(a,n)。 for(i=0。i<10。i++) printf(“%d”,a[i])。 } 程序总结:本题要求编写函数,而不是编写程序,所以大家只需把红色字体部分写上即可. 9—29编写函数,把数组中所有奇数放在另一个数组中返回。 #include〈stdio.h> #define M 100 int fun(int *p,int *q,int n) {int i,s=0。 for(i=0。i〈n。i++) if(p[i]%2!=0) {*q=p[i]。 q++. s++。 } return s。 } main() {int a[M],b[M],i,j。 printf(“给数组a赋值:\n”)。 for(i=0.i<M.i++) scanf(“%d”,&a[i])。 j=fun(a,b,M)。 printf(“数组中的所有奇数为:\n”). for(i=0。i<j。i++) printf(“%d ”,b[i])。 } 9-30 编写函数,对字符数组中的字母按由大到小的字母顺序进行排序。 void arrsort(char *a,int n) {int i,j,p。 char t。 for(j=0.j〈n—1。j++) {p=j. for(i=j+1。i〈n。i++) if(a[p]>a[i]) p=i。 if(p!=j) {t=a[j]。a[j]=a[p]。a[p]=t。} } } 第九章的其他编程题难度较大,不做要求。 30 / 30展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言课后题编程答案.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/6939944.html