c++错中求解练习题求解

录第一部分
基 础 编 程第1章
概述 练习解答 1EX0101 1EX0102 2第2章
基本编程语句 练习解答 8EX0201 8EX0202 11EX0203 16EX0204 18EX0205 19EX0206 22EX0207 23EX0208 26EX0209 28EX0210 30EX0211 31EX0212 33EX0213 34第3章
数据类型 练习解答 37EX0301 37EX0302 39EX0303 40EX0304 44EX0305 45EX0306 48EX0307 49第4章
计算表达 练习解答 51EX0401 51EX0402 52EX0403 53EX0404 54EX0405 56EX0406 57EX0407 59EX0408 60第二部分
过程化编程第5章
函数机制 练习解答 63EX0501 63EX0502 64EX0503 65EX0504 67EX0505 68EX0506 73第6章
性能 练习解答 76EX0601 76EX0602 80EX0603 84EX0604 85EX0605 86EX0606 88EX0607 90EX0608 93第7章
程序结构 练习解答 135EXEXEX第三部分
面向对象编程技术第...
直属事业部
扫描关注官方微博
扫描关注官方微信
版权所有(C)2014 清华大学出版社有限公司 京ICP备号 京公网安备48号C++习题答案
1.3& 75& 8& 或者 3& 7& 5& 8&
为空格、Tab键或者回车键)
2. #include "iostream.h"
void main()
int& a, b,
cin.ignore(1);
cin && a && hex &&
cin && dec &&
cin.ignore(3);
cout&&"a="&&a&&" b="&&b&&"
c="&&c&&" d="&&d&&&
"iostream.h"
void main()
cin.get(c);
') count++;&&&&&
cin.get(c);
') count++;
cin.get(c);
') count++;
cin.get(c);
') count++;
cin.get(c);
') count++;
&cout&&"空格共有:"&&count&&"个"&&&
4.x is&&&&
"iostream.h"
void main()
x=3.14, y=90;
cout&&"i="&&oct&&i&&'\t'&&"j="&&hex&&j&&
cout.setf(ios::scientific, ios::floatfield);
cout&&"x="&&x&&'\t';
cout.unsetf(ios::scientific);
cout&&"y="&&y&&&&&
6. &#include
"iostream.h"
#include "math.h"
void main()
cout&&"请输入三角形的三边长:"&&
cin&&a&&b&&c;
s = (a+b+c)/2;
area = sqrt(s*(s-a)*(s-b)*(s-c));
cout&&"三角形的面积为:"&&area&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。软件类 C/C++开发练习题解析
软件类 C/C++开发练习题解析。
代码填空题区
代码填空题:要求选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码或符号)直接通过网页提交即可,不要书写多余的内容。
使用ANSI C/ANSI C++ 标准,不要依赖操作或编译器提供的特殊函数。
这部分的题往往都是最简单的(所以相对的占的分值也比较小),这也是我们应该争取全部做对的。
由于题目会给出主要代码,所以你在填写完缺失的部分后往往可以通过运行改代码检验其是否正确。
标题:字母组串
由 A,B,C 这3个字母就可以组成许多串。
比如:&A&,&AB&,&ABC&,&ABA&,&AACBB& ....
现在,小明正在思考一个问题:
如果每个字母的个数有限定,能组成多少个已知长度的串呢?
他请好朋友来帮忙,很快得到了代码,
解决方案超级简单,然而最重要的部分却语焉不详。
请仔细分析,填写划线部分缺少的内容。
// a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
int f(int a, int b, int c, int n)
if(a&0 || b&0 || c&0) return 0;
if(n==0) return 1;
return ______________________________________ ;
int main()
printf(&%d\n&, f(1,1,1,2));
printf(&%d\n&, f(1,2,3,3));
对于上面的测试数据,小明口算的结果应该是:
注意:只填写划线部分缺少的代码,不要提交任何多余内容或说明性文字。
写的很短,通过注释我们可以看出f(a,b,c,n)可以直接求出答案。
那么我们就需要考虑f(a,b,c,n)是如何计算出来的。
首先,它考虑了a、b、c小于0或者n=0的情况,这是几种特殊情况,可以直接得到解,那么剩下的情况就都是无法直接求解的。
那么我们就需要把它转换成若干个子问题求解,直到转换成给出的几种特殊情况为止。
我们从已知的开始,a、b、c小于0不做考虑,这些表示了非法状态。
n=0可以得到答案为1,那么n=1呢?
n=1就相当于在n=0后加了一个字母,那么也就是说我现在有几种字母我就有几种可能性。
那么对于n=1的情况来说,要想转换成n=0,我只需要减去abc3种字母中存在的某一种就好了,当然不存在字母也可以这样考虑,因为代码里已经替我们写好非法情况了。
一般地,我们可以推出f(a,b,c,n)= f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1)
那么语句里填写的就应该是f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1)
你会发现,在函数f中包含了若干个f函数的使用,这种方法被称之为递归。
递归由递归函数和递归出口两部分组成。题目中给的特殊情况就是这个递归的递归出口,而我们实现的就是递归函数。
代码及运行结果
// a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
int f(int a, int b, int c, int n)
if(a&0 || b&0 || c&0) return 0;
if(n==0) return 1;
return f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1);
int main()
printf(&%d\n&, f(1,1,1,2));
printf(&%d\n&, f(1,2,3,3));
标题:最大公共子串
最大公共子串长度问题就是:
求两个串的所有子串中能够匹配上的最大长度是多少。
比如:&abcdkkk& 和 &baabcdadabc&,
可以找到的最长的公共子串是&abcd&,所以最大公共子串长度为4。
下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。
请分析该解法的思路,并补全划线部分缺失的代码。
#define N 256
int f(const char* s1, const char* s2)
int a[N][N];
int len1 = strlen(s1);
int len2 = strlen(s2);
memset(a,0,sizeof(int)*N*N);
int max = 0;
for(i=1; i&=len1; i++){
for(j=1; j&=len2; j++){
if(s1[i-1]==s2[j-1]) {
a[i][j] = __________________________;
if(a[i][j] & max) max = a[i][j];
int main()
printf(&%d\n&, f(&abcdkkk&, &baabcdadabc&));
注意:只提交缺少的代码,不要提交已有的代码和符号。也不要提交说明性文字。
观察代码,答案是一个叫max的东西,而这个东西代表着一个二维数组a里的最大值。
而a[i][j]又会随着s1[i-1]==s2[j-1]而更新。
那么a代表什么才能使max符合答案呢?
s1[i-1]==s2[j-1]代表着第一个字符串的第i个字符与第二个字符串的第j个字符相同,那么这个相同的字符就可以构成一个公共子串。
我们就可以考虑到,如果这个字符的前面恰好是一个公共子串的话,公共子串的长度就可以获得更新,也就是+1。
所以,a[i][j]表示两个字符串的公共子串在第一个字符串中最后一个字符是第i个字符,在第二个字符串中最后一个字符是第j个字符的那个公共子串的长度。
那么更新这个长度用代码写出来就是a[i][j] = a[i - 1][j - 1] + 1;
语句里填写的就是a[i - 1][j - 1] + 1
代码及运行结果
#define N 256
int f(const char* s1, const char* s2)
int a[N][N];
int len1 = strlen(s1);
int len2 = strlen(s2);
memset(a,0,sizeof(int)*N*N);
int max = 0;
for(i=1; i&=len1; i++){
for(j=1; j&=len2; j++){
if(s1[i-1]==s2[j-1]) {
a[i][j] = a[i - 1][j - 1] + 1;
if(a[i][j] & max) max = a[i][j];
int main()
printf(&%d\n&, f(&abcdkkk&, &baabcdadabc&));
(确实很简单对吧=w=)《C++语言习题与综合测试题解》 仝秋红, 武雅丽, 林国庆【摘要 书评 试读】图书
iPhone/iPad/Mac
Android手机或平板电脑
请输入您的手机号码,获取Kindle阅读软件的下载链接。
通知出版社:
没有Kindle设备?,或者下载免费 。
出版社: 人民交通出版社; 第1版 (日)
平装: 308页
语种: 简体中文
25.8 x 18.2 x 1.4 cm
品牌: 人民交通出版社
ASIN: B0047QTY6O
亚马逊热销商品排名:
图书商品里排第1,221,733名 ()
目录
基础习题篇第一章 C++新特点第二章 定义C++类第三章 派生类第四章 虚函数与多态性第五章 重载、复制和转换测试题篇模拟试题模拟试题二模拟试题三模拟试题四模拟试题五模拟试题六模拟试题七模拟试题八参考答案第一章 C++新特点第二章 定义C++类第三章 派生类第四章 虚函数与多态性第五章 重载、复制和转换模拟试题模拟试题二模拟试题三模拟试题四模拟试题五模拟试题六模拟试题七模拟试题八参考文献
5 星 (0%)0%3 星3 星 (0%)0%2 星2 星 (0%)0%1 星1 星 (0%)0%与其他买家分享您的想法版本: 平装|已确认购买这个杂志从学术上很严谨,很有知识性,很好
查看产品详情页面完毕后,在此处了解返回您感兴趣的页面的方式。
查看产品详情页面完毕后,在此处了解返回您感兴趣的页面的方式。}

我要回帖

更多关于 c 多元一方程组求解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信