CPrimer课后习题完整答案第四版

合集下载

C++Primer中文版_第4版_第七章_函数_习题解答_文字word版

C++Primer中文版_第4版_第七章_函数_习题解答_文字word版

第七章函数题目00What is the difference between a parameter and an argument?形参和实参有什么区别?【解答】形参是在函数定义的形参表中进行定义,是一个变量,其作用域为整个函数。

而实参出现在函数调用中,是一个表达式。

进行函数调用时,用传递给函数的实参对形参进行初始化。

题目01Indicate which of the following functions are in error and why. Suggesthow you might correct the problems.下列哪些函数是错误的?为什么?请给出修改意见。

(a) int f() {string s;// ...return s;}(b) f2(int i) { /* ... */ }(c) int calc(int v1, int v1) /* ... */ }(d) double square(double x) return x * x;【解答】(a)是错误的。

因为函数头中所定义的返回值类型为int,return语句世纪返回的表达式的类型为string,两个类型不同,而string类型又不能隐式转换为int类型。

可修改为:string f(){string s;//…Return s;}(b)是错误的。

因为该函数定义中没有指定返回类型,在标准C++中,定义函数时不指定返回类型是非法的。

可修改为:Int f2(int i){/*…*/}(c)是错误的。

缺少括住函数体在左花括号,而且两个形参不应该同名。

可修改为:Int caic(int v1,intv2){/*…*/}(d)是错误的。

缺少括住函数体的一对花括号。

可修改为:Double square(double x){return x*x;}题目02Write a program to take two int parameters and generate the result ofraising the first parameter to the power of the second. Write a programto call your function passing it two ints. Verify the result.编写一个带有两个int 型形参的函数,产生第一个参数的第二个参数次幂的值。

C++primer中文版第四版 习题答案word版本 第八章

C++primer中文版第四版 习题答案word版本 第八章

第八章标准IO库8.1 假设os是一个ofstream对象,下面程序做了什么?os << “Goodbye!” << endl;如果os 是ostringstream对象呢?或者,os 是ifstream对象呢?答:第一个,向文件中写入“Goodbye”,第二个向string对象中写入“Goodbye”,第三个,如果os是一个ifstream对象,则错误,因为ifstream类中没有定义操作符<< 。

8.2 下面的声明是错误的,指出其错误并改正之: ostream print(ostream os);答:标准库类型不允许做复制或赋值操作。

形参或返回类型不能为流类型,所以上句代码错误,因为它把流类型的对象当做了形参。

应改为传递指向该对象的指针或引用:ostream &print( ostream &os );8.3 编写一个函数,其唯一的形参和返回值都是istream&类型。

该函数应一直读取流直到到达文件的结束符为止,还应将读到的内容输出到标准输出中。

最后,重设流使其有效,并返回该流。

答:// 定义控制台¬应用程序的入口点。

//#include"stdafx.h"#include"stdafx.h"#include<iostream>using namespace std;istream & f( istream & in ){int ival;while ( in >> ival, !in.eof()) // 遇到文件结束符之前一直读入数据{if(in.bad()) // input stream is corrupted; bail out, 流是否已被破坏throw runtime_error("IO stream corrupted");if ( in.fail() ) // bad input{cerr << " bad date, try again:";in.clear( ); // reset the streamin.setstate(istream::eofbit); // 结束死循环continue;}// process inputcout << ival << endl;}in.clear(); // 将n中的所有状态值都设为有效状态return in;}int main(){cout << " Input some words ( ctrl + z to end ):\n";f( cin );system("pause");return0;}8.4 通过cin为实参实现调用来测试上题编写的函数。

C++第四版15.41章答案primer

C++第四版15.41章答案primer

// TextQuery.h#ifndef TEXTQUERY_H#define TEXTQUERY_H#include<string>#include<vector>#include<set>#include<map>#include<cctype>//if(!ispunct(*it)) ret+=tolower(*it);#include<iostream>#include<fstream>#include<cstring>#include<sstream>using namespace std;class TextQuery{public:typedef string::size_type str_size;//类型别名typedef vector<string>::size_type line_no;//接口://readfile建立给定文件的内部数据结构void read_file(ifstream &is){store_file(is);build_map();}//run_query 查询给定单词并返回该单词所在的行号集合set<line_no> run_query(const string &query_word)const{map<string,set<line_no>>::const_iterator loc=word_map.find(query_word);if(loc==word_map.end())return set<line_no>();//找不到返回空对象elsereturn loc->second;}//打印原文void print_article(){int i=0;for(vector<string>::iterator siter=lines_of_text.begin();siter!=lines_of_text.end();++siter) cout<<"("<<++i<<")"<<" "<<*siter<<endl;}//text_line返回输入文件中指定的行号对应的行string text_line(line_no line)const{if(line<lines_of_text.size())return lines_of_text[line];throw out_of_range("line number out of range");}line_no size()const//返回文本最后行号{return lines_of_text.size();}private://保存输入文本容器vector<string> lines_of_text;//read_file所用的辅助函数void store_file(ifstream&is)//存储输入文件{string textline;while(getline(is,textline))lines_of_text.push_back(textline);}void build_map()//将每个单词与一个行号关联{for(line_no line_num=0;line_num!=lines_of_text.size();++line_num){//一次读一个单词istringstream line(lines_of_text[line_num]);string word;while(line>>word){//若不在容器则加入该单词,若单词已经存在则在set<line_no>中插入行号word_map[cleanup_str(word)].insert(line_num);}}}//单词和行号相关联map<string,set<line_no>> word_map;//去掉标点并将字母变成小写static string cleanup_str(const string &word){string ret;for(string::const_iterator it=word.begin();it!=word.end();++it){if(!ispunct(*it))///*若不是字符标点符号或特殊符号*/ret+=tolower(*it);}return ret;}};#endif//Query.h#ifndef QUERY_H#define QUERY_H#include"TextQuery.h"#include<string>#include<set>#include<algorithm>#include<iostream>#include<fstream>using namespace std;//Query_base 抽象基类class Query_base{friend class Query;//定义句柄类为基类的友员,句柄类方便使用虚拟函数protected:typedef TextQuery::line_no line_no;//类型简化代换virtual ~Query_base(){ }private:virtual set<line_no>eval(const TextQuery&)const=0;//纯虚构函数返回行号集合virtual ostream&display(ostream&os=cout)const=0;//纯虚构函数打印查询};//管理继承层次的句柄类Queryclass Query{friend Query operator~(const Query&);//访问Query_base*的构造函数friend Query operator|(const Query&,const Query&);friend Query operator&(const Query&,const Query&);Query &operator=(const Query &rhs);public:Query(const string &);//构造WordQuery对象Query(const Query &c):q(c.q),use(e){++*use;}~Query(){decr_use();}//析构句柄类函数//接口函数:调用相应的Query_base操作set<TextQuery::line_no>eval(const TextQuery &t)const {return q->eval(t);}//动态绑定ostream &display(ostream&os)const {return q->display(os);}//动态绑定private:Query(Query_base *query):q(query),use(new size_t(1)){ }//初始化句柄对象Query_base *q;size_t *use;void decr_use()//检查是否是最后一个句柄管理对象{if(--*use==0){delete q;delete use;}}};//内联函数定义赋值inline Query &Query::operator=(const Query &rhs){++*e;decr_use();//检查本对象是否只管理一个Query_base对象q=rhs.q;use=e;return *this;}inline ostream&//Query重载输出操作符operator<<(ostream&os,const Query&q){return q.display(os);}class WordQuery:public Query_base{friend class Query;//Query使用WordQuery的构造函数WordQuery(const string &s):query_word(s){}//实现基类的虚函数set<line_no>eval(const TextQuery&t)const{return t.run_query(query_word);} ostream&display(ostream &os)const{return os<<query_word;}string query_word;//要查找的单词};//内联函数实现Query--WordQuery对象的简历inlineQuery::Query(const string &s):q(new WordQuery(s)),use(new size_t(1)){}class NotQuery:public Query_base{friend Query operator~(const Query&);//友员函数在句柄中声明NotQuery(Query q):query(q){}//构造函数//纯虚函数实现set<line_no> eval(const TextQuery &file)const{//计算操作数结果集set<TextQuery::line_no> has_val=query.eval(file);set<line_no> ret_lines;for(TextQuery::line_no n=0;n!=file.size();++n)if(has_val.find(n)==has_val.end())ret_lines.insert(n);return ret_lines;}ostream& display(ostream &os) const{return os<<"~("<<query<<")";}const Query query;};class BinaryQuery:public Query_base{protected:BinaryQuery(Query left,Query right,string op):lhs(left),rhs(right),oper(op){ }//构造函数//抽象类继续继承eval抽象函数ostream& display(ostream&os)const{return os<<"("<<lhs<<" "<<oper<<" "<<rhs<<")";}const Query lhs,rhs;const string oper;//操作符};class AndQuery:public BinaryQuery{friend Query operator&(const Query&,const Query&);AndQuery(Query left,Query right)://构造函数BinaryQuery(left,right,"&"){}set<line_no> eval(const TextQuery&file) const//虚构函数的实现{set<line_no> left=lhs.eval(file),right=rhs.eval(file);set<line_no> ret_lines;//保存运算结果set<line_no>::iterator ret_it=ret_lines.begin(),left_it=left.begin(),right_it=right.begin();while(left_it!=left.end()&&right_it!=right.end()){if(*left_it==*right_it){ret_lines.insert(*left_it);left_it++;right_it++;}else if(*left_it>*right_it){++right_it;}else ++left_it;}//set_intersection(left.begin(),left.end(),right.begin(),right.end(),inserter(ret_lines, ret_lines.begin()));return ret_lines;}};class OrQuery:public BinaryQuery{friend Query operator|(const Query&,const Query&);OrQuery(Query left,Query right)://构造函数BinaryQuery(left,right,"|"){}set<line_no> eval(const TextQuery&file) const//虚构函数的实现{set<line_no> right=rhs.eval(file);set<line_no> ret_lines=lhs.eval(file);//保存运算结果for(set<line_no>::const_iterator iter=right.begin();iter!=right.end();++iter)ret_lines.insert(*iter);return ret_lines;}};inline Query operator&(const Query &lhs,const Query &rhs){return new AndQuery(lhs,rhs);}inline Query operator |(const Query &lhs,const Query &rhs){return new OrQuery(lhs,rhs);}inline Query operator~(const Query &oper){return new NotQuery(oper);}#endif// 15_41.cpp : 定义控制台应用程序的入口点。

C++Primer(第4版)习题解答(非扫描版有目录)

C++Primer(第4版)习题解答(非扫描版有目录)

习题 2.19............................................11 习题 2.20............................................11 习题 2.21............................................11 习题 2.22............................................11 习题 2.23........................................... 12 习题 2.24........................................... 12 习题 2.25........................................... 12 习题 2.26........................................... 12 习题 2.27........................................... 12 习题 2.28........................................... 12 习题 2.29........................................... 13 习题 2.30........................................... 13 习题 2.31........................................... 13 习题 2.32........................................... 14 习题 2.33........................................... 14 习题 3.1 ............................................. 14 习题 3.2 ............................................. 14 习题 3.3 ............................................. 14 习题 3.4 ............................................. 15 习题 3.5 ............................................. 15 习题 3.6 ............................................. 15 习题 3.7 ............................................. 15 习题 3.8 ............................................. 16 习题 3.9 ............................................. 17 习题 3.10........................................... 17 习题 3.11........................................... 17 习题 3.12........................................... 17 习题 3.13........................................... 18 习题 3.14........................................... 19 习题 3.15........................................... 19 习题 3.16........................................... 19 习题 3.17........................................... 20 习题 3.18........................................... 21 习题 3.19........................................... 22 习题 3.20........................................... 22 习题 3.21........................................... 22 习题 3.23........................................... 22 习题 3.24........................................... 22 习题 4.1 ............................................. 23 习题 4.3 ............................................. 23 习题 4.4 ............................................. 23 习题 4.5 ............................................. 24 习题 4.6 ............................................. 24 习题 4.7 ............................................. 24

C++Primer(第4版)习题解答_第十一章

C++Primer(第4版)习题解答_第十一章

第十一章泛型算法1.algorithm头文件定义了一个名为count的函数,其功能类似于find。

这个函数使用一对迭代器和一个值做参数,返回这个值出现的次数的统计结果。

编写程序读取一系列int型数据,并将它们存储到vector对象中然后统计某个指定的值出现了多少次。

// 11.17_11.1_int_to_vector_count.cpp : 定义控制台应用程序的入口点。

//#include"stdafx.h"#include<vector>#include<iostream>#include<algorithm>using namespace std;int _tmain(int argc, _TCHAR* argv[]){cout << "\tInput some int numbers ( ctrl + z to end):\n\t ";vector<int> iVec;int iVal;while ( cin >> iVal )iVec.push_back( iVal );cout << "\n\tInput a num to search in the iVec: ";cin.clear();cin >> iVal;int iCnt = 0;if ( iCnt = count( iVec.begin(), iVec.end(), iVal )){cout << "\n\tThe value " << iVal << " occurs " << iCnt << " times." << endl;}system("pause");return 0;}2.重复前面的程序,但是,将读入的值存储到一个string类型的list对象中。

C++Primer(第4版)习题解答_十五章

C++Primer(第4版)习题解答_十五章

第十五章面向对象编程1。

什么是虚成员?在类中被声明为virtual的成员,基类希望这种成员在派生类中重定义。

除了构造函数外,任意非static成员都可以为虚成员。

2。

给出protected访问标号的定义。

它与private有何不同?protected为受保护的访问标号,protected成员可以被该类的成员、友元和派生类成员(非友元)访问,而不可以被该类型的普通用户访问。

而private成员,只能被基类的成员和友元访问,派生类不能访问。

3。

定义自己的Item_base类版本。

class Item_base{public:Item_base( const string &book = '', double sales_price = 0.0) :isbn( book ), price( sales_price ) { }string book( ) const{return isbn;}virtual double net_price( size_t n ) c onst{return price * n;}virtual ~Item_base() { }private:string isbn;protected:double price;};4。

图书馆可以借阅不同种类的资料—书、CD、DVD等等。

不同种类的借阅资料有不同的登记、检查和过期规则。

下面的类定义了这个应用程序可以使用的基类。

指出在所有借阅资料中,哪些函数可能定义为虚函数,如果有,哪些函数可能是公共的。

(注:假定LibMember 是表示图书馆读者的类,Date是表示特定年份的日历日期的类。

)class Library{bool check_out( const LibMember& );bool check_in( cosnt LibMember& );bool is_late( const Date& today );double apply_fine();ostream& print( ostream& = count );Date due_date() const;Date date_borrowed() const;string title() const;const LibMember& member() const;};因为有不同的登记、检查、和过期规则,所以bool check_out( const LibMember& );bool check_in( cosnt LibMember& );bool is_late( const Date& today );double apply_fine();ostream& print( ostream& = count );这几个函数应该被定义为虚函数,print函数可能用于打印不同的项目的内同,也定义为虚函数。

C++ Primer 4th 第五章答案

C++ Primer 4th 第五章答案

编写while 循环条件从标准输入设备读入整型(int)数据,当读入值为42 时循 环结束。 【解答】 int val; cin >> val; while (val != 42) 或者,while 循环条件也可以写成 while (cin >> ival && ival != 42) 习题5.8 编写表达式判断4 个值a、b、c 和d 是否满足a 大于b、b 大于c 而且c 大于d 的条件。 【解答】 表达式如下: a > b && b > c && c > d 习题5.9 假设有下面两个定义: unsigned long ul1 =3, ul2 = 7; 下列表达式的结果是什么? (a) ul1 & ul2 (b) ul1 && ul2 (c) ul1 | ul2 (d) ul1 || ul2 【解答】 各表达式的结果分别为3、true、7、true。 习题 5.10 重写bitset 表达式:使用下标操作符对测验结果进行置位(置1)和复位(置 0)。 【解答】 bitset<30> bitset_quiz1; bitset_quiz1[27] = 1; bitset_quiz1[27] = 0; 习题5.11 请问每次赋值操作完成后,i 和d 的值分别是多少? int i; double d; d = i = 3.5; i = d = 3.5; 【解答】 赋值语句d=i=3.5;完成后,i 和d 的值均为3。因为赋值操作具有右结合性,所以首先将3.5 赋给 i(此时发生隐式类型转换,将double 型字面值3.5 转换为int 型值3,赋给i),然后将表达式 i=3.5 的值(即赋值后i 所具有的值3)赋给d。赋值语句 i=d=3.5;完成后,d 的值为3.5,i 的 值为3。因为先将字面值3.5 赋给d,然后将表达式d=3.5 的值(即赋值后d 所具有的值3.5)赋给 i(这时也同样发生隐式类型转换)。 习题 5.12 解释每个if 条件判断产生什么结果? if ( 42 = i ) // ... if ( i = 42 ) // ... 【解答】 前者发生语法错误, 因为其条件表达式42=i 是一个赋值表达式, 赋值操作符的左操作数必须为一 个左值,而字面值42 不能作为左值使用。 后者代码合法,但其条件表达式i=42 是一个永真式(即其逻辑值在任何情况下都为true),因为

cprimer(第4版)习题解答.doc

cprimer(第4版)习题解答.doc

C++ Primer(第 4 版 )习题解答 .txt51 自信是永不枯竭的源泉,自信是奔腾不息的波涛,自信是急流奋进的渠道,自信是真正的成功之母。

书名:C++ Primer(第 4 版)习题解答梅晓勇作者:蒋爱军李师贤来源:人民邮电出版社出版时间: 2006 年 12 月ISBN:55108定价: 45元内容介绍:C++ Primer(第 4 版)是C++大师Stanley B. Lippman 丰富的实践经验和C++标准委员会原负责人JoséeLajoie 对 C++标准深入理解的完美结合,更加入了C++先驱Barbara E. Moo 在 C++教学方面的真知灼见,C++ Primer( 4 版)习题解答2是初学者的最佳 C++指南,而且对于中高级程序员,也是不可或缺的参考书。

本书正是这部久负盛名的C++经典教程的配套习题解答。

书中提供了C++ Primer(第 4 版)中所有习题的参考答案。

本书对使用C++ Primer(第 4 版)学习C++程序设计语言的读者是非常理想的参考书。

C++是一门非常实用的程序设计语言,既支持过程式程序设计,也支持面向对象程序设计,因而也是目前应用极为广泛的一门程序设计语言。

在层出不穷的介绍C++语言的书籍中,C++ Primer 是一本广受欢迎的权威之作。

强大的作者阵容、全面的内容介绍、新颖的组织方式,使之深受C++爱好者的青睐。

本书编者在翻译 C++ Primer(第 4 版)的过程中也深深地感受到了这一点。

在学习一门程序设计语言的过程中,亲自动手编写代码是一种极其有效的学习方式,可以对语言的理解和应用达到事半功倍的效果,因此,C++ Primer(第 4版)中提供了许多习题,以帮助读者加深对书中内容的理解。

本书试图成为 C++ Primer(第 4 版)的配套书籍,根据C++ Primer(第 4 版)中所介绍的内容提供配套习题的解答,书中所给出的“见xx 节”,均指参见 C++Primer (第 4 版)的相应章节。

C++Primer(第4版)习题解答_十二章

C++Primer(第4版)习题解答_十二章

第十二章类和数据抽象12.1 编写一个名为person的类,表示人的名字和地址,使用string来保存每个元素。

答:class person{public:person( string pName, string pAddress ){name = pName;address = pAddress;}private:string name;string address;};12.2 为person提供一个接收两个string参数的构造函数。

见第一题。

12.3 提供返回名字和地址的操作。

这些函数应为const吗?解释你的选择。

在public里添加成员函数:string get_name() const{return name;]string get_address() const{return address;]这两个成员函数不应该修改其操作的对象的数据成员的值,应该声明为const类型。

12.4 指明person的哪个成员应声明为public,哪个成员应声明为private。

解释。

数据成员name和address应为private, 保证只能被类的成员所用,外界不可访问。

成员函数get_name()和get_address() 应声明为public,为外界提供接口访问类的数据成员。

构造函数也应声明为public,以便初始化类的对象。

12.5 C++类支持哪些访问标号?在每个访问标号之后应定义哪种成员?如果有的话,在类的定义中,一个访问标号可以出现在何处以及可出现多少次?约束条件是什么?有public, private, protect。

public后定义可被外界访问的接口,private后定义只能被本类成员函数使用的成员;protect后定义的成员称为受保护成员,只能由本类及本类的子类访问。

访问标号可以出现在任意成员定义之前且次数没有限制。

约束条件是:每个访问标号指定了随后的成员定义级别,这个级别持续有效,直到下一个访问标号出现,或者看到类定义体的右花括号为止。

c++ Primer(第4版)习题解答

c++  Primer(第4版)习题解答
】答解【 。者大较的中数个两的入输户用出输�序程写编 61.1
题习
。致一测预的出给中 41.1 题习与
;1v = rewol { )2v =< 1v( fi ;reppu ,rewol tni reppu 界上为作数的大较、rewol 界下为作数的小较用 // 数个两入读 // ;2v >> 1v >> nic::dts ;2v ,1v tni ;ldne::dts << ":srebmun owt retnE" << tuoc::dts { )(niam tni >maertsoi< edulcni# �下如改修序程 。读阅于便不�起一在连出输的数有所
】答解【 �么什为又�法合不果如�么什为�法合果如�吗法合码代段这
)(niam tni >maertsoi< edulcni# �下如序程的写编环循 elihw 用 } ;0 nruter ;ldne::dts << mus << " si evisulcni 001 ot 05 fo muS" << tuoc::dts ;i =+ mus )i++ ;001 =< i ;05 = i tni( rof ;0 = mus tni { )(niam tni >maertsoi< edulcni# �下如序程的写编环循 rof 用
】答解【 。数作操个一每印打句语的独单用使�序程写重。句语出输的长较条一了用使序程的们我 5.1
题习
} ;0 nruter ;ldne::dts << 2v * 1v << " si " << 2v << " dna " << 1v << " fo tcudorp ehT" << tuoc::dts ;2v >> 1v >> nic::dts ;2v ,1v tni ;ldne::dts << ":srebmun owt retnE" << tuoc::dts { )(niam tni >maertsoi< edulcni#

C程序设计4完整版-课后习题答案

C程序设计4完整版-课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案P006 向屏幕输出文字.#include<>代码均调试成功,若有失误大多不是代码问题.自已找找.int main(){printf("Welcome to \n");return 0; }P008 求两个数的和.#include<>int main(){int a,b,sum;a=5;b=4;sum=a+b;printf("The sum is %d .\n",sum);return 0;}P008 调用函数比较两个数的大小.#include<>int main(){int max(int x,int y); int a,b,c;scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c);return 0;}int max(int x,int y) {int z; if (x>y)z=x;elsez=y;return(z); }P015 三个数的大小.(数字0表示课后练习题)#include<>int main(){int a,b,c,d; int max(int x , int y , int z);printf("Please input 3 numbers :\n");scanf("%d %d %d",&a,&b,&c);d=max(a,b,c); printf("The max is :%d .\n",d); }int max(int x , int y , int z){int m;if (x>y && x>z) m=x;if (y>x && y>z)m=y;if (z>y && z>x)m=z;return (m); }C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂P017 计算机1-5相乘的积.#include<>int main(){int i,s=1; for(i=1;i<6;i++) {s=s*i; n",s);return 0;}#include<> int main(){int i,s=1; for(i=1;i<12;i++) 可以是i=i+2 {if(i%2!=0) s=s*i;elsecontinue; }printf("The sum is %d .\n",s);return 0;}P019 按要求输出80分以上的学生信息.暂时没法做.P019 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是天(目前)。

C++ Primer 4th 第四章答案

C++ Primer 4th 第四章答案

iter2 = ivec2.begin(); while (*iter1 == *iter2 && iter1 != ivec1.end() && iter2 != ivec2.end()) { ++iter1; ++iter2; } if (iter1 == ivec1.end())//所有元素都相等 cout << "Vector1 is equal to vector2." << endl; else cout << "Vector1 is not equal to vector2." << endl; } return 0; } 习题4.9 编写程序定义一个有10 个int 型元素的数组,并以元素在数组中的位置作为各 元素的初值。 【解答】 //定义一个有10 个int 型元素的数组, //并以元素在数组中的位置(1~10)作为各元素的初值 #include <iostream> #include "windows.h" using namespace std; int main() { const int array_size=10; int ia[array_size]; system("CLS"); for(size_t ix=0;ix!=array_size;ix++) ia[ix]=ix+1; return 0; } 习题4.10 下面提供了两种指针声明的形式,解释宁愿使用第一种形式的原因: int *ip; // good practice int* ip; // legal but misleading 【解答】 第一种形式强调了ip 是一个指针,这种形式在阅读时不易引起误解,尤其 是当一个语句中同时定义了多个变量时。 习题4.11 解释下列声明语句,并指出哪些是非法的,为什么? (a) int* ip; (b) string s, *sp = 0; (c) int i; double* dp = &i; (d) int* ip, ip2; (e) const int i = 0, *p = i;

《C语言程序设计》课后习题答案(第四版)谭浩强之欧阳科创编

《C语言程序设计》课后习题答案(第四版)谭浩强之欧阳科创编

第1章程序设计和C语言11.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点31.4最简单的C语言程序5 1.4.1最简单的C语言程序举例61.4.2C语言程序的结构10 1.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂16 2.1什么是算法16 2.2简单的算法举例172.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句593.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

C语言入门经典(第4版)课后练习参考答案

C语言入门经典(第4版)课后练习参考答案

目录目录 (1)第1章C语言编程 (4)练习1.1 (4)练习1.2 (5)练习1.3 (5)第2章编程初步 (6)习题2.1 (6)习题2.2 (7)习题2.3 (9)习题2.4 (10)第3章条件判断 (12)习题3.1 (12)习题3.2 (14)习题3.3 (19)习题3.4 (21)第4章循环 (24)习题4.1 (24)习题4.2 (26)习题4.4 (27)习题4.5 (29)第5章数组 (31)习题5.1 (31)习题5.2 (33)习题5.3 (35)习题5.4 (36)习题5.5 (39)第6章字符串和文本的应用 (41)习题6.1 (41)习题6.2 (50)习题6.3 (53)习题6.4 (53)第7章指针 (57)习题7.1 (57)习题7.2 (59)习题7.3 (61)习题7.4 (63)习题8.1 (65)习题8.2 (67)习题8.3 (69)习题8.4 (73)第9章函数再探 (79)习题9.1 (79)习题9.2 (80)习题9.3 (83)习题9.4 (85)第10章基本输入输出操作 (87)习题10.1 (87)习题10.2 (89)习题10.3 (91)习题10.4 (92)第11章结构化数据 (95)习题11.1 (95)习题11.2 (99)习题11.3 (103)习题11.5 (114)第12章处理文件 (119)习题12.1 (120)习题12.2 (121)习题12.3 (125)习题12.4 (127)第13章支持功能 (132)习题13.1 (133)习题13.2 (133)习题13.3 (135)《C语言入门经典(第4版)》课后练习参考答案第1章C语言编程练习1.1 编写一个程序,用两个printf()语句别离输出自己的名字和地址。

练习1.2将上一个练习修改成所有的输出只用一个printf()语句。

练习1.3编写一个程序,输出下列文本,格式如下所示:"It's freezing in here," he said coldly.第2章编程初步习题2.1 编写一个程序,提示用户用英寸输入一个距离,然后将该距离值输出为码、英尺和英寸的形式。

C++Primer(第4版)习题解答_第十章

C++Primer(第4版)习题解答_第十章

第十章关联容器1.编写程序读入一些列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vector容器里。

// 11.16_10.1_pair.cpp : 定义控制台应用程序的入口点。

//#include"stdafx.h"#include<iostream>#include<string>#include<vector>#include<utility>using namespace std;int _tmain(int argc, _TCHAR* argv[]){string str;int iVal;cout << "\tInput some pair contents( pair<string, int > ) (^Z to end):\n";vector< pair<string, int> > pairVec;while( cin >> str >> iVal )pairVec.push_back( pair< string, int > ( str, iVal) );cout << "\n\t The content of pairVec is:\n" ;for ( vector< pair<string, int> >::iterator it = pairVec.begin(); it != pairVec.end(); ++it ){cout << it->first << " " << it->second << endl;}system("pause");return 0;}2.在前一题中,至少可使用三种方法创建pair对象。

C程序设计第四版习题完整版答案排版整洁

C程序设计第四版习题完整版答案排版整洁

第1章程序设计和C语言1什么是计算机程序1什么是计算机语言1语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5 #include <>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示一个算法22S流程图表示算法28结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 顺序程序设计举例37数据的表现形式及其运算39语句57数据的输入输出65 习题823-1 #include <>#include <>int main(){float p,r,n;r=;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <>#include <>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=;r3=;r2=;r1=;r0=;p1=p*((1+r5)*5); #include <> #include <>int main(){float d=300000,p=6000,r=,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%\n",m);return 0;}3-4#include <>int main(){int c1,c2;c1=197;c2=198;printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0;}3-5#include <>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;}3-6#include <>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}3-7#include <>int main (){float h,r,l,s,sq,vq,vz;float pi=;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h); #include <> int main(){ int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<10 */{ y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y); }else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y); }return 0;}4-7-1#include <>int main(){int x,y;printf("enter x:");scanf("%d",&x);y=-1;if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y); return 0;}4-7-2#include <>int main(){int x,y;printf("please enter x:"); scanf("%d",&x);y=0;if(x>0) y=1;else y=-1;printf("x=%d,y=%d\n",x,y); return 0;}4-8#include <>int main(){ float score;char grade;printf("请输入学生成绩:"); scanf("%f",&score);while (score>100||score<0) {printf("\n 输入有误,请重输"); scanf("%f",&score);switch((int)(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}printf("成绩是 %,相应的等级是%c\n ",score,grade); return 0;4-9#include <>#include <>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place; .=%d\n",sn); return 0;}5-6#include <>int main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%\n",s);return 0;}5-7#include <>int main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;}printf("sum=%\n",s1+s2+s3);return 0;}5-8#include <>int main(){int i,j,k,n;printf("parcissus numbers are ");for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k)printf("%d ",n);}printf("\n");return 0;}5-9-1#define M 1000 /*定义寻找范围*/#include <>int main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */ {n=0; /* n用来累计a的因子的个数 */s=a; /* s用来存放尚未求出的因子之和,开始时等于a */for (i=1;i<a;i++) /* 检查i是否a的因子 */if (a%i==0) /* 如果i是a的因子 */{n++; /* n加1,表示新找到一个因子 */s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}if (s==0){printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子 */if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子 */if (n>4) printf(",%d",k5); /* 以下类似 */if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}return 0;}5-9-2#include <>int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m); for (i=1;i<m;i++)if (m%i==0) printf("%d ",i); printf("\n");}}return 0;}5-10#include <>int main()int i,n=20;double a=2,b=1,s=0,t; for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%\n",s); return 0;}5-11#include <>int main()double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn); printf("第10次反弹%f米\n",hn);return 0;}5-12#include <>int main(){day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);return 0;}5-13#include <>#include <>int main(){printf("enter a positive number:");scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf("The square root of % is %\n",a,x1); return 0;}5-14#include <>#include <>int main(){double x1,x0,f,f1;x1=;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %\n",x1); return 0;}5-15#include <>#include <>int main(){float x0,x1,x2,fx0,fx1,fx2;{printf("enter x1 & x2:"); scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6; }while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6; if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}while(fabs (fx0)>=1e-5); printf("x=%\n",x0);return 0;}5-16#include <>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++) printf(" ");for (k=0;k<=2*i;k++) printf("*");printf("\n");for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}5-17#include <>int main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++)if (i!=k && j!=k)if (i!='x' && k!='x' && k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k); return 0;}。

C语言程序设计课后习题答案第四版谭浩强

C语言程序设计课后习题答案第四版谭浩强

C语言程序设计课后习题答案第四版谭浩强The pony was revised in January 2021第1章程序设计和C语言1什么是计算机程序1什么是计算机语言1语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5 #include <>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示一个算法22用自然语言表示算法22用流程图表示算法22三种基本结构和改进的流程图26用N S流程图表示算法28用伪代码表示算法31用计算机语言表示算法32结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 顺序程序设计举例37数据的表现形式及其运算39常量和变量39数据类型42整型数据44字符型数据47浮点型数据49怎样确定常量的类型51运算符和表达式52语句57语句的作用和分类57最基本的语句——赋值语句59 数据的输入输出65输入输出举例65有关数据输入输出的概念67 用printf函数输出数据68用scanf函数输入数据75字符数据的输入输出78 习题823-1 #include <>#include <>int main(){float p,r,n;r=;n=10;p=pow(1+r,n); printf("p=%f\n",p);return 0;}3-2-1#include <>#include <>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=;r3=;r2=;r1=;r0=;p1=p*((1+r5)*5); #include <> #include <>int main(){float d=300000,p=6000,r=,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%\n",m);return 0;}3-4#include <>int main(){int c1,c2;c1=197;c2=198;printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); return 0;}3-5#include <>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); return 0;}3-6#include <>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5); return 0;}3-7#include <>int main (){float h,r,l,s,sq,vq,vz;float pi=;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h); #include <>int main(){ int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<10 */{ y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y);}else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y);}return 0;}4-7-1#include <>int main(){int x,y;printf("enter x:");scanf("%d",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y); return 0;4-7-2#include <>int main(){int x,y;printf("please enter x:");scanf("%d",&x);y=0;if(x>=0)if(x>0) y=1;else y=-1;printf("x=%d,y=%d\n",x,y); return 0;}#include <>int main(){ float score;char grade;printf("请输入学生成绩:");scanf("%f",&score);while (score>100||score<0){printf("\n 输入有误,请重输");scanf("%f",&score);}switch((int)(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}printf("成绩是 %,相应的等级是%c\n ",score,grade);return 0;}4-9#include <>#include <>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place; .=%d\n",sn); return 0;}5-6#include <>int main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}return 0;}5-7#include <>int main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;}return 0;}5-8#include <>int main(){int i,j,k,n;printf("parcissus numbers are "); for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k)printf("%d ",n);}printf("\n");return 0;}5-9-1#define M 1000 /*定义寻找范围*/#include <>int main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */ {n=0; /* n用来累计a的因子的个数 */s=a; /* s用来存放尚未求出的因子之和,开始时等于a */for (i=1;i<a;i++) /* 检查i是否a的因子 */if (a%i==0) /* 如果i是a的因子 */{n++; /* n加1,表示新找到一个因子 */s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}if (s==0){printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子 */if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */ if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子 */ if (n>4) printf(",%d",k5); /* 以下类似 */if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}return 0;}5-9-2#include <>int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m); for (i=1;i<m;i++)if (m%i==0) printf("%d ",i); printf("\n");}}return 0;}5-10#include <>int main(){int i,n=20;double a=2,b=1,s=0,t; for (i=1;i<=n;i++) {s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%\n",s);}5-11#include <>int main(){double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn);printf("第10次反弹%f米\n",hn);}5-12#include <>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);}5-13#include <>#include <>int main(){float a,x0,x1;printf("enter a positive number:"); scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;printf("The square root of % is %\n",a,x1); return 0;}5-14#include <>#include <>int main(){double x1,x0,f,f1;x1=;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;printf("The root of equation is %\n",x1); return 0;}5-15#include <>#include <>int main(){float x0,x1,x2,fx0,fx1,fx2;do{printf("enter x1 & x2:");scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6; if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs (fx0)>=1e-5); printf("x=%\n",x0);return 0;}5-16#include <>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++) printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}5-17#include <>int main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++)if (i!=k && j!=k)if (i!='x' && k!='x' && k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k); return 0;}第6章利用数组处理批量数据142怎样定义和引用一维数组142怎样定义一维数组143怎样引用一维数组元素144一维数组的初始化145一维数组程序举例146怎样定义和引用二维数组148怎样定义二维数组149怎样引用二维数组的元素150二维数组的初始化151二维数组程序举例152字符数组154怎样定义字符数组154字符数组的初始化155怎样引用字符数组中的元素155 字符串和字符串结束标志156 字符数组的输入输出159使用字符串处理函数161字符数组应用举例165习题1686-1#include <>#include <>int main(){int i,j,n,a[101];for (i=1;i<=100;i++)a[i]=i;a[1]=0;for (i=2;i<sqrt(100);i++) for (j=i+1;j<=100;j++) {if(a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0;}printf("\n");for (i=2,n=0;i<=100;i++) { if(a[i]!=0){printf("%5d",a[i]); n++;}if(n==10){printf("\n");n=0;}}printf("\n");return 0;}6-2#include <>int main(){int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++) {printf("a[%d]=",i); scanf("%d",&a[i]);}printf("\n");printf("The orginal numbers:\n"); for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for (i=1;i<=9;i++){min=i;for (j=i+1;j<=10;j++)if (a[min]>a[j]) min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\nThe sorted numbers:\n");printf("%5d",a[i]);printf("\n");return 0;}6-3#include <>int main(){int a[3][3],sum=0;int i,j;printf("enter data:\n"); for (i=0;i<3;i++)for (j=0;j<3;j++)scanf("%3d",&a[i][j]);sum=sum+a[i][i];printf("sum=%6d\n",sum);return 0;}6-4#include <>int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j;printf("array a:\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert data:");scanf("%d",&number);end=a[9];if (number>end)a[10]=number;else{for (i=0;i<10;i++){if (a[i]>number){temp1=a[i];a[i]=number;for (j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}printf("Now array a:\n"); for (i=0;i<11;i++)printf("%5d",a[i]);printf("\n");return 0;}6-5#include <>#define N 5int main(){ int a[N],i,temp;printf("enter array a:\n");for (i=0;i<N;i++)scanf("%d",&a[i]);printf("array a:\n");for (i=0;i<N;i++)printf("%4d",a[i]);for (i=0;i<N/2;i++) n",number);;printf("continu or not(Y/N) ");scanf(" %c",&c);if (c=='N'||c=='n')flag=0;}return 0;}6-10#include <>int main(){int i,j,upp,low,dig,spa,oth;char text[3][80];upp=low=dig=spa=oth=0;for (i=0;i<3;i++){ printf("please input line %d:\n",i+1); gets(text[i]);for (j=0;j<80 && text[i][j]!='\0';j++){if (text[i][j]>='A'&& text[i][j]<='Z')upp++;else if (text[i][j]>='a' && text[i][j]<='z') low++;else if (text[i][j]>='0' && text[i][j]<='9') dig++;else if (text[i][j]==' ')spa++;elseoth++;}}printf("\nupper case: %d\n",upp); printf("lower case: %d\n",low); printf("digit : %d\n",dig);printf("space : %d\n",spa);printf("other : %d\n",oth);return 0;}6-11#include <>{ char a[5]={'*','*','*','*','*'}; int i,j,k;char space=' ';for (i=0;i<5;i++){ printf("\n");printf(" ");for (j=1;j<=i;j++)printf("%c",space);for (k=0;k<5;k++)printf("%c",a[k]);}printf("\n");return 0;}#include <>int main(){ int j,n;char ch[80],tran[80];printf("input cipher code:");gets(ch);printf("\ncipher code :%s",ch);j=0;while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z')) tran[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) tran[j]=219-ch[j];elsetran[j]=ch[j];j++;}n=j;printf("\noriginal text:"); for (j=0;j<n;j++)putchar(tran[j]);printf("\n");return 0;}6-12b#include <>int main(){int j,n;char ch[80];printf("input cipher code:\n");gets(ch);printf("\ncipher code:%s\n",ch);j=0;while (ch[j]!='\0'){ if ((ch[j]>='A') && (ch[j]<='Z')) ch[j]=155-ch[j];else if ((ch[j]>='a') && (ch[j]<='z')) ch[j]=219-ch[j];elsech[j]=ch[j];j++;}n=j;printf("original text:");for (j=0;j<n;j++)putchar(ch[j]);printf("\n");return 0;}6-13#include <>int main(){ char s1[80],s2[40];int i=0,j=0;printf("input string1:"); scanf("%s",s1);printf("input string2:"); scanf("%s",s2);while (s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("\nThe new string is:%s\n",s1); return 0;}6-14#include <>int main(){ int i,resu;char s1[100],s2[100];printf("input string1:");gets(s1);printf("\ninput string2:");。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档