71题 c++ 求考研数学真题讲解视频abcd。

酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。
*问题分析与算法设计约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。这里给出一种实现方法。题目中30个人围成一圈,因而启发我们用一个循环的链来表示。可以使用结构数组来构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二为该 人是否被扔下海的标记,为1表示还在船上。从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。这样循环计数直到有15个人被扔下海为止。
*程序说明与注释#include&stdio.h&struct node{ /*指向下一个人的指针(下一个人的数组下标)*/int no_ /*是否被扔下海的标记。1:没有被扔下海。0:已被扔下海*/}link[31]; /*30个人,0号元素没有使用*/int main(){int i,j,k;printf(&The original circle is(+:pagendom,@:christian):
&);for(i=1;i&=30;i++) /*初始化结构数组*/{link[i].nextp=i+1; /*指针指向下一个人(数组元素下标)*/link[i].no_out=1; /*标志置为1,表示人都在船上*/}link[30].nextp=1; /*第30个人的指针指向第一个人以构成环*/j=30; /*j:指向已经处理完毕的数组元素,从link[i]指向的人开始计数*/for(i=0;i&15;i++) /*i:已扔下海的人数计数器*/{for(k=0;;) /*k:决定哪个人被扔下海的计数器*/if(k&15){j=link[j]. /*修改指针,取下一个人*/k+=link[j].no_ /*进行计数。因已扔下海的人计标记为0*/} /*计数到15则停止计数*/link[j].no_out=0; /*将标记置 0,表示该人已被扔下海*/}for(i=1;i&=30;i++) /*输出结果*/printf(&%c&,link[i].no_out? "@":"+"); /*+:被扔下海, @:在船上*/printf(&
*运行结果The original circle is(+:pagandom, @:christian):+++@@+@+@@@+@+++@@+@@@+++@+@@+(+&表示被扔下海海的非教徒 @:留在船上活命的教徒)
*思考题有N个小孩围 成一圈并依次编号,教师指定从第M个小孩开始报数,报到第S个小孩即令其出列。然后从下一个孩子继续报数,数到第S个小孩又令其出列,如此直到所有的孩子都出列。求小孩出列的先后顺序。
& 相关主题:> 输出7和7的倍数,还有包含7的数字,该如何处理
输出7和7的倍数,还有包含7的数字,该如何处理
gulangtt & &
发布时间: & &
浏览:6 & &
回复:8 & &
悬赏:0.0希赛币
输出7和7的倍数,还有包含7的数字输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)一个整数N。(N不大于30000)从小到大排列的不大于N的与7有关的数字,每行一个。2071417我用if语句做了,但是太麻烦,想换成switch语句,但是却写不出来。 这样的该怎么写啊?
  C/C++ code  #include &iostream&
