C语言作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P15 三.2.3.4 、P55 5
P36 三.1.5.7
P74 三
P83 三.3.4
第三章作业:
P44 2.3.4
2、有一个已排好序的数组,今有一个数,要求按原来排序的规律将它插入数组(从小到大排列)中。
#define N 10
main()
{int i,j,n;
int a[N]={1,3,5,7,9,11,13,15,17};
scanf("%d",&n);
i=0;
while(n>a[i]&&i for(j=N-1;j>i;j--) a[j]=a[j-1]; a[j]=n; for(i=0;i printf("%3d",a[i]); printf("\n"); } 3、将数组中的值按逆序重新存放并输出。 main( ) { int i,a[10]; /* 定义循环变量i和一维数组a */ for(i=0;i<=9;i++) scanf("%d",&a[i ]); for(i=9;i>=0;i--) printf("%d ",a[i]); /* 按照逆序输出*/ printf("\n"); } 4、定义一个一维整形数组a【20】,由键盘随机输入20个2位数,统计其中60~99各值段元素的个数(10个数为一段)。 main() { int a[20],i,n1,n2,n3,n4; n1=n2=n3=n4=0; for(i=0;i<20;i++) {a[i]=rand()%100 ; printf("a[%d]=%d\n",i,a[i]);} for(i=0;i<20;i++) if(a[i]>=60&&a[i]<69) n1++; else if(a[i]>=70&&a[i]<79)n2++; else if(a[i]>=80&&a[i]<89)n3++; else if(a[i]>=90&&a[i]<99)n4++; printf("\n 60~69=%d\n 70~79=%d\n 80~89=%d\n 90~99=%d",n1,n2,n3,n4); } 第七章作业: P103三.2.4.6.7.9、 2、统计100以内的所有素数。要求每行输出5个素数。 void main() { int i,j; for(i=2;i<=100;i++) { for (j=2;j<=sqrt(i);j++) if (i%j==0) break; if (j>sqrt(i)) printf("%5d", i); /* 是素数*/ } } 4、编程输出1~100之间所有完数。 #include "math.h" main() { int sum, i, j; for(i=2; i <= 100; i++) { sum=0; for(j=2;j<= sqrt(i);j++) if(i%j == 0) sum=sum+j+i/j; if(sum==i-1) printf("%d ",i); } } 6、编写程序实现:输入两个整数,输出其最大公约数和最小公倍数。void main() {int a,b,n1,n2,temp; printf("input two datas: "); scanf("%d%d",&a,&b); if(a for(n1=b;n1>1;n1--) if(a%n1==0&&b%n1==0) break; /*求最大公约数*/ n2= a*b/n1; /*求最小公倍数*/ printf("The GCD is: %d\n ",n1); printf("The LCM is: %d\n ",n2); } 7 输出1~200以内能被7整除但是不能被3整除的数之和。 main() { int n,sum=0; for(n=1;n<=100;n++) { if ((n%7==0)&&(n%3!=0)) { printf("%d ",n); sum=sum+n; } } printf("\n sum=%d ",sum); } 9、计算1-1/2+1/3-1/4+….+1/99-1/100,直到最后一项的绝对值小于10-4为止。 #include "stdio.h" main() { int i=1,s; float sum=0; while (1.0/i>1e-4) {if(i%2==0) s=-1; else s=1; sum+=s*(1.0/i); i++;} printf("sum=%.4f",sum); } 第八章作业P121 三.3.4.5 3 找出一个二维数组中的鞍点,即该位置上的元素在该行中最大,同时在该列中最小。也可能不存在鞍点,如果有,打印出其位置和值。 main() { int a[3][4],x,y,i,j,k; int max,min; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) /*外循环,行*/ { max=a[i][0];y=0; for(k=1;k<5;k++)