第四次c语言题.doc

上传人:飞****2 文档编号:60104804 上传时间:2022-11-13 格式:DOC 页数:18 大小:52KB
返回 下载 相关 举报
第四次c语言题.doc_第1页
第1页 / 共18页
第四次c语言题.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《第四次c语言题.doc》由会员分享,可在线阅读,更多相关《第四次c语言题.doc(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、问题 A: Sequence Problem : Array Pratice时间限制: 1 Sec内存限制: 4 MB提交: 1842解决: 403提交状态讨论版题目描述整数序列是一串按特定顺序排列的整数,整数序列的长度是序列中整数的个数,不可定义长度为负数的整数序列。两整数序列A、B的和定义为一个新的整数序列C,序列C的长度是A、B两者中较长的一个,序列C的每个位置上的整数都是A、B对应位置之和。若序列A、B不等长,不妨假设A比B整数多,那么序列C中多出B的那部分整数视作A的对应位置上的整数与0相加。你的任务是计算符合某些要求的整数序列的和,这些序列中的整数都是小于1000的非负整数。输入输

2、入为多行,直到文件末尾结束。每行第一个整数为N(N=1000),后接一个长度为N的整数序列。输出对输入的整数序列两两相加:第1行和第2行相加、第3行和第4行相加按顺序输出结果:每行输出一个整数序列,每两个整数之间用一个空格分隔。若序列数目不为偶数,则视作补一个长度为0的整数序列相加。值得注意的是一个长度为0的整数序列也应该有输出,即使没有整数输出,也应该占有一行,因为“每行输出一个整数序列”。样例输入3 1 2 35 10 15 20 30 504 100 200 300 400样例输出11 17 23 30 50100 200 300 400提示这里最少要用到一个数组来存数整数序列或整数序列

3、的和。#include int main()int a1000=0,b1000=0;int m,i,j=0,p,k;while(scanf(%d,&m)!=EOF) j=j+1;if(j%2!=0)for(i=0;im;i=i+1)scanf(%d,&ai);else for(p=0;pm;p=p+1)scanf(%d,&bp);if(j%2!=1)if(i=p) for(k=0;kp;k=k+1) if(k=0)printf(%d,ak+bk);ak=0;bk=0; else printf( %d,ak+bk);ak=0;bk=0; printf(n);elsefor(k=0;ki;k=k+

4、1)if(k=0)printf(%d,ak+bk);ak=0;bk=0;elseprintf( %d,ak+bk);ak=0;bk=0;printf(n);if(m!=0&j%2=1)for(i=0;i0),后面有M行输入。每行输入为不超过1000个整数的整数序列,每个整数序列的输入均以0结束。输出对输入的整数序列两两相加:第1行和第2行相加、第3行和第4行相加按顺序输出结果:每行输出一个整数序列,每两个整数之间用一个空格分隔。若序列数目不为偶数,则视作补一个长度为0的整数序列相加。值得注意的是一个长度为0的整数序列也应该有输出,即使没有整数输出,也应该占有一行,因为“每行输出一个整数序列”。

5、样例输入31 2 3 010 15 20 30 50 0100 200 300 400 0样例输出11 17 23 30 50100 200 300 400提示这里最少要用到一个数组来存数整数序列或整数序列的和。一个省事的做法是把数组定义的稍微大一点,因为有时你的程序可能会边界处理的不是太好。Append Code提交状态讨论版#include void main() int i,j,m,n,g,k,q;n=0; scanf(%d,&m);if(m%2=0)for(k=0;kj)j=i;for(i=0;ij;i+)if(i=0)printf(%d,a0+b0);elseprintf( %d,a

6、i+bi);printf(n);elsefor(k=0;k1)for(j;j+)scanf(%d,&aj);if(aj=0)break;for(i=0;i+)scanf(%d,&bi);if(bi=0)break;if(ij)j=i;for(i=0;ij;i+)if(i=0)printf(%d,a0+b0);elseprintf( %d,ai+bi);printf(n);elsefor(j=0;j+)scanf(%d,&aj);if(aj=0)break;for(i=0;i0),后面有M行输入。每行第一个整数为N(N=1000),后接一个长度为N的整数序列。输出对输入的整数序列两两相加:第1行

7、和第2行相加、第2行和第3行相加按顺序输出结果:每行输出一个整数序列,每两个整数之间用一个空格分隔。若最后序列不足两个,则视作补一个长度为0的整数序列相加。值得注意的是一个长度为0的整数序列也应该有输出,即使没有整数输出,也应该占有一行,因为“每行输出一个整数序列”。样例输入33 1 2 35 10 15 20 30 504 100 200 300 400样例输出11 17 23 30 50110 215 320 430 50100 200 300 400提示这里最少要用到两个数组来存储整数序列。#include #define N 1001 int main() int i,j,y,m,n,