//判断是否是7的倍数
bool IsDivision(const int n,const int m =7)
return !(n%m);
//判断整数n中是否含有7
bool IsContain(const int n,const int m =7)
int temp =
while(temp)
if( m == temp%10)
temp /= 10;
int main()
cout&&&Enter n:&&&
for(int i=7;i&=n;++i)
if(IsDivision(i) || IsContain(i))
system(&pause&);
gulibiehela & &
20:52:05 & &
& & (1)(0)引用root@~ #cat 3.c  C/C++ code  #include &stdio.h&
#include &stdbool.h&
int main (void) {
bool is7 (int n);
scanf (&%i&,&n);
for(i=7;i&=n;i++) {
if(i%7==0|is7(i)) {
printf (&%i\n&,i);
bool is7 (int n) {
if(n%10==7) {
}while(n!=0);
guliguduo & &
20:52:05 & &
& & (0)(0)引用  C/C++ code  /*
输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
一个整数N。(N不大于30000)
从小到大排列的不大于N的与7有关的数字,每行一个。
#include &stdio.h&
#define ARRAY 30000
int main(int argc, char *argv[])
int i,m,j,k,index,fenjie[5];
int array_test[ARRAY];
int flag=0;
printf(&please input a data&=30000\n&);
scanf(&%d&,&data);
for(i=7;i&=i++)
for(j=4;j&=0;j--)
fenjie[j]=m%10;
flag=(fenjie[4]==7)||(fenjie[3]==7)||(fenjie[2]==7)||(fenjie[1]==7)||(fenjie[0]==7);
if((i%7==0)||flag)
array_test[index++]=i;
for(k=0;k&k++)
printf(&%d\n&,array_test[k]);
guli40606 & &
20:52:05 & &
& & (0)(0)引用[code=C/C++][/code]#include &StdAfx.h&
i=7;i &300;i++) {&
if(i%7==0||i%10==7)&
printf(&%d\n&,i);&
}& }& N=300,自己可以调
guliangping & &
20:52:05 & &
& & (0)(0)引用先存去以个char数组.然后sscanf()//一次格式化成整数.然后判断能否被7整除.在一次sscanf()//只要7这个数字,存去一个字符串最后判对应的字符串是否为空串.
gulibiehela & &
20:52:05 & &
& & (0)(0)引用
[code=C/C++]
#include &stdio.h&
int fun(){
while(i& 10){
temp=i%10;
if(temp==7)
int main(){
for(int i=7;i &N;i++){
if(i%7==0||fun(i))
printf( &%d\n &,i);
guliguduo & &
20:52:05 & &
& & (0)(0)引用嗯二楼的解法可以了 但只是一个伪代码哦 要自己完善
guli40606 & &
20:52:05 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&#include&stdlib.h&;voidmain();inta,n,m;;for(n=-39;n&=40;n++);a=n*n-n+41;;cout&&”n=”&&;for(m=2;m&=sqrt((doub;if(a%m==0);cout&&”error\n”;;exit(0);;cout&
#include &stdlib.h&
void main( )
int a,n,m;
for(n=-39;n&=40;n++)
a=n*n-n+41;
cout&&”n=”&&n&&’\t’&&”a=”&&a&&’\t’;
for(m=2;m&=sqrt((double)a);m++)
if(a%m= =0)
cout&&”error\n”;
cout&&”right!\n”;
# include &iostream.h&
void main( )
int i,y,c1,c2,c3,c;
cout&&“input years:”;
for(i=1;i&=y;i++)
c=c1=c2=c3=1;
cout&&”year=”&&y;
cout&&”\t\tnumber of cow:”&&c;
#include&iostream.h&
#include&iomanip.h&
void main( )
for(i=1;i&=7;i++)
cout&&setw(10-i)&&” ”;
for(j=1;j&=2*i-1;j++)
cout&&’*’;
cout&&setw(2+i)&&” “;
for(j=1;j&=15-2*i;j++)
cout&&’*’;
01-05:BBCDD 06-10:ABDCA 11-14:CBDA
3、解析:选项A、D不是C++语言的函数定义格式,C++语言在函数定义的函数头部,形参的定义是每一个形参都要有自己的关键字。
10、解析:该函数调用语句中,含有的实参分别是rec1,rec2+rec3表达式计算后的值和(rec4,rec5)逗号表达式计算后值。
12、解析:函数fib是递归函数,递归终止条件是n&=2。则fib(3)的调用过程是:条件n&2成立,则再次调用fib(2)和fib(1),而fib(1)和fib(2)在函数调用时,不再递归调用,均返回2到它的上一级调用,即到调用fib(3)的执行过程,所以fib(3)调用返回值为4。
13、解析:函数func第一次调用的返回值作为第二次调用的实参,第一次调用func(x,y)即func(2,
5)的返回值是7,第二次调用func(7,z)即func(7,8)的返回值是15,所以r的值为15。
14、解析:函数f(a,3,7)调用时,a是传数组地址,形参数组b与a使用同一片存储空间。f函数的执行是循环控制变量I的初值是3,变量s中累加上b[3]的值4,s的值为4,然后变量I增为5,条件I&7成立,s中累加上b[5]的值6,s的值为10,变量I的值增为7,条件不成立,则退出循环,返回值给x,则最后输出的值为10。
4.2 填空题
解析:swap函数的功能是将参数x,y进行互换,主函数中调用swap(a,b),将a值传给形参x,将b值传给形参y,在执行函数的过程中,互换x和y的值并出输出;返回主函数时,变量a和b的值并没有改变。本程序说明函数调用中的参数传递是单向的。
解析:函数fun调用两次,第一次调用的实参是全局变量d的值1,在函数调用执行过程中,输出的是局部静态变量d;第二次调用的实参是第一次调用的返回值和变量a的和,输出的仍是局部静态变量d的值。注意静态变量的定义和初始化是在第一次使用时进行的,在以后的使用过程中,保留上一次的值,不再初始化。
解析:函数f的功能是将数组第0个至第n个数组元素相乘并返回,f(a,3)就是将a数组的前4个数相乘,得到120。
4、g=8i=7j=6
解析:本题主要检查形参与实参的作用域。
解析:fun函数调用是递归调用,主函数中fun(3)调用的执行过程是:初始n=3,if语句的条件n= =1 || n= =2不成立,执行else子句,再次调用fun函数,s=3-fun(2),则此次执行过程中,if语句的条件n= =1 || n= =2成立,执行if后的子句s=2;,然后再返回到调用它的上一级函数fun(3),fun(3)调用再返回到主函数,返回值为1。
5.1 单项选择题
01-05 BCBDC 06-10 DB
5.2 分析修改以下程序并给出运行结果
1、程序段正确。解析:本题说明字符与字符串的使用方法,单个字符使用单引号,字符串使用双引号。
所以输出为:Aabcd
2、程序段有错误。
int size=3;
array[size];
for(i=0;i&i++)
cin&&array[i];
解析:本题说明一维数组的使用方法。一维数组应该使用[ ],而且一维数组的下标从0开始,所以最后一个元素的下标为2,要将i&=size的=去掉。
所以输出为: 30
5.3编写程序
1、从键盘输入20个数字,计算这些数字的和。
#include &iostream.h&
class number
float cj[20],
void sortData( )
for ( int m = 0; m & 20; m ++ )
cout && &Enter the cj : &;
cin && cj[m];
sum=sum+cj[m];
void display( )
cout&&&the sum of these number is:&&&sum&&
int main( )
number C1;
C1.sortData( );
C1.display( );
2、假设你是客户服务部工作人员,你的工作就是登记每个客户的资本资料,需要记录的是以下信息:
姓名,电话号码,城市,出生日期
请你用程序实现接受信息并且显示信息的过程。
#include &iostream.h&
class Customer
char name[20];
char phoneNo[13];
char city[20];
char birthday[20];
void print( )
cout && &your name is:&&&name&&
cout && &Date of Birth: &&&birthday&&
cout && &City: &&&city&&
cout && &phoneNo:& &&phoneNo&&
void get( )
cout && &your name is:&&&
cout && &Date of Birth: &&&
cout && &City: &&&
cout && &phoneNo:&&&
cin&&phoneNo;
int main( )
object.get( );
object.print( );
3、询问需要输入的成绩个数并进行输入,统计其中不及格的数量 #include&iostream.h&
void main( )
int *p,n,num=0;
cout&&&您要输入几个数据?&&&
cout&&&请输入&&&n&&&个数据:&;
p=new int[n];
//动态分配内存
for(int i=0;i&n;i++)
cin&&*(p+i);
if (*(p+i)&60)
num=num+1;
cout&&&不及格的人数为为:&&&num&&
delete [ ]
//释放内存
6.1 填空题
1、初始化数据成员;函数返回类型说明;多;不同的参数表。
2、一;对象注销时
6.2 分析以下程序执行结果
包含各类专业文献、应用写作文书、中学教育、外语学习资料、高等教育、文学作品欣赏、行业资料、生活休闲娱乐、71C++思考与练习答案等内容。 
 str[0] : str[1] ) ); if( strcmp( str[2], s ) & 0 ) strcpy_s( s, str[2] ); cout && s && } 【解答】 C++ 4.3 思考题 1....  c++课后习题答案_IT认证_资格考试/认证_教育专区。-1- 第五章 一、 选择填空 习题 1. 在下列关键字中,用以说明类中公有成员的是( A. 2. 下列的...  C++课后习题答案(杨志强 龚沛增) 完整版_工学_高等教育_教育专区。杨志强版的课后答案,全部,复习的孩子们拿好 第一章 一、 选择题 C A B C A A C B ...  c++课后部分习题答案_理学_高等教育_教育专区。里面有一些C++答案第一题 1 题目: 一位亿万富翁遇到一个陌生人, 陌生人找他谈一个换计划, 该计划如下: 我每天...  c++课后习题答案 隐藏&& 1、C++的特点: C++语言具有以下特点: (1) C++是 C 语言的超集。它既保持 了 C 语言的简洁、 高效和接近汇编语言等特 点, 又克服...  C++课后答案_理学_高等教育_教育专区。这里有第一章的: 谭浩强 C++课后习题答案 1.请根据你的了解,叙述 C++ 的特点。C++ 对 C 有哪些发展? 【解】 略。 2...  C++课后习题答案 隐藏&& 章 多态性与虚函数 1.在例 12.1 程序基础上作一些修改。定义 Point ... //Point.h #ifndef POINT_H #define POINT_H using name...  同济c++课本习题参考答案_理学_高等教育_教育专区。习一、选择题 1. 下列叙述错误的是___A___。 A. 主函数中定义的变量在整个程序中都是有效的 B. 复合语句...  8页 免费 英语答案 18页 2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 C++课后习题答案1--5 隐藏&& C++课...

我要回帖

更多关于 考研数学真题讲解 的文章

 

随机推荐