c语言课后答案.doc 27页

  • 188.50 KB
  • 2022-04-22 11:19:53 发布

c语言课后答案.doc

  • 27页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《C程序设计》课外作业及参考答案说明: (1)章节顺序按照PowerPoint电子教案;    (2)教材上的作业注明了章节和题号;    (3)所用教材是《C程序设计(第二版)》 谭浩强 清华大学出版社;    第一章C语言概述1.1简答题:写出C语言的主要特点(教材习题1.1)。1.2填空题:1.C语言与操作系统并称“栾生兄弟”。2.C语言俗称为形式。3.C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。1.3单项选择题1.以下说法中正确的是。(A)C语言程序总是从第一个定义的函数开始执行 (B)在C语言程序中,要调用的函数必须在main函数中定义 (C)C语言程序总是main函数开始 (D)C语言程序中的main函数必须放在程序的开始部分2.以下正确的C标识符是。 (A)_125(B)C#(C)C++(D)A$1.4多项选择题1.以下关于C语言的说法中,错误的是。(A)俗称为“低级语言的高级形式”,因此功能简单(B)不是结构化程序设计语言(C)可能直接访问内存(D)语法限制不严2.以下标识符属于C语言关键字的有。(A)integer(B)else(C)include(D)while第二章C语言基本数据类型、变量、常量与表达式2.1简答题1.求下面算术表达式的值。(教材习题3.9)a)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.727 a)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.51.写出下面程序的运行结果。(教材习题3.10)main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d",i,j,m,n);}2.写出下面表达式运算后a的值,设原来a=12。设a和n已定义为整型变量。(教材习题3.12)a)a+=ab)a-=2c)a*=2+3b)d)a/=a+ae)a%=(n%=2),n的值等于5f)a+=a-=a*=a3.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.2填空题1.写出下面各逻辑表达式的值。设a=3,b=4,c=5。(教材习题5.3)(1)a+b>c&&b==c(2)a||b+c&&b-c(3)!(a>b)&&!c||1(4)!(x=a)&&(y=b)&&0(5)!(a+b)+c-1&&b+c/22.(1)5<<2(2)0!=1(3)!!3(4)105%10(5)3/2*2(6)5^3(7)1<2<0(8)1%2*23.已知inta=1,b=2,c;执行下列语句后,写出各变量的值。c=++b―a++;变量(1)a=,(2)b=,(3)c=4.数学式对应的C语言表达式是。5.当算术表达式中出现了float型变量时,系统自动将该型变量值转换为   (1)   类型,然后参与运算,如果出现char型变量时,直接转换为(2)型参与运算。2.3单项选择题1.C语言中,常量0.5F在内存需占用字节存储。(A)1(B)2(C)4(D)82.下列符号中,合法的C常量是。(A)097(B)0.5e+1.0(C)0x5FH(D)"\"3.C语言没有专门的逻辑变量,它表示逻辑真的方法是。(A)TRUE(B)0(C)1     (D)一切非零数值4.以下C常量错误的是。(A)"xX0d"(B)-1U(C)1e-2F(D)0101015.以下不正确的字符串常量是。27 (A)"12"12"(B)"abc"(C)"\0"(D)""6.逻辑运算符两侧运算对象的数据类型。(A)只能是0或非0正数(B)可以是任何类型的数据。(C)只能是整型或字符型数据。(D)只能是0或17.下列符号中,合法的C常量是。(A)‘t’(B)079(C)3.5e2.1(D)0xch2.4多项选择题1.以下变量在内存中占2个字节的是。(只考虑TC2.0)(A)inta;(B)intb[2];(C)charc[2];(D)floatd[2];2.C语言中,与常量"A"等效的常量表达式有。(A)65(B)"x41"(C)"a"-32(D)0101第一章简单C程序设计1.1程序设计题1.输入一个华氏温度,要求输出摄氏温度。公式为要求输出要有文字说明,取2位小数。(教材习题4.9)2.输入年增长率p,编程计算并输出经过多少年后,生产总值会翻一翻。3.2单项选择题1.已知实型变量a存贮的是一个0~1之间的实数,将a以两位小数百分比形式输出(如:a=0.347592,则输出为34.75%)正确的打印语句是。(A)printf(“%.2f%%”,a*100);(B)printf(“%.2f%”,a);(C)printf(“%.2f%%”,a/100);(D)printf(“%.2f%%”,100*(a+0.5));2.能正确输出字符A的语句是。(A)putchar(‘41’);(B)puthcar(“A”);(C)printf(“%d”,‘A’);(D)putchar(‘101’);第二章C语言的控制语句及基本程序设计技术(统计/计数、递推/迭代、数论问题、字符图形、搜索/穷举求解)4.1程序分析题1.若a=3,b=2,c=1,则执行下列if语句后,依次写出a、b、c的值。if(a>b)a=b;if(b>c)b=c;elsec=b;c=a;27 2.执行下列程序后,x和y的值分别是多少。intx,y;for(y=1,x=1;y<=50;y++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;}3.写出以下程序的输出结果。#includemain(){intc="A",a=0,k=1;while((k+=2)<8){putchar(++c);a+=k;}printf("%dn",a);return1;}4.下面程序的循环体共执行了多少次,输出的结果是什么?#include"stdio.h"voidmain(){intm,n;m=10;n=-1;do{m++;n+=5;if(!(n%3))printf("%4d%4dn",m,n);}while(m>n);}1.若输入为ABCD¿,下面程序的输出是什么?#includevoidmain(){charch,n;for(n=0;(ch=getchar())!=10;n++)putchar(ch+32);printf("%dn",n);}4.2单项选择题1.以下程序的输出结果是  。  x=0;doprintf(“%d”,x++);while(x<1); (A)0  (B)01  (C)012  (D)无任何显示27 2.以下能正确计算10!的程序段是。(A)do{i=1;s=1;s=s*i;i++;}while(i<=10);(B)do{i=1;s=0;s=s*i;i++;}while(i<=10);(C)i=1;s=1;do{s=s*i;i++;}while(i<=10);(D)i=1;s=0;do{s=s*i;i++;}while(i<=10);3.若变量已有正确定义,程序a=0;for(i=1;i<=n;i++)for(j=0;j<=i;j++)a++;执行后,变量a的值是。(A)n(n+1)/2(B)(n+1)(n+2)/2(C)n(n-1)/2(D)n(n+3)/24.与语句if(a!=0)…等效的语句是。(A)if(!a)… (B)if(a)… (C)if(a==0)…(D)if(a>=0||a<=0)…5.break语句的作用是()。(A)中止函数的执行(B)立即中止循环(C)中止本次循环,直接开始下一次循环(D)从一个循环体直接跳转至另一个循环体内4.3程序填空题#include"stdio.h"#include"(1)"main(){intm,i,k;for(m=2;m<=1000;m++){k=(int)sqrt(m)+1;for(i=2;i<=k;i++)if((2))break;if((3))printf("%5d",m);}4.4程序设计题1.企业放发的奖金根据利润提成。设企业的利润为I,提成标准如下:I<10万元时,提成10%;10万元<I≤20万元时,低于10万元部分仍按10%提成,高于10万元部分按7.5%提成;20万元<I≤40万元时,低于20万元部分按前面方法提成,高于20万元部分按5%提成;40万元<I≤60万元时,低于40万元部分按前面方法提成,高于40万元部分按3%提成;60万元<I≤100万元时,低于60万部分按前面方法提成,高于60万部分按1.5%提成;100万元<I时,低于100万元部分按前面方法提成,高于100万元部分按1%提成。编程输入利润I,计算输出提成金额。(教材习题5.8)2.编写一个决定学生成绩的程序。这个程序将读入一个学生的三次考试成绩(0-100),然后计算其平均值,并根据这个平均值决定学生的总成绩(用字母A,B,C,D,E来表示)。字母成绩按如下规定来确定:A平均成绩在90或90分以上27 B平均成绩在80到89分C平均成绩在70到79分D平均成绩在60到69分E平均成绩在60分以下。(教材习题5.6)输入若干整数,直到输入0时停止,统计并输出奇数的数目和偶数的数目。3.输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。(教材习题6.2)4.计算s=。要求n值由用户输入。(教材习题6.4)5.打印水仙花数(教材习题6.6)。6.输入x值,计算,要求最后一项绝对值小于10-6时停止计算。7.用公式计算p的近似值,计算时取1000个因子。8.韩信点兵:有兵一队,五伍剩一,六伍剩五,七伍剩四,十一伍剩十,问兵几何?9.有30个男女小孩同在一家饭馆进餐,共花了50元,其中每男宾3元,女宾2元,小孩1元。问男、女、小孩各多少?10.将一张面值100元的人民币兑换为5元、2元、1元和5角的零钞,要求零钞总数不超过40张且每种至少1张,求所有兑换方案。11.有一个算式缺少了四个数字(如下所示),请编程找出这四个数字。  10566+(475-349)*16=41635412.打印如下图形。要求输入最大的字母来控制打印行数。比如,下图应该输入字母D。 AB-B C―――CD―――――D C―――CB-B A13.如果一个自然数的所有因子之和等于该数本身,称这个数为“完数”。编程输出1000以内的全部完数。要求输出格式如下:(教材习题6.7)28=1+2+4+7+14第一章数组5.1单项选择题1.C语言的数组下标默认从开始。(A)1(B)0(C)任意整数(D)有时为1,有时为027 2.若有定义inta[5],k=4;以下表达式没有安全隐患的是。(A)a[k-1](B)a[-1](C)a[++k];(D)a[5]5.2多项选择题1.以下能对二维数组a正确定义并进行初始化的语句有。(A)inta[2][3]={{1,1},{2}};(B)inta[3][]={{1},{2},{3}};(C)inta[][]={1,2,3,4,5,6};(D)inta[][3]={{1,1,1},{2,2},{3}};5.3程序设计题1.求一个3´3矩阵对角线元素之和。(教材习题7.3)2.一个数组中的值按逆序重新存放。(教材习题7.5)3.用二维数组实现如下格式杨辉三角形的打印。(教材习题7.6)4.有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。(教材习题10.5)第一章指针初步6.1程序分析题1.写出下面程序的运行结果。#include"stdio.h"inta[4]={1,2,3,4};voidmain(){int*p=a,m,n;for(m=3;m>=0;m--)for(n=0;n<=m;n++)printf("%d",*(p+n));}2.#include“stdio.h”#defineN8voidmain(){inta[N],k,*p;for(k=0;k0)*p++=a[k];while(p>a)printf(“%d”,――*p);}若该程序的输入为0-96-14543-521,则程序的输出是什么?6.2单项选择题27 1.有定义staticinta[]={0,1,2,3,4},*p=a+2;表达式*++p的值为。(A)1(B)2(C)3(D)42.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是。(A)k=*ptr1+*ptr2;(B)ptr2=k;(C)ptr1=ptr2;(D)k=*ptr1*(*ptr2);3.若有定义:inta[10],*p=a;,则p+5表示(8)。(A)元素a[5]的地址(B)元素a[5]的值(C)元素a[6]的地址(D)元素a[6]的值第一章函数(含习题课)7.1程序分析题1.下面程序的运行结果是。voidfl(void){intx=1;staticy=2;x++;y++;printf("%d,%dn",x,y);}main(){intk;for(k=1;k<=3;k++)fl();}2.下列程序的运行结果是。intd=1;voidfl(intp){intd=2;d+=p++;printf("%d",d);}main(){inta=3;fl(a);d+=a++;printf("%dn",d);}3.下列程序的运行结果是。27 #includeinta=10,c=5;main(){inta=1,b=2,d=4,e=5;printf("%dn",func((a+b,b*c,c%d),(d,e/b)));}intfunc(intx,inty){returnx+y;}4.下面程序的运行结果是什么?#includestaticintx=150;voidshow(intx,inty){printf("x=%d,y=%dn",x,y);x=300;y=400;}voidmain(){intx=100,y=200;show(y,x);printf("x=%d,y=%dn",x,y);}5.下面程序的运行结果是。voidfl(void){intx=1;staticy=2;x++;y++;printf("%d,%dn",x,y);}voidmain(){intk;for(k=1;k<=3;k++)fl();}7.2程序填空题1.以下函数f的功能是实现N´N阶方阵转置,请填空。#defineN8voidswap()27 {inttemp=*p;*p=*q;*q=temp;}voidf(int){inti,j;for(i=0;i*pmax)pmax=;return();}floata[M][N];voidmain(){inti,j;for(i=0;i=’A’&&*s<=’Z’)*s+=32;27 puts(a);}若程序的输入为SWJTU,则输出结果为。2.若程序输入为ABCD,下面程序的输出结果是。#include"stdio.h"#include"string.h"voidmain(){chars[81],*p,*q,t;gets(s);p=s;q=s+strlen(s)-1;while(p0a=1;elsea=0;2.C语言存贮字符串时,用特殊字符()表示字符串结束。(A)’x0d’(B)’0’(C)’n’(D)’’3.以下选项中,不能正确赋值的是。(A)chars[10];s="Hello";(B)chars[]={"H","e","l","l","o",""};(C)chars[10]="Hello";(D)char*s="Hellon";4.以下程序能够安全正确地输入字符串的是。(A)chars[41];scanf("%s",s[0]);(B)chars[41];scanf("%c",s);(C)char*s;scanf("%s",s);(D)chars[41],*p=s;scanf("%s",&(*p));7_3.程序设计题1.编写程序,输入一个字符串,用函数实现字符的逆序存储后输出该字符串。2.从键盘接收一个字符串,判断该字符串是否为回文。所谓回文,就是正读和反读顺序相同的串,如:ABCDCBA27 3.编写程序将字符串中的小写英文字符变成大写,其它字符保持不变。(要求用函数实现)第一章编译预处理指令8.1单项选择题1.为计算机多项式f(x)=3x2+2x+1,最恰当的宏定义是。(A)#definef(x)=3*x*x+2*x+1(B)#definef(x)f(3*x*x+2*x+1)(C)#definef(x)(3*x*x+2*x+1)(D)#definef(x)(3*(x)*(x)+2*(x)+1)2.以下不能判断一个整数x的奇偶性的宏定义是。(A)#defineodd(x)((x)%2)(B)#defineodd(x)((x)&1)(C)#defineodd(x)((x)==1)(D)#defineodd(x)((x)-2*((x)/2))8.2程序设计题1.定义一个带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。(教材习题9.1)2.年份year,定义一个宏,以判别该年是否闰年。(教材习题9.2)第二章指针深入9.1单项选择题1.以下关于指针的说法中,不正确的是。(A)指针表达式也称为地址表达式(B)指针值的存贮长度有2字节、4字节两种(TC2.0)(C)指针变量可以进行加减乘除运算(D)函数的名字就是一个函数指针常量,表示该函数代码的入口地址2.若有定义和语句:inta=10,b=20,*p=&a,**pp=&p;p=&b;printf("%d%dn",*p,**pp);,则输出结果是。(A)10,20(B)10,10(C)20,10(D)20,209.2多项选择题1.若有定义inta[4][5],(*p)[5]=a;则以下正确而安全访问数组元素的表达式是。(A)**p;(B)*(*(p+4)+1)(C)**(a+1)+1(D)*(*a+1)(E)*p[0]+2 (F)(*(p+3))[4](G)a[4][3](H)*(a[3]+1)2.若有数组定义inta[3][4];以及函数原型voidf(int(*a)[4]);以下函数调用正确的是     。(A)f(a); (B)f(a[0][0]);(C)f(a[0]);(D)f(a+2);27 (E)f(&a[1]); (F)f(&a[0][0]);(G)f(*a);(H)f(*a[0]);1.若有定义和语句:intw[2][3],(*pw)[3];pw=w;则能对w数组元素正确引用的是     。(A)*(w[0]+2);(B)*(w[2][3]);(C)pw[0][0];(D)*(pw[1][2]);9.3程序分析题1.以下程序的输出是     。#includevoidmain(){doublea=2.5,*p,**q;p=&a;q=&p;(*p)++;printf("%.2fn",**q);}2.以下程序的输出是。#include"stdio.h"main(){intx[][3]={1,2,3,4,5,6,7,8,9};int(*p)[3]=x+1;printf("%d,%d,%dn",**p,*(*(p+1)+2),*(*x+1));return0;}3.下列程序的运行结果是  。main(){inta[10]={9,7,6,1,2,3,0,4,8,5},*p,**k;p=a;printf("%d",*(p++));printf("%d",*(++p));k=&p;printf("%dn",**k);}第一章结构、联合、枚举、类型定义10.1单项选择题1.有定义struct{inta[5];}b;则正确表达成员数组a的最后一个元素地址的是。(A)b.a(B)b.a[5](C)b.a+4(D)&(&b->a[4])2.以下对枚举类型名的定义中正确的是。(A)enuma={one,two,three};(B)enumb{one=9,two=-1,three};(C)enumc={"one","two","three"};(D)enumd{"one","two","three"};3.以下关于结构体的说法正确的是。27 (A)结构体的成员变量可以与结构体变量同名(B)结构体的成员变量不能是指针类型的变量(C)指向结构体的指针变量不能在定义时初始化(D)结构体数组不能在定义时进行初始化4.以下关于C语言结构体变量的说法中错误的是。(A)各成员变量首地址不相同       (B)各成员变量首地址相同(C)存贮空间为所有成员变量长度之和   (D)定义时可以初始化10.2多项选择题1.若有定义structd1_tp{inta,b;};structd2_tp{d1_tpa;intb;}b;则以下正确的成员变量表达式是。(A)a.a(B)b.a.b(C)(&b.a)->a(D)b.b2.以下选项中,能正确定义s为结构体变量并进行初始化的有。(A)typedefstructtag{charname[20];intage;}ABC;ABCs={"Jack",20};(C)struct{charname[20];intage;}ABC;ABCs={"Jack",20};(B)structABC{charname[20];intage;}s={"Jack",20};(D)struct{charname[20];intage;}s={"Jack",20};第一章C文件操作11.1单项选择题1.以只写方式打开一个二进制文件,应选择的文件操作方式是。(A)"a+"(B)"w+"(C)"rb"(D)"wb"2.改写磁盘文件中的数据,文件打开方式正确的是。(A)"ab+"(B)"rb+"(C)"wb+"(D)"rb"3.以下文件打开方式串中,不能创建新文件的是。(A)"r+"(B)"a"(C)"w+"(D)"a+"11.2程序填空题1.以下程序的功能是统计字符文件a.txt中有多少个空格,请填空。#include"stdio.h"#include"process.h"voidmain(){FILE*fp;intch;intn=(1);27 if(!(fp=fopen("a.txt","rt"))){printf("Fileopenerror!n");exit(1);}while(1){ch=fgetc(fp);if((2))break;if((3))n++;}printf("n=%dn",n);fclose(fp);}2.以下程序的功能是统计正文(文本)文件ABC.TXT的行数。#include“stdio.h”main(){FILE*fp;intch,count=0;fp=fopen(“abc.txt”,(1));if(fp==NULL){printf(“ABC.TXTnotfound.n”);return;}while(1){ch=fgetc(fp);if((2))break;if(ch==(3))count++;}fclose(fp);printf(“numbersoflines=%dn”,count);}3.以下程序段的功能是从键盘上输入一个字符串,将字符串中的大写字母转换为小写字母,输出到文本文件test.txt中。请填空使该程序功能完整。#include#includevoidmain(){_(1)__fp;charstr[255];inti=0;if((fp=(2)__("test.txt","w"))==NULL){printf("Can"topentest.txt.n");exit(0);}printf("Inputastring:n");gets(str);while(_(3)__!=""){if(str[i]>="A"&&str[i]<="Z")str[i]+=32;fputc(str[i],fp);i++;}_(4)__;}11.3程序设计题1.印如下图形到屏幕上和字符文件ABC.TXT中。(打印行数n由键盘输入)****n行27 ************习题参考答案1.1语言简洁、紧凑、使用方便、灵活;运算符丰富;数据结构丰富;具有结构化的控制语句;语法限制不太严格,程序设计自由度大;允许直接访问物理地址;生成目标代码质量高,程序执行效率高;程序可移植性好。1.21.UNIX2.低级语言的高级3.(1)编译(2)连接1.31.C2.A1.41.AB2.BCD2.11.a)2.5b)3.52.9,11,9,103.a)24b)10c)60d)0e)0f)04.非0值表示“真”;0表示“假”。如果一个量不等于0,判断为“真”,反之判断为“假”。2.21.(1)0(2)1(3)1(4)0(5)12.(1)20(2)1(2)1(3)5(4)2(5)6(7)0(8)23.(1)2(2)3(3)24.(-b+sqrt(fabs(b*b-4*a*c)))/(2*a)5.(1)double(2)int2.31.C2.D3.D4.A5.B6.B7.A2.41.AC2.ABCD3.11.#include“stdio.h”voidmain(){doubleC,F;printf(“InputF=”);scanf(“%lf”,&F);C=5.0/9*(F-32);printf(“C=%.2fn”,C);}2.分析:(1+p)n=2有n=ln(2)/ln(1+p)#include“stdio.h”#include“math.h”voidmain(){doublep,n;printf(“Inputp=”);scanf(“%lf”,&p);n=log(2)/log(1+p);printf(“n=%.0fn”,n);}27 3.21.A2.D4.11.a=2,b=1,c=22.x=10,y=63.BCD154.循环体共执行了3次,输出为:1295.abcd44.21.A2.C3.D4.B5.B4.3(1)math.h(2)m%i!=0或m%i(3)i>k或i>=k+14.41./*if语句求解*/#include“stdio.h”voidmain(){doubleI,p=0;printf(“InputI=”);scanf(“%lf”,&I);if(I>100){p+=(I-100)*0.01;I=100;}if(I>60){p+=(I-60)*0.015;I=60;}if(I>40){p+=(I-40)*0.03;I=40;}if(I>20){p+=(I-20)*0.05;I=20;}if(I>10){p+=(I-10)*0.075;I=10;}p+=I*0.1;printf(“p=%fn”,p);}/*switch语句求解*/#include“stdio.h”voidmain(){doubleI,p=0;printf(“InputI=”);scanf(“%lf”,&I);if(I>=100){p+=(I-100)*0.01;I=100;}swith((int)(I/10)){case10:case9:case8:case7:case6:p+=(I-60)*0.015;I=60;case5:case4:p+=(I-40)*0.03;I=40;case3:case2:p+=(I-20)*0.05;I=20;case1:p+=(I-10)*0.075;I=10;default:p+=I*0.1;}printf(“p=%fn”,p);}2.27 #include“stdio.h”voidmain(){ints1,s2,s3;floatav;charlevel;while(1){printf(“Inputthreescoresofonestudent:n”);scanf(“%d%d%d”,&s1,&s2,&s3);if(s1<0||s2<0||s3<0)break;av=(s1+s2+s3)/3.0F;switch((int)(av/10)){case9:case10:level=’A’;break;case8:level=’B’;break;case7:level=’C’;break;case6:level=’D’;break;default:level=’E’;}printf(“level=%cn”,level);}}3.#include“stdio.h”voidmain(){charch;intne,ns,nd,n;n=ne=ns=nd=0;while(1){ch=getchar();if(ch==’n’)break;n++;if(ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’)ne++;if(ch>=’0’&&ch<=’9’)nd++;if(ch==32)ns++;}printf(“thenumberofEnglishletters=%dn”,ne);printf(“thenumberofdigitalnumbers=%dn”,nd);printf(“thenumberofspaces=%dn”,ns);printf(“thenumberofothercharacters=%dn”,n-ne-ns-nd);}4.#include“stdio.h”voidmain(){doubles,a;intk,n;printf(“Inputn=”);scanf(“%d”,&n);s=0;a=1;for(k=0;k<=n;k++){s+=a;a=(n+1)*a;}printf(“s=%.0fn”,s);}27 5.答案见电子教案例题6.解:令s=sinx,,k=1,3,5,…则xk=1ak=k=3,5,7,…#include"stdio.h"#include"math.h"voidmain(){doubles,x,a;intk;printf("Inputx=");scanf("%lf",&x);a=x;s=0;k=1;while(fabs(a)>1e-6){s+=a;k+=2;a*=-x*x/k/(k-1);}printf("sin(%.4f)=%.4fn",x,s);}7.#include"stdio.h"voidmain(){intn;doublepi=1;for(n=2;n<=2000;n+=2)pi*=(double)n*n/(n-1)/(n+1);pi*=2;printf("pi=%fn",pi);}8.#include"stdio.h"voidmain(){intm;for(m=1;m<=10000;m++)if(m%5==1&&m%6==5&&m%7==4&&m%11==10)printf("m=%dn",m);}1万以内的解有4个:即2111,4421,6721,90419.#include"stdio.h"voidmain(){intman,child,women;printf("%8s%8s%8sn","man","women","child");for(man=1;man<17;man++)for(women=1;women<25;women++)27 {child=50-3*man-2*women;if(child>=1&&man+women+child==30)printf("%8d%8d%8dn",man,women,child);}}10.#include"stdio.h"#include"conio.h"voidmain(){inti5,i2,i1,i0_5,count=0;for(i5=1;i5<=20;i5++)for(i2=1;i2<37;i2++)for(i1=1;i1<37;i1++){i0_5=2*(100-5*i5-2*i2-i1);if(i0_5>=1&&i5+i2+i1+i0_5<=40){printf("%4d%4d%4d%4dn",i5,i2,i1,i0_5);count++;if(count%20==0){printf("pressanykeytocontinue...n");getch();}}}}11.#include"stdio.h"voidmain(){longs;inta,b,c,d;for(a=1;a<=9;a++)for(b=1;b<=9;b++)for(c=1;c<=9;c++)for(d=1;d<=9;d++){s=100566+a*10000+(4750+b-(3049+c*100))*(106+d*10);if(s==416354)printf("%4d%4d%4d%4dn",a,b,c,d);}}12.#include"stdio.h"voidmain(){intn,i,j;printf("Inputn=");scanf("%d",&n);if(n%2==0){printf("Inputisnotcorrect.n");return;}n=n/2+1;for(i=1;i<=n;i++)27 {printf("%*s",n-i,"");for(j=1;j<=2*i-1;j++)putchar(j==1||j==2*i-1?"A"+i-1:"-");printf("n");}n--;for(i=n;i>=1;i--){printf("%*s",n-i+1,"");for(j=1;j<=2*i-1;j++)putchar(j==1||j==2*i-1?"A"+i-1:"-");printf("n");}}13.#include"stdio.h"voidmain(){intm,i,s;for(m=1;m<=1000;m++){s=1;for(i=2;i<=m/2;i++)if(m%i==0)s+=i;if(s==m){printf("%d=1",m);for(i=2;i<=m/2;i++)if(m%i==0)printf("+%d",i);printf("n");}}}5.11.A2.A5.21.AD5.31.#include“stdio.h”voidmain(){inta[3][3],m,n;intsum=0;for(m=0;m<3;m++)for(n=0;n<3;n++)scanf(“%d”,&a[m][n]);for(m=0;m<3;m++)sum+=a[m][m];printf(“sum=%dn”,sum);}2.答案见电子教案上的例题3.#include“stdio.h”#defineN100voidmain(){inta[N][N],i,j,n;27 printf(“Inputnumberofrows=”);scanf(“%d”,&n);for(i=0;ik;}voidmain(){inta;printf(“Inputaintegernumber:”);scanf(“%d”,&a);printf(“Itis“);if(!isPrime(a))printf(“not“);printf(“prime.n”);}3.#include“stdio.h”#defineN10inta[N];voidsort(inta[]){inti,j,flag,tmp;for(i=1;ia[j+1]){tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;flag=0;}if(flag)break;}}voidmain()27 {inti;for(i=0;i=n;}27 voidmain(){chars[255];printf(“Inputastring:”);scanf(“%s”,s);if(isPldr(s))printf(“Itispalindrome.n”);elseprintf(“Itisnotpalindrome.n”);}3.#include“stdio.h”voidtoUpper(char*s){intm;for(m=0;s[m]!=’’;m++)if(s[m]>=’a’&&s[m]<=’z’)s[m]-=32;}voidmain(){chars[200];gets(s);toUpper(s);puts();}8.11.A2.C8.21.#include“stdio.h”#defineswap(a,b,t)((t)=(a),(a)=(b),(b)=(t))/*a,b借助t换值*/voidmain(){intx,y,temp;scanf(“%d%d”,&x,&y);swap(x,y,temp);printf(“x=%d,y=%dn”,x,y);}2.#include“stdio.h”#defineLEAP_YEAR(y)((y)%4==0&&(y)%100!=0)||((y)%400==0)voidmain(){intyear;printf(“Inputayear:”);scanf(“%d”,&year);if(LEAP_YEAR(year))printf(“%disaleapyear.n”,year);elseprintf(“%disnotaleapyear.n”,year);}9.11.C2.D9.21.ADFH2.ADE3.AC9.31.3.52.4,9,53.96610.11.C2.B3.A4.B27 10.21.BCD2.ABD11.11.D2.A3.A11.21.(1)0(2)feof(fp)或ch==EOF(3)ch==32或ch==’‘2.(1)“r”或“rt”(2)feof(fp)或ch==EOF(3)10或‘n’3.(1)FILE*(2)fopen(3)str[i](4)fclose(fp)11.31.#include“stdio.h”voidmain(){intn,i,j;FILE*fw;printf(“Inputn=”):scanf(“%d”,&n);fw=fopen(“abc.txt”,“w”);for(i=1;i<=n;i++){printf(“%*s”,n-i,“”);fprintf(fw,“%*s”,n-i,“”);for(j=1;j<=2*i-1;j++){putchar(‘*’);fputc(‘*’,fw);}printf(“n”);fprintf(fw,”n”);}fclose(fw);}27'