8、x,aN=0,bN=0; scanf(%d,&n); for(i=1;i=n;i+) if(i%2!=0) scanf(%d,&y); for(j=0;jm?y:m; if(x=0) printf(n); else for(j=0;jx;j+) if(j=0) printf(%d,aj+bj);elseprintf( %d,aj+bj); bj=0; printf(n); if(n=1&n!=1) if(y=0) printf(n); else for(j=0; jy; j+) if(j=0) printf(%d,aj); elseprintf( %d,aj); if(i=n) for(j=0

9、; jy; j+) if(j=0) printf(%d,aj); elseprintf( %d,aj); printf(n); else scanf(%d,&m); for(j=0; jm?y:m; if(x=0) printf(n); else for(j=0; jx; j+) if(j=0) printf(%d,aj+bj);elseprintf( %d,aj+bj); aj=0; printf(n); if(i=n) for(j=0; j0),后面有M组输入数据。每组数据以两个正整数m和n开始,满足0m,n=100,接下来为一个m行n列的矩阵A。输出输出为多组,每组输出A的转置矩阵AT。

10、矩阵的输出为:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。每两组输出之间用一个空行分隔开。样例输入13 31 2 34 5 67 8 9样例输出1 4 72 5 83 6 9提示二维数组存储矩阵。#includeint main()int a100100,m,n,i,j,k,N,e,f;scanf(%d,&N);for(i=0;iN;i+)scanf(%d%d,&m,&n);for(j=0;jm;j+)for(k=0;kn;k+)scanf(%d,&ajk);for(e=0;en;e+)for(f=0;fm;f+)k=e;j=f;if(f=0&

11、e=0)printf(%d,ajk);if(f=0&e!=0)printf(%d,ajk);if(f!=0)printf( %d,ajk);if(e!=n-1)printf(n);printf(nn);问题 E: Matrix Problem (II) : Array Pratice时间限制: 1 Sec内存限制: 4 MB提交: 1120解决: 316提交状态讨论版题目描述求两个矩阵A、B的和。根据矩阵加法的定义,只有同阶的矩阵才能相加。可以确保所有运算结果都在int类型的范围之内。输入输入数据为多个矩阵,每个矩阵以两个正整数m和n开始,满足0m,n=100,接下来为一个m行n列的矩阵A。当

12、输入的m和n均为0时,表示输入数据结束输出对输入的矩阵两两相加:第1个和第2个相加、第3个和第4个相加按顺序输出矩阵相加的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。若输入的矩阵不为偶数个,最后剩余的矩阵不产生任何输出。不满足矩阵加法定义的数据输出“Not satisfied the definition of matrix addition!”每两组输出之间用一个空行分隔开。样例输入3 31 2 34 5 67 8 93 39 8 76 5 43 2 13 31 1 11 1 11 1 12 22 22 21 100 0样例输出10 1

13、0 1010 10 1010 10 10Not satisfied the definition of matrix addition!提示矩阵的加法就是对应位置上的元素相加。Append Code#includeint main()int m,n,e,f,i,j,k,x=1,y=1;for(i=0;i+) int a200200=0,b200200=0;scanf(%d%d,&m,&n);if(m=0&n=0)break;elsefor(j=0;jm;j+)for(k=0;kn;k+)scanf(%d,&ajk);while(scanf(%d%d,&e,&f)!=EOF)x=2;y=y+1;

14、for(j=0;je;j+)for(k=0;kf;k+)scanf(%d,&bjk);break;if(e=0&f=0)break;if(y!=2)printf(n);if(x=2)if(m!=e|n!=f)printf(Not satisfied the definition of matrix addition!);printf(n);elsefor(j=0;jm;j+)for(k=0;kn;k+)if(k=0)printf(%d,ajk+bjk);elseprintf( %d,ajk+bjk);if(jm-1)printf(n);printf(n);问题 F: Matrix Proble

15、m (III) : Array Pratice时间限制: 1 Sec内存限制: 4 MB提交: 845解决: 201提交状态讨论版题目描述求两个矩阵A、B的乘积C=AB。根据矩阵乘法的定义,只有A的列数和B的行数相同才能相乘。可以确保所有运算结果都在int类型的范围之内。输入输入数据为多个矩阵(最少2个),每个矩阵以两个正整数m和n开始,满足0m,n=100,接下来为一个m行n列的矩阵A。当输入的m和n均为0时,表示输入数据结束。输出对输入的矩阵两两相乘:第1个和第2个相乘、第1个和第2个相乘的结果和第3个相乘按顺序输出矩阵相乘的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个

16、换行,在下一行开始输出矩阵的下一行。若前k个矩阵相乘的结果和第k+1个矩阵无法相乘(即不满足矩阵乘法定义),则输出“Not satisfied the definition of matrix multiplication!”。然后用第k+1个矩阵去和第k+2个矩阵相乘。最后一个矩阵只做乘数。每两组输出之间用一个空行分隔开。样例输入2 31 1 11 1 13 31 2 34 5 67 8 93 10000 0样例输出12 15 1812 15 1800提示矩阵的乘法就是一行乘以一列加起来做一个元素。#include int main() int i,j,k,l,m,n,x=0,c200200

17、; int a200200=0,b200200=0;scanf(%d%d,&m,&n); for(i=0;im;i+) for(j=0;jn;j+) scanf(%d,&aij); while(scanf(%d%d,&k,&l)!=EOF) if(k!=0|l!=0) for(i=0;ik;i+) for(j=0;jl;j+) scanf(%d,&bij); x+; if(n!=k) if(x!=1) printf(n); printf(Not satisfied the definition of matrix multiplication!n); m=k; n=l; for(i=0;i20

18、0;i+) for(j=0;j200;j+) aij=0; for(i=0;im;i+) for(j=0;jn;j+) aij=bij; else for(i=0;i200;i+) for(j=0;j200;j+) cij=0; for(i=0;im;i+) for(j=0;jl;j+) for(k=0;kn;k+) cij=cij+aik*bkj; for(i=0;i200;i+) for(j=0;j1) printf(n); for(i=0;im;i+) for(j=0;jn;j+) if(j!=0) printf( ); printf(%d,cij); aij=cij; printf(n); if(k=0&l=0) break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com