习题四参考答案介绍.pdf_第1页
习题四参考答案介绍.pdf_第2页
习题四参考答案介绍.pdf_第3页
习题四参考答案介绍.pdf_第4页
习题四参考答案介绍.pdf_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题四 1 用 C 代码描述以下计算要求: (1)输出一维数组中下标是 4 的倍数的元素。 (2)自左至右在一维数组中找第一个值为 key 的元素的下标。 (3)将一维数组中的元素按与原先存储顺序相反的顺序重新存储。 答: (1) 设数组为 a,有 N 个元素。 for(int i = 0; i int main() char buf120; int i, count26; printf(“Enter letter line.n“); gets(buf); for(i=0; i=A int index120, pc; int i, f, r; printf(“Enter letter line.n“); gets(buf); pc = f = r = 0; for(i=0; bufi!=0; i+) if(bufi=() r+; else if (bufi=) if(r 0) indexpc+ = i; else if(f0) indexpc+ = -i; for(i = 0; i 0) printf(“花括号不配对(%d)!n“, indexi); else printf(“方括号不配对(%d)!n“, -indexi); if(pc = 0) printf(“括号配对!n“); return 0; 4 编写将已知数组内容复制到另一个新数组, 使复制产生的新数组包含已知数组全部出现 过的值,而又不重复。 答: #include #define N 100 int aN, bN; int n, bn, left, right, i, m; int main() cout n; cout ai; bn = 0; for(i = 0; i bm) left=m+1; else right=m-1; if (left right) for(int j = bn; j left; j-) bj = bj-1; bleft = ai; bn+; for(i = 0; i #define N 100 int aN; int n, length, i, m; int main() cout n; cout ai; length = 1; for(i = 1; i #include #define N 100 double p1N2, p2N2, p3N2; int n1, n2, i, j, k; double p, c; int main() cout p; if(p c; p1n10 = p; p1n1+1 = c; cout p; if(p c; p2n20 = p; p2n2+1 = c; i = 0; j = 0, k = 0; while(i p2j0) p3k0 = p1i0; p3k+1 = p1i+1; else if(p1i0 0.00001) p3k0 = p2j0; p3k+1 = p1i1+p2j1; i+; j+; while(i = 0) if(i) cout 1) cout #define N 10000 int sieveN; int n, p, i, j; int main() cout n; sieve0 = sieve1 = 0; for(i = 2; i #define N 50 void main() int primesN; int pc,m,k; primes0 = 2; /* 2 是第一质数 */ pc = 1; /* 已有一个质数 */ m = 3; /* 被测试的数从 3 开始 */ while (pc int monTbl12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; void main() int y, s, leep, i; printf(“输入年份 “); scanf(“%d“, leep = (y %4 = 0 long n; /*求 y 年 1 月 1 日是星期几*/ n = 1461L*(y-1)/4 + 153L*14/5+1; s = (n - 621049) %7; for(i = 1; i #include #define N 50 char aN; void main() int i, j, t; printf(“输入一个长整数:n“); scanf(“%s“, a); int v = strlen(a); for(j = v - 1; j 0; j-) if (aj aj-1) break; if (j = 0) printf(“已没有更大的整数!n“); return; for(i = v - 1; i = j; i-) /* 寻找交换元素 */ if (ai aj-1) break; t = aj-1; aj-1 = ai; ai = t; /* 交换 */ for(i = v - 1; i j; i-, j+) /* 后部分元素颠倒 */ t = aj; aj = ai; ai = t; printf(“下一个大整数是%sn“, a); 11对于 n=2,3,4,50,输出 1/n 的十进制表示的字符列。要求每当十进制小数的第 一个循环周期输出后,就结束该数的输出。以下是程序部分输出结果的样板: 1/2=0.50 1/3=0.3 1/4=0.250 1/5=0.20 1/6=0.16 1/7=0.142857 答: #include #define N 50 int rN, c; void main() int n, d, k; for(n = 2; n #define N 100 void reverse(int a, int k) int i=0,j=k-1; while(i #define N 8 int aNN; void main() int i, j, k=1, t, n = N; printf(“这里以 8*8 的方阵为例说明顺时针转和逆时针转的实现代码。n“); for(i = 0; i #define N 100 void outputSquare(int aN, int n) int beg=1; int s=n*n+1; for(int i=0;i=0;k+) aki-k=beg; an-1-kn-1-i+k=s-beg; beg+; else for(int k=i;k=0;k-) aki-k=beg; an-1-kn-1-i+k=s-beg; beg+; int main() int n; int aNN; printf(“输入矩阵边长.n“); scanf(“%d“, outputSquare(a, n); for(int i=0;i void makeArray(int *, int, int); #define N 8 int aNN; void main() int i, j, n = N, sN = 1; printf(“这里以 8*8 矩阵为例说明方阵填数的方法。n“); for(i = 0; i = i; j-) /* 下行: (n-1-i,n-2-i)至(n-1-i,i) */ an-1-ij = sN+; for(j = n-2-i; j i; j-) /* 左列: (n-2-i,i)至(i+1,i) */ aji = sN+; for(i = 0; i #define N 250 char strN; int isspace(char c) if(c= |c=t|c=r|c=n|c=f|c=v) return 1; else return 0; void main() int p, s; printf(“输入字符串n“); gets(str); p = s = 0; while(isspace(strs) s+;/掠过前导空白符 if(strs != 0)/输入一个非空白符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论