- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
重庆好老师培训学校上机模拟题第二套答案以及解析
好老师C语言上机模拟题第二套
第一题、编程题:编程实现输出一下图形。
1
2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
这里分析,这里由数字和空格构成,把它补齐之后就有:
第一行 5个空格 第二行 4个空格 第三行 3个空格 第四行 2个空格 第五行 1个空格 第六行 0个空格
数字 我们先看前半边 第一行 就输出 一个1 第二行 就输出 1 2 第三行 输出1 2 3 第四行输出 1 2 3 4 第五行输出 1 2 3 4 5 第六行就输出 1 2 3 4 5 6
再看后半边 第一行什么都不输出,第二行输出 一个1 第三行输出 2 1 第四行输出 321 第五行输出 4 3 2 1 第六行 54321
所以有以下输出:
void main()
{ int i,j;
for(i=1;i=6;i++)
{ for(j=0;j6-i;j++)
printf( ); //解决空格问题
for(j=1;j=i;j++)
printf( %d,j); //前半部分输出
for(j=i-1;j0;j--)
printf(%d,j); //后半部分输出
printf(\n ); //输出换行
}
第二题、填空题:下面程序实现求递归求最大公约数,请完善程序填空;
#includestdio.h
int gcd(int m,int n)
{int g;
if(n==0)
g=m;
else
g=gcd(n,m%n);
return(g);
}
void main()
{int a,b,c;
scanf(%d%d,a,b);
c=gcd(a,b);
printf(%d,c);
}
根据题目分析 题目是要求求出最大公约数,在看主函数里面,只是输入了a,b的值然后c=函数gcd的返回值,然后输出c很明显c就是a,b的最大公约数,gcd实现求出最大公约数,换句话说gcd的返回值就是最大公约数。所以第二个空就填 a,b;
再来分析如果a=24,b=16那么就是传递给m,n那么换句话说就是要求出mn的最大公约数返回,求最大公约数是采用的是辗转求余;即是说:
第一次:C=m%n=24%16==8;n赋值给m,即是说m=16;然后把c赋值给n,即是说n=8;
第二次:C=m%n=16%8==0;n赋值给m,即是说m=8;然后把c赋值给n,即是说n=0;
当n=0的时候就认为m里面放的值就是最大公约数;
在去看填空,第一个空:if()g=m;我们看这个函数的返回值是g也就是说g就是表示最大公约数,当什么时候将m赋值给g也就是说m什么时候是最大公约数,所以就是填n=0的时候所以填一个n= =0;
第二个空:如果不等于0的时候,即是说要将n赋值给m,将c=m%n的值赋值给n,换句话说递归调用的时候第二次调用就该对m传递n过去,所以第二个空填(n,m%m);
第三题、改错题:下面程序实现将一个十进制的数n转换为m(m=16)进制的数,并保存输出。程序中星号行带错,请改错。
#includestdio.h
void main()
{char x[]={0123456789ABCDEF};
int a[64],n,m,k=0;
scanf(%d,%d,n,m);
while(n!=0)
* {a[k++]=n/m; //改成 a[k++]=n%m
* n=n%m; //改成 n=n/m
}
k--;
while(k=0)
* {printf(%c,x[k]); //改成printf(%c,x[a[k]]);
k--;
}
}
这里举个例子 加入n=44,m=16,即是说将44转换成16进制,要将这个转换为16进制那修改后就有这样的操作分析过程
先做while(n!=0)
第一次循环:n=44!=0成立,做 k=0.a[k++]=a[0]=44%16=12 ,n=n/m==44/16= =2;
第二次循环:n=2!=0成立,做k=1, a[k++]=a[1]=2%16=2,n=n/m==2/16= =2;
第三次循环 n=0!=0就不成立,k=2 就不做了。
然后做一个 k-- 也就是说昨晚循环 或者k--之后就
您可能关注的文档
最近下载
- 研究院LNG冷能利用.ppt VIP
- [中央]2024年中国记协新闻培训中心招聘 笔试上岸试题历年典型考题及考点剖析附答案详解.docx
- (陶矜老师课件)股权设计与合伙人激励.pdf VIP
- if与unless专项练习.doc VIP
- 2023年北京市高考化学试卷(解析版).pdf VIP
- 有限空间作业安全管理监理实施细则(新).pdf VIP
- 直播电商与案例分析第10章 农产品直播解析.ppt VIP
- 2023款 R18 B 宝马摩托车 中文 用户保养手册 使用说明书.pdf VIP
- 2022年国家公务员考试《公安专业科目》题(网友回忆版).docx VIP
- USCAR38 超声波焊接技术标准和要求(中文版).pdf VIP
文档评论(0)