c语言2048移动思路编程题目,第一次涉及这种题,完全没思路,求助。。。

查看: 3074|回复: 9
求助2个C语言编程题,给点思路也行
阅读权限10
本人新手,才学编程,实在搞不懂这2个问题,求帮忙,谢谢
1. 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
[C] 纯文本查看 复制代码#include &stdio.h&
int main()
char s[50]= &ABCDACABACKJBBBAACDA&;
int c[4] = {0};
for (int i = 0; s[i] !='\0'; i++)
if (s[i] == 'A')
else if (s[i] == 'B')
else if (s[i] == 'C')
else if (s[i] == 'D')
int temp=0,temp1=0;
for (int x = 0; x & 4; x++)
for (int y = 0; y & 4-x; y++)
if (c[y] & c[y+1])
temp = c[y];
c[y] = c[y+1];
temp1 = s[c[y]];
s[c[y]] = s[c[y+1]];
s[c[y+1]] = temp1;
printf(&%c-%d\n&,s[c[0]],c[3]);
printf(&%c-%d\n&,s[c[1]],c[2]);
printf(&%c-%d\n&,s[c[3]],c[1]);
printf(&%c-%d\n&,s[c[2]],c[0]);
2. 找出多个字符串中的最大公共子字符串,如“nbitheimanb”和“itheia”的最大子串是:”ithei”。(C语言)
这一题没有思路啊
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
[C] 纯文本查看 复制代码#include &stdio.h&
void main()
char Char[9999]=&ABBCCCDDDD&;
//记录出现次数
int num[4]={0};
for(i=0;Char[i]!=0;i++)
if(Char[i]=='A')
if(Char[i]=='B')
if(Char[i]=='C')
if(Char[i]=='D')
printf(&%d,%d,%d,%d&,num[0],num[1],num[2],num[3]);
for (j=0;j&=4;j++)
for (i=0;i&3-j;i++)
if (num[i]&num[i+1])
temp=num[i];
num[i]=num[i+1];
for(i=4;i&0;i--)
if(num[i]==a)
for(j=0;j&a;j++)
printf(&A&);
if(num[i]==b)
for(j=0;j&b;j++)
printf(&B&);
if(num[i]==c)
for(j=0;j&c;j++)
printf(&C&);
if(num[i]==d)
for(j=0;j&d;j++)
printf(&D&);
第一次,如果出现一样的出现次数就会杯具,自己修改一下吧,第二题,等晚上有时间了再做。。。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
[C] 纯文本查看 复制代码#include
void main()
你这代码是错的,[mw_shl_code=c,true]for(j=0;j&a;j++)
printf(&A&);
这里不需要循环啊,你这样做的话就会打印很多字母啊,我看题目的意思应该是打印出来的结果是这样的:A:4,B:3,C:2,D:1
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
#include &stdio.h&
void CharNumSort( int&&s[] ) ;
int main( void )
& & & & int CharNumCount[4] = {0} ; //定义统计输入字符串中abcd 数目的数组,并初始化
& & & & int i = 0 ;
& & & & while( ( ch = getchar( ) ) != EOF ) // ch 获取输入的字符,终止条件在windows 下是ctrl+z
& & & & & & & & switch( ch )
& & & & & & & & {
& & & & & & & & & & & & case 'A' : CharNumCount[0]++ ;
& & & & & & & & & & & & case 'B' : CharNumCount[1]++ ;
& & & & & & & & & & & & case 'C' : CharNumCount[2]++ ;
& & & & & & & & & & & & case 'D' : CharNumCount[3]++ ;
& & & & & & & & & & & & default :
& & & & & & & & }
& & & & CharNumSort( CharNumCount ) ;
& & & & for( i = 0 ; i& 4 ; i++ )
& & & & & & & & printf(&char %c count is %d&, 'A'+i , CharNumCount[i] ) ;
& & & & return 0 ;
void CharNumSort( int&&s[] )
& & & & int i = 0 , j = 0 ;
& & & & int tmp = 0 ;
& & & & for( i = 0 ; i & 4 ; i++&&)
& & & & & & & & for( j = i+1 ; j & 4 ; j++ )
& & & & & & & & {
& & & & & & & && &&&if(s[i] & s[j] )
& & & & & & & && &&&{
& & & & & & & && &&&& & & & tmp = s[i] ;
& & & & & & & && &&&& & & & s[i] =s[j] ;
& & & & & & & && &&&& & & & s[j] =
& & & & & & & && &&&}
& & & & & & & & }
有bug的话,可以小纸条。。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
你这代码是错的,[mw_shl_code=c,true]for(j=0;j
我以为你是要这样:输入一段AADDCCCCCC,然后按出现次数多的打出来CCCCCDDAA,结果是a:几个。。B几个。。。你改一下好了,我理解错了题目
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
第二题,你看一下。
[C] 纯文本查看 复制代码#include&stdio.h&
char c[]=&nbitheimanb&;
char b[]=&ithefia&;
int i=0;int k=0;
for(i;i&sizeof(c);i++)
if(c[i]==b[0])
for(j;j&sizeof(c);j++)
if(c[j]==b[k])
printf(&%c&,b[k]);
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
为了解决字母次数相等的问题,我一直在调试 ,终于解决了,感觉代码好长啊[C] 纯文本查看 复制代码#include &stdio.h&
#define LENGTH 4
int main()
char s[50]= &fdasACDBADEDFSA&;
int array[LENGTH] = {0};
for (int i = 0; s[i] !='\0'; i++)
if (s[i] == 'A')
array[0]++;
else if (s[i] == 'B')
array[1]++;
else if (s[i] == 'C')
array[2]++;
else if (s[i] == 'D')
array[3]++;
int temp =0;
for (int x = 0; x & LENGTH; x++)
for (int y = y & LENGTH-x-1; y++)
if (array[y] & array[y+1])
temp = array[y];
array[y] = array[y+1];
array[y+1] =
for (int t = 0 ;t & 4;t++)
if (array[t] == a)
printf(&%c-%d\n&,'A',array[t]);
else if (array[t] == b)
printf(&%c-%d\n&,'B',array[t]);
else if (array[t] == c)
printf(&%c-%d\n&,'C',array[t]);
else if (array[t] == d)
printf(&%c-%d\n&,'D',array[t]);
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
第二题,你看一下。
[mw_shl_code=c,true]#include&stdio.h&
你这代码有很大的漏洞啊,如果字符串首字母不相同,就出现BUG了,而且题目要求判断多个字符串
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
你这代码有很大的漏洞啊,如果字符串首字母不相同,就出现BUG了,而且题目要求判断多个字符串
你自己改一下啊?给你一个思路,差不多一个意思
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
//之前写的程序有点问题,下面的测试了好多次,应该没问题,进攻参考!!!
#include &stdio.h&
void CharNumSort( int&&s[]&&) ;
void CharNumPrint(int s[] , int x[] );
int main( void )
& && && &int CharNumCount[4] = {0} ; //定义统计输入字符串中abcd 数目的数组,并初始化
& && && &int CharNumCopy[4] = {0} ;
& && && &int i = 0 ;
& && && &while( ( ch = getchar( ) ) != EOF ) // ch 获取输入的字符,终止条件在windows 下是ctrl+z
& && && &{
& && && && && &&&switch( ch )
& && && && && &&&{
& && && && && && && && & case 'A' : CharNumCount[0]++ ;
& && && && && && && && & case 'B' : CharNumCount[1]++ ;
& && && && && && && && & case 'C' : CharNumCount[2]++ ;
& && && && && && && && & case 'D' : CharNumCount[3]++ ;
& && && && && && && && & default :
& && && && && &&&}
& && && &}
& && && &for(i = 0 ; i& 4 ; i++)
& & & & & & & &&&& & & & CharNumCopy[i] = CharNumCount[i] ;& && && && && &//复制字符出现的个数
& & & & & & & &&&CharNumSort( CharNumCopy ) ;&&// 交换后CharNumCopy 数组是按大小排列的
& && && &CharNumPrint( CharNumCopy , CharNumCount ) ;
& && && &return 0 ;
void CharNumSort( int s[] )
& & & & int i , j ,
& & & & for(i = 0 ; i& 4; i++)
& & & & & & & & for(j = i+1 ; j & 4 ; j++)
& & & & & & & && & if(s[i] & s[j])
& & & && && && && &{
& && && && && && &tmp = s[i] ;
& && && && && && &s[i] =s[j] ;
& && && && && && &s[j] =tmp& & & & ;
& & & && && && && &}
void CharNumPrint(int s[] , int x[] )
&&int i , j&&;
&&for(i = 0 ; i& 4 ; i++)
& & & & & & & & for(j = 0 ; j& 4 ; j++)
& && && && & {
&&& & & && && && && & if( s[i] == x[j] )
& & & & & & & & & & & & & & & & & & & & printf(&char %c count number is %d &, 'A'+j , s[i]) ;
& && && && & }
CharNumPrint 函数 用相同类型的数组,在CharNumCount 数组中查找与 CharNumCopy 相对应的元素,
按照CharNumCopy 的顺序打印,同时 用 ‘A’+ 下标 表示查找的字符。。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz
Comsenz Inc.C语言编程题
1.(*)求分数序列:1/2,2/3,3/5,5/8,8/13,13/21...... 前20项的和。
{float i=1,j=2,t=0,s,n,m;
for(n=1;n&=20;n++)
s=i/j,m=i,i=j,j=m+j,t=t+s;
printf("t=%f",t);
2.(*)从键盘输入一个字符串,再将其逆序输出。(如:输入abcde,输出edcba)
char c[10];
scanf("%s",c);
for(i=9;i&=0;i--)
printf("%c",c[i]);
3.(*)已知abc+cba=1333,其中a、b、c均为一位数,例如:617+716=5=1333, 试编程求出符合这一规律的a、b、c,并输出结果。
{int a,b,c,x,y;
for(a=1;a&=9;a++)
for(b=0;b&=9;b++)
for(c=1;c&=9;c++)
{ x=100*a+10*b+c;
y=100*c+10*b+a;
if(x+y==1333)
printf("x=%d,y=%d",x,y);}
4.(*)利用海伦公式求三角形面积,三边长a,b,c由键盘输入。若输入的三边长不能构成 三角形,输出相应提示信息。海伦公式如下:其中s=(a+b+c)/2
三角形面积s*(s?a)*(s?b)*(s?c)
{ float a,b,c,s,
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
if(a+b&c&&a+c&b&&b+c&a)
printf("area=%f",area);
7.(**)输入若干个自然数,对奇数从大到小排序,对偶数从小到大排序,输出两种结果。
maxji(int a[],int n)
{ int i,j,k,t;
for(i=0;i&n-1;i++)
for(j=i+1;j&n;j++)
if(a[k]&a[j]) k=j;
{t=a[k];a[k]=a[j];a[j]=t;}
#define N 10
{int c[N],i,j;
for(i=0;i&N;i++)
scanf("%d",&c[i]);
maxji(c,N);
for(i=N-1;i&=0;i--)
if(c[i]%2==0)
printf("%5d",c[i]);
printf("\n");
for(i=0;i&N;i++)
if(c[i]%2!=0)
printf("%5d",c[i]);
8.(*)求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3 ,则153是一个“水仙花数”。
{int i,j,k,a;
for(i=1;i&=9;i++)
for(j=0;j&=9;j++)
for(k=0;k&=9;k++)
if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)
printf("%d%d%d\n",i,j,k);
程序:main()
{int m,i,j,k,a;
for(m=101;i&=999;m++)
j=(m-m*100)/10;
看过本文章的还看过。。。
c语言程序设计练习题(含程序及参考答案)_工学_高等教育_教育专区。c语言编程练习题c 语言练习题 (所提供的源程序均采用自定义函数方式解决,如不 采用函数方式,也.........
c语言程序设计试题及答案_工学_高等教育_教育专区。c语言 学生数 《c 语言程......
c语言程序设计试题及答案解析_it计算机_专业资料。考试资料,试卷,模拟试题 ......
c语言程序设计题目及答案_电脑基础知识_it计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 c语言程序设计题目及答案_电脑基础知识_it计算机_专业资料。c.........
c语言编程题及答案4_it计算机_专业资料。c语言 编程试题 答案 语言编程题及答案( c 语言编程题及答案(三)
给小学生出加法考试题 编写一个程序,给学生出.........
大学大一c语言程序设计期末考试试卷及答案_it认证_资格考试认证_教育专区。从......
c语言编程题(带答案)_it认证_资格考试认证_教育专区。c语言编程题(带答案) 1、求100之内自然数中最大的能被17整除的数。 2、已知a,b,c都是1位整数,求.........
c语言编程题精选及参考答案_it认证_资格考试认证_教育专区。c 语言编程题精选
有函数 f(x)=(x+1) 和 g(x)=2x+1,输入 x 值计算 f(g(.........
15 1 《毛东俊课程》结业论文 摘 要:期货是是证券市场的一个重要组成部分,作为关系到全球经济发展的石 油期货更容易受到市场的关注,对石油期货价格影响因素及投资.........
期货交易所 3,世界原油分布概况 4、国际原油定价 三、石油期货市场的三大基本功能 四、我国石油期货发展的历程 1、我国石油期货发展的历程 2、我国早期石油期货.........
石油期货知识介绍 金凯讯石化财经资讯 1 商品期货的诞生及发展市场经济发展和完善......
世界主要石油期货交易所交易所 上市合约 交易量 1、1978 年 11 月上市取......
现货石油投资骗局有哪几种?如何识别?_金融投资_经管营销_专业资料。在金融投资...交易本质为非法期货交易。 交易的目的并非转移商品所有权, 交易双方并非期待.........
石油期货的套期保值_金融投资_经管营销_专业资料。石油期货的套期保值 “北京物......
原油期货交易的几个基本规则_金融投资_经管营销_专业资料。原油期货交易的几个基本规则原油期货市场的巨大盈利空间导致投资原油期货的人越来越多。 在这个激烈 竞争.........
国内个人参与原油投资主要通过与石油 交 易所的机构会员合作进行投资,交易所一般不支持个人 投资。国际上主要有四种投资方式:现货投资、期货投 资、期货指数化投资.........
顺序二: 《无敌浩克》 《无敌浩克》是 2008 年上映的超级英雄电影,漫威电影......
《无敌浩克》观后感_小学作文_小学教育_教育专区。 下午我和妈妈及秦小茹和她妈妈一起观看了美国大片《无敌浩克》。 来到山西剧院,我和妈妈先来就先进去了,影片开.........
漫威英雄扮演人物: 2《无敌浩克》 《无敌浩克》是 2008 年上映的超级英雄电......
《无敌浩克》 《神盾顾问》 《钢铁侠2》 《寻找雷神锤子路上发生的趣事》 《雷神......
顺序二:《无敌浩克》《无敌浩克》是2008年上映的超级英雄电影,漫威电影宇宙的第......
《美国队长》 漫威短片《特工卡特》 《钢铁侠》、《无敌浩克》 短片《神盾顾问》 ......
无敌是多么寂寞,英雄无敌3,英雄无敌7,无敌浩克,英雄无敌,无敌天下,无敌僵尸王......
《无敌浩克》→漫威短片《神盾顾问》→《雷神》→《复仇者联 盟》→漫威短片《47 ......
《失 [1] 恋 33 天》——王小贱经典语录 2、起来吃点东西吧,没吃饭还那么沉,邪了门了。《失恋 33 天》——王小贱经典语 录 3、你随便。我说。。你.........
在 2016 年即将上演的《死侍》小贱贱是这个贱样~~ 还有这个萌萌的贱样~~ 小贱贱脱下头套自己都看不惯的贱样:贱贱向他的好朋友吐槽自己的毁容的脸像一颗长.........
不知不觉改编小贱歌词。不知不觉改编小贱歌词 不知不觉(改编小贱歌词)不知不觉(改编小贱歌词) 天空放晴了,心情是粉色的。 我们爱的歌,正循环播放着。 拥抱你.........
小贱_别再说分手_韩语学习_外语学习_教育专区。小贱_别再说分手 别再说分手 小贱 别再说分手 - 小贱 编:小贱 安漠轩 ... 迷迷糊糊 度过每一天 却清晰浮现.........
我听说过的公 司小贱的真实版本 ,是年会上大家合伙送 给老 板 一个 榨 汁机 ......
曲终人散 小贱 [0:972]曲终人散了一个人在徘徊 [0:917]......
说好了不见面——小贱 吉他谱_设计艺术_人文社科_专业资料。我是按照原唱降b来编辑的 说好了不见面 (ht 制谱 ) 小贱 注:我是按照原唱降 b来调弦的 am f.........查看: 11616|回复: 13
C语言编程练习题及答案全集
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
本帖最后由 疾风物语 于
09:26 编辑
最近学编程,拿一些初级的来和大家分享一下
1.1 Hello world.
让我们用C语言向世界问好。
最早的程序基本是这个样子的:
#include &stdio.h&
void main()
& &&&printf(&Hello world.\n&);
#include &stdio.h&
int main()
& & printf(&Hello world.\n&);
& & return 0;
上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
输出:Hello world.
#include&stdio.h&
int main()
& & printf(&Hello world.\n&);
1.2 Welcome to Beijing.
让我们来练习如何显示多行文字。
输出:就是下面的那段文字。
#include&stdio.h&
void main()
{printf(&Welcome\n&);
printf(&to\n&);
printf(&Beijing.\n&);
1.3 练习最简单的printf和scanf
printf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。
输入:整型变量x的值。
输出:输出整型变量x对应的十进制、八进制和十六进制形式。
认真观察-1的八进制和十六进制输出,请想想是为什么。
#include &stdio.h&
int main()
scanf(&%d&,&x);
printf(&x=%d,&,x);
printf(&x=%o,&,x);
printf(&x=%x\n&,x);
1.4 练习两个整数之间的运算
背景:基本练习。
输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123&&444
输出:分别输出进行+、-、*、/、*之后的运行结果。
#include&stdio.h&
int main()
& & scanf(&%d%d&,&x,&y);
& & printf(&%d+%d=%d\n&,x,y,x+y);
& & printf(&%d-%d=%d\n&,x,y,x-y);
& & printf(&%d*%d=%d\n&,x,y,x*y);
& & printf(&%d/%d=%d\n&,x,y,x/y);
& & printf(&%d%%%d=%d\n&,x,y,x%y);
& & return 0;
1.5 学习打印你的第一个图形
背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。
程序如下:
#include &stdio.h&
int main()
& &&&printf(&****\n&);
& &&&printf(&****\n&);
& &&&printf(&****\n&);
& &&&printf(&****\n&);
& &&&return 0;
要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。
输入:无。
输出:指定图形。
#include &stdio.h&
int main()
& &&&printf(&& &*\n&);
& &&&printf(&&&***\n&);
& &&&printf(& *****\n&);
& &&&printf(&*******\n&);
& &&&return 0;
2.1 整型数的表示范围
编写一个循环程序,输入 N 值,输出 N 的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。注意整型数的表示范围,如果当输入的 N 比较大时,例如 N 等于 20 时,输出怎么是负数了?自己想明白吧!
#include&stdio.h&
void main()
int sum=1;
scanf(&%d&,&N);
{for (i=1;i&=N;i++)
sum=sum*i;
printf(&%d\n&,sum);
printf(&N is too big!\n&);
2.2 求正弦函数值
已知求正弦 sin(x) 的近似值的多项式公式为:
sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)!&&+ …
编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。
此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的ε。求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。
友情提示:给定的误差值ε越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。如果出现死循环的情况,可以用&Ctrl&+&Break&键退出程序。
#include &stdio.h&
#include &math.h&
int main()
{ float x,eps,s,y=0,y0,t;
&&int n,j;
& &scanf(&%f%f&,&x,&eps);
& &n=t=j=1;
&&if (n%2==0) y=y-s/t;
&&else& && && &y=y+s/t;
& & s*=x*x;
& & t*=(j+1)*(j+2);
} while(fabs(y0-y)&eps);
printf(&%f\n&,sin(x));
system(&PAUSE&);
&&return 0;
2.3 判断输入的字符的类型
我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。
编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capital letters,小写字母时输出small letters,数字是输出figures,其他字符时输出 others。
#include&stdio.h&
void main()
& & c = getchar ( );
& & if (c & 0x20)
& && & printf (&The character is a control character\n&);
& & else if (c &= '0' && c &= '9')
& && && && &&&printf (&figures\n&);
& & else if (c &= 'A' && c &= 'Z')
& && && && &&&printf (&capital letters\n&);
& & else if (c &= 'a' && c &= 'z')
& && && && &&&printf (&small letters\n&);
& && && &printf (&others\n&);
3.1 找零钱
假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。例如,当要给某顾客找 7 角 2 分钱时,会给他一个 5 角, 2 个 1 角和 1 个 2 分的硬币。试编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。
#include &stdio.h&& &
int main()& &
& & int x1,x2,x3,x4,x5;& &
& & scanf(&%d&,&x);& &
& & x1=x/50;& &
& & x2=x%50/10;& &
& & x3=x%50%10/5;& &
& & x4=x%50%10%5/2;& &
& & x5=x%50%10%5%2/1;& &
& & printf(&%d\n&,x1);& &
& & printf(&%d\n&,x2);& &
& & printf(&%d\n&,x3);& &
& & printf(&%d\n&,x4);& &
& & printf(&%d\n&,x5);& &
& & return 0;& &
3.2 计算时钟的夹角
背景:钟面上的时针和分针之间的夹角总是在 0 度~ 359 度之间。举例来说,在十二点的时候两针之间的夹角为 0 度,而在六点的时候夹角为 180 度,在三点的时候为 90 度。本题要解决的是计算 0:00 到 12:00之间任意一个时间的夹角。
输入:每组测试数据包含两个数字:第一个数字代表小时 ( 大于等于 0 小于 12) ,第二个数字代表分 ( 在区间 [0, 59] 上 ) 。
输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。
友情提示:以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加0.5度。
提示:时钟夹角计算公式|5.5m-30h|,h为时针,m为分针。求浮点型绝对值的函数为fabs,需要包含math.h头文件
#include &stdio.h&
#include &math.h&
int main()
& && && &int h,m;
& && && &scanf(&%d%d&,&h,&m);
& && && &angle=fabs(5.5*m-30*h);
& && && &if(angle&180)
& && && && && && & angle=360-
& && && &printf(&At %d:%02d the angle is %.1f degrees.\n&,h,m,angle);
3.3 照猫画猫:计算圆柱的侧面积及体积
如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2πrh ,体积 v=π r 2 h 。其中π=3.1415926
输入第一行输入圆柱的底面半径 r
第二行输入圆柱的高 h
输出 s=& 圆柱的侧面积 &,v=& 圆柱的体积 &
要求 1. 所有变量都定义为双精度类型
2. 结果精确到小数点后两位
#include &stdio.h&&&
#define n 3.1415926& &
int main()& &
& & float r,h,s,v;& &
& & scanf(&%f%f&,&r,&h);& &
& & s=2*n*r*h;& &
& & v=n*r*r*h;& &
printf(&s=%6.2f,v=%6.2f\n&,s,v);& &
3.4 分离整数
任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。
比如输入的三位正整数
#include &stdio.h&
int main()
& && && &int x,hundreds,tens,
& && && &scanf(&%d&,&x);
& && && &hundreds=x/100;
& && && &tens=x%100/10;
& && && &units=x%100%10;
& && && &printf(&units=%d,tens=%d,hundreds=%d\n&,units,tens,hundreds);
3.5 鸡兔同笼
已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?
输入:头和脚的数目
输出:兔子和鸡的数目(输出语句为:printf(&rabbit=%d,chicken=%d&,rabbit,chicken);)
输入:10 20
输出:rabbit=0,chicken=10
#include &stdio.h&
int main()
& && && &int chicken,rabbit,f,h;
& && && &scanf(&%d%d&,&h,&f);
& && && &rabbit=(f-2*h)/2;
& && && &chicken=(4*h-f)/2;
& && && &printf(&rabbit=%d,chicken=%d\n&,rabbit,chicken);
4.1 温度转换
背景:经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。
温度转换的公式为:F=(C×9/5)+32 ;C=(F-32)×5/9 ;式中F--华氏温度,C--摄氏温度。
输入:第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1);摄氏转华氏(2);
第二个数据是相应需要转换的温度值。
输出:相应的转换后的温度值(保留小数点后 2 位)。
#include &stdio.h&
void main()
double f,c;
& & scanf(&%d&,&lx);
if(lx==1){
& &&&scanf(&%lf&,&f);
&&c=(f-32)*5/9;
&&printf(&The Centigrade is %.2f\n&,c);
& &&&scanf(&%lf&,&c);
&&f=(c*9/5)+32;
&&printf(&The Fahrenheit is %.2f\n&,f);
4.2 分段函数
有一分段函数,y=f(x)。当x小于6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。
#include &stdio.h&
void main()
& && && &int x,y;
& && && &scanf(&%d&,&x);
& && && &if(x&6)
& && && && && && & y=x-12;
& && && &else if(x&15)
& && && && && && & y=3*x-1;
& && && &else
& && && && && && & y=5*x+9;
& && && &printf(&%d\n&,y);
& && && &return 0;
4.3 整数位数判断
输入一个不多于5位的正整数,要求:&&(1)求它是几位数;(2)逆序打印出各位数字。
#include &stdio.h&
#include &stdlib.h&
#define SIZE 5
main(void)
& && &&&int& && && && && && && && && && &&&bit_//位数
& && &&&long int& && && && && & input_//输入数
& && &&&int& && && && && && && && && && &&&result[SIZE];//存放各个位的数
& && &&&int& && && && && && && && && && &&&i;
& && &&&scanf(&%ld&, &input_num);
& && &&&if (input_num & 0 || input_num & 99999) {
& && && && && & printf(&Invalid input\n&);
& && && && && & exit(1);
& && &&&for( bit_count = 0; input_ ++bit_count) {
& && && && && & result[bit_count] = input_num % 10;
& && && && && & input_num /= 10;
& && &&&printf(&%d\n&,bit_count);
& && &&&for(i = 0; i & bit_ ++i)
& && && && && & printf(&%d&,result);
& && &&&printf(&\n&);
& && &&&exit(0);
4.4 四位数拆分
输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是四位数,输出Invalid data。
#include&stdio.h&
void main()
int x,a,b,c,d,e;
scanf(&%d&,&x);
if(x/1000&1||x/10000&=1)
& && && & printf(&Invalid data\n&);
& && && & a=x/1000;
& &&&b=x%;
& && && & c=x%;
& && && & d=x%;
& && && & e=(a+b+c+d)%2;
& && && & if(e==0)
& && && && && && &&&printf(&Yes\n&);
& && && && && && &&&printf(&No\n&);
4.5 磨磨你的砍柴刀:判断三角形的形状
要求:输入三角型的三条边,判断三角形的形状。假设输入的三边边长均&0。
输入:三角型的3条边的长度(int型)。
输出:等边三角形:equilateral triangle.
等腰三角形:isoceles triangle.
不构成三角形:non-triangle.
一般三角形:triangle.
#include&stdio.h&
void main()
float a,b,c;
scanf(&%f%f%f&,&a,&b,&c);
if(a+b&c||b+c&a||c+a&b)
& && && & printf(&non-triangle.\n&);
else if(a==b&&b==c)
& && && & printf(&equilateral triangle.\n&);
else if(a==b||b==c||a==c)
& && && & printf(&isoceles triangle.\n&);
& && && & printf(&triangle.\n&);
4.6 字符加密输出
从键盘上输入一个字符,进行加密以后再输出在屏幕上。加密规律是:输入小写英文字母时,输入a 输出Z、输入b输出Y、输入c输出X、...、输入z输出A。输入大写英文字母时,将该字母ASCII码值再加上该值的1/2后输出所对应的字符,例如数字A的ASCII码值是65,加上其值的1/2后是98(小数四舍五入),则输出字符‘b’。输入数字时,将该数字原ASCII码值再加上该值十进制的十位上的数后输出,例如数字9的ASCII码值是57,加上十位上的数5后是62,则输出字符‘&’。输入其他字符时原样输出。友情提示:整数之间运算的结果要取整,例如5/2的结果是2,而5.0/2.0对小数四舍五入的结果就是3.0了。所以输入大写英文字母时的输出要仔细考虑。
#include &stdio.h&& &
int main()& &
ch=getchar();& &
& &if(ch&=97&&ch&=122)& &
& && &{ch=187-putchar(ch);}& &
& & else if(ch&=65&&ch&=90)& &
& && & {a=ch%2;& &
& && &&&if (a==1) (char)a=(ch+1)/2+& &
& && && &else& && &(char)a=ch/2+& &
& && && &putchar(a);}& &
& & else if(ch&=48&&ch&=57)& &
& && & {ch=ch/10+& &
& && &&&putchar(ch);}& &
&&else putchar(ch);& &
printf(&\n&);& &
4.7 判断某年某月的天数
一年有365天,有的月份有31天,有的有30天,2月份闰年的时候是29天,非闰年的时候是28天。现在要求从键盘上输入一个年份和月份,输出其对应的天数。
#include&&&stdio.h&
{ int year,month,
&&scanf(&%d %d&, &year,&month);
&&switch(month)
&&{ case 1:
& & case 3:
& & case 5:
& & case 7:
& & case 8:
& & case 10:
& & case 12: days=31;
& & case 4:
& & case 6:
& & case 9:
& & case 11:days=30;
& & case 2:if((year % 4 ==0) && (year % 100 !=0) ||(year % 400==0))
& && &days=29;
& & else days=28;
&&printf(&%d\n&,days);
4.8 花多少钱买衣服
周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。编写程序,输入计划购买的上衣数量 a 和裤子的数量 b ,计算并输出应该付的款 m 。
#include&stdio.h&
void main()
int a,b,y;
scanf(&%d%d&,&a,&b);
if(b&=a&&b&50)
& && && & y=90*b+(a-b)*60;
if(b&=a&&b&=50)
& && && & y=80*b+(a-b)*60;
if(a&b&&a&50)
& && && & y=90*a+(b-a)*45;
if(a&b&&a&=50)
& && && & y=80*a+(b-a)*45;
printf(&%d\n&,y);
4.9 到邮局去寄包裹
你去邮局给朋友寄礼物。发现邮局对邮寄包裹的费用是这样规定的:如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费 0.2 元,不同重量的邮资按下表计算:重量(千克)
收费标准(元)
大于等于10但不超过20
大于等于20但不超过30
编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出 &Error” .
#include&stdio.h&
void main()
float a,b,c,m,y;
scanf(&%f,%f,%f,%f&,&a,&b,&c,&m);
if(a&1||b&1||c&1||m&30)
& && && & printf(&Error\n&);
& && && & if(m&10)
& && && & y=0.80*m+0.2;
else if(m&20)
& && && & y=0.75*m+0.2;
& && && & y=0.70*m+0.2;
& && && & printf(&%.2f\n&,y);
4.10 输出星期几的英文表示
输入用数字(1--7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词&Error(回车)&。
#include&stdio.h&
void main()
scanf(&%d&,&a);
switch((int)(a))
case 1:printf(&Monday\n&);
case 2:printf(&Tuesday\n&);
case 3:printf(&Wednesday\n&);
case 4:printf(&Thursday\n&);
case 5:printf(&Friday\n&);
case 6:printf(&Saturday\n&);
case 7:printf(&Sunday\n&);
default:printf(&Error\n&);
& && && &}
5.1 输出一行星号
编写程序在一行中输出 N 个星号。
输入: N值
输出:一行中N个星号
#include &stdio.h&
int main()
& & int n,i;
& & scanf(&%d&,&n);
& & for(i=0;i&n;i++) putchar('*');
& & putchar('\n');
& & return 0;
5.2 打印平行四边形
输入图形的高 n 和首字符 c ,输出如下例( n=5&&,c='A' )所示的图形 .
& && &DEFGH
& && &&&EFGHI
输入:整数n例如 5 和某个字符例如 A
输出:高为5和首字符A 的平行四边形
#include&stdio.h&& &
void main()& &
{ int n,m,i,d;& &
&&char p,t;& &
&&scanf(&%d,%c&,&n,&p);& &
& &for(m=0;m&n;m++)& &
& & for(i=0;i&m;i++)& &
& && &&&printf(& &);& &
& & for(d=0;d&n;d++)& &
& && &&&t=p+d+m;& &
& && &&&printf(&%c&,t);& &
& && && &for(i=0;i&n-m-1;i++)& &
& && &&&printf(& &);& &
& & printf(&\n&);& &
5.3 空心的倒三角型
背景:请根据要求打印可空心倒三角形。
输入:输入三角形的高度(h &0)。
输出:打印相应的空心倒三角形。图样参见测试用例。
#include &stdio.h&
#include &stdlib.h&
int main()& &
{int h,i,j,k,m,n;
scanf(&%d&,&h);
if((h&1)&&(h%2!=0))
& && && & for(i=1; i&=(2*h-1); i++)
& && && & {
& && && && && && &&&printf(&*&);
& && && & }
& && && & printf(&\n&);
& && && & for(j=1; j&=(h-2); j++)
& && && & {
& && && && && && &&&for(k=1; k&=j; k++)
& && && && && && &&&{
& && && && && && && && && &&&printf(& &);
& && && && && && &&&}
& && && && && && &&&printf(&*&);
& && && && && && &&&for(m=1; m&=(2*h-3-2*j); m++)
& && && && && && &&&{
& && && && && && && && && &&&printf(& &);
& && && && && && &&&}
& && && && && && &&&printf(&*&);
& && && && && && &&&printf(&\n&);
& && && & }
& && && & for(n=1;n&=(h-1);n++)
& && && & {
& && && && && && &&&printf(& &);
& && && & }
& && && & printf(&*\n&);
& && && & printf(&Invalid input\n&);
return 0;& &
选做 5.4 打印实心正方形
5.1题中你已经打印了一行*号,这次在屏幕上输出一个由星号组成的 n 行 n 列的正方形。
程序输入 n 值,输出如下例( n=4 )所示的高和上底均为 n 的正方形:
#include &stdio.h&
#include &stdlib.h&
int main()
& & int a=1,n,b;
& & scanf(&%d&,&n);
& & while(a&=n)
& && &&&b=1;
& && &&&do
& && && && &printf(&*&);
& && && && &b++;
& && &&&while(b&=n);
& && &&&printf(&\n&);
& && &&&a++;
& & return 0;
选做 5.5 空心字符菱形
输入:菱型起始字母和菱形的高度。
输出:参看测试用例,打印空心的由字符组成的菱形。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,a=1,b,c;
& & scanf(&%c %d&,&ch,&n);
& & while(a&=n)
& && &&&b=1;
& && &&&while(b&=n-a)
& && && && &printf(& &);
& && && && &b++;
& && &&&printf(&%c&,ch);
& && &&&c=1;
& && &&&if(a&=2)
& && && && &while(c&=2*a-3)
& && && && &{
& && && && && & printf(& &);
& && && && && & c++;
& && && && &}
& && && && &printf(&%c&,ch);
& && &&&ch=ch+1;
& && &&&printf(&\n&);
& && &&&a++;
& & a=1; ch=ch-2;
& & while(a&=n-1)
& && &&&b=1;
& && &&&while(b&=a)
& && && && &printf(& &);
& && && && &b++;
& && &&&printf(&%c&,ch);
& && &&&c=1;
& && &&&if(a&=n-2)
& && && && &while(c&=2*n-2*a-3)
& && && && &{
& && && && && & printf(& &);
& && && && && & c++;
& && && && &}
& && && && &printf(&%c&,ch);
& && &&&ch=ch-1;
& && &&&printf(&\n&);
& && &&&a++;
& & return 0;
选做 5.6 输出一个字母K吧!
输入一个整数n,输出图形K。如n=4时,输出如下图形。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i=1,j;
& & scanf(&%d&,&n);
& & while(i&=n-1)
& && &&&j=1;
& && &&&printf(&*&);
& && &&&while(j&=n-i)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&*\n&);
& && &&&i++;
& & printf(&*\n&);
& & while(i&=n-1)
& && &&&j=1;
& && &&&printf(&*&);
& && &&&while(j&=i)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&*\n&);
& && &&&i++;
& & return 0;
选做 5.7 输出X图形
输入 n 值,输出下例( n=3 )所示的图形:
输入:整数n(例如3)
输出:如上图所示X 形图形
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i=1,j,k;
& & scanf(&%d&,&n);
& & while(i&=n-1)
& && &&&j=1;
& && &&&while(j&=i-1)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&*&);
& && &&&k=1;
& && &&&while(k&=2*n-2*i-1)
& && && && &printf(& &);
& && && && &k++;
& && &&&printf(&*&);
& && &&&j=1;
& && &&&while(j&=i-1)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&\n&);
& && &&&i++;
& & while(i&=n-1)
& && &&&printf(& &);
& && &&&i++;
& & printf(&*&);
& & while(i&=n-1)
& && &&&printf(& &);
& && &&&i++;
& & printf(&\n&);
& & while(i&=n-1)
& && &&&j=1;
& && &&&while(j&=n-i-1)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&*&);
& && &&&k=1;
& && &&&while(k&=2*i-1)
& && && && &printf(& &);
& && && && &k++;
& && &&&printf(&*&);
& && &&&j=1;
& && &&&while(j&=n-i-1)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&\n&);
& && &&&i++;
& & return 0;
选做 5.8 输出图形
编程,输入 n 值,输出下例( n=5 )所示的高为 n 的图形 :
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i=1,j,k,l;
& & scanf(&%d&,&n);
& & while(i&=n-1)
& && &&&j=1;
& && &&&while(j&=i)
& && && && &printf(&*&);
& && && && &j++;
& && &&&k=1;
& && &&&while(k&=2*n-2*i-1)
& && && && &printf(& &);
& && && && &k++;
& && &&&l=1;
& && &&&while(l&=i)
& && && && &printf(&*&);
& && && && &l++;
& && &&&printf(&\n&);
& && &&&i++;
& & while(i&=2*n-1)
& && &&&printf(&*&);
& && &&&i++;
& & printf(&\n&);
& & return 0;
选做 5.9 画个空心的梯形吧
编程,输入 n ,输出如下例( n=5 )所示的高和上底均为 n 的等腰空心梯形。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i=1,j,k;
& & scanf(&%d&,&n);
& & while(i&=n)
& && &&&j=1;
& && &&&while(j&=n-i)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&*&);
& && &&&if(i==1)
& && && && &for(k=1; k&=n-2; k++)
& && && && && & printf(&*&);
& && &&&else if(i==n)
& && && && &for(k=1; k&=3*n-4; k++)
& && && && && & printf(&*&);
& && &&&else
& && && && &for(k=1; k&=n+2*i-4; k++)
& && && && && & printf(& &);
& && &&&printf(&*&);
& && &&&j=1;
& && &&&while(j&=n-i)
& && && && &printf(& &);
& && && && &j++;
& && &&&printf(&\n&);
& && &&&i++;
& & return 0;
选做 5.10 输出菱形图案
输入 n ,输出如下例( n=3 )所示的菱形:
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i,j,k;
& & scanf(&%d&,&n);
& & for(i=1; i&=n; i++)
& && &&&for(j=1; j&=n-i; j++)
& && && && &printf(& &);
& && &&&for(k=1; k&=2*i-1; k++)
& && && && &printf(&*&);
& && &&&printf(&\n&);
& & for(i=1; i&=n-1; i++)
& && &&&for(j=1; j&=i; j++)
& && && && &printf(& &);
& && &&&for(k=1; k&=2*n-2*i-1; k++)
& && && && &printf(&*&);
& && &&&printf(&\n&);
& & return 0;
5.11 最大公约数
输入两个正整数m和n,求它们的最大公约数和最小公倍数
比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。
#include&stdio.h&
void main()
& & int m,n,i,j;
& & scanf(&%d%d&,&m,&n);
& & for(i=m;i&=1;i--)
& && &&&if (n%i==0&&m%i==0)
& && &&&{printf(&the greatest common divisor is %d\n&,i);
& & for (j=m;;j++)
& && &&&if (j%m==0&&j%n==0)
& && &&&{printf(&the least common multiple is %d\n&,j);
5.12 水仙花数
输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=13+53+33
输出语句:printf(&%d\n&,n);
#include &stdio.h&
void main()
& && && &int n, i, j,
& && && &for(n=100; n&=999; n=n+1)
& && && &{
& && && && &i = n/100;& && && && & // 取出n的百位数
& && && && &j = (n/10)%10;& & // 取数n的十位数
& && && && &k = n%10;& && && &&&// 取出n的个位数
& && && && &if(n==i*i*i+j*j*j+k*k*k)
& && && && && &&&printf(&%d\n&,n);
& && && &}
一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数,从键盘上输入一个正整数,判断其是否为完数。如果是,则按照如下格式输出。比如,输入6,则输出Yes,its factors are 1 2 3;如果输入8,则输出No
#include&stdio.h&
#include&math.h&
int main()
& & int n,i,c,sum=0;
& && && &scanf(&%d&,&n);
& && &&&for(i=1;i&n;i++)
& && && && && && & {
& && && && &if(n%i==0)
& && && && && && && && && && && && & sum=sum+i;
& && &&&if(n==sum)
& && && && && && & {
& && && && &printf(&Yes,its factors are &);
& && && && &&&for(c=1; c&n; c++)
& && && && && && && && && && &{
& && && && && && && && && && && && && &if(n%c==0)
& && && && && && &printf(& %d&,c);
& && && && && && && && && && &}
& && && && &&&printf(&\n&);
& && && && && && & else
& && && && && && && && && & printf(&No\n&);
输入两个正整数m和n,求出[m,n]区间的所有素数
#include &stdio.h&
#include &math.h&
void main()
{int m,n,i,j,k;
scanf(&%d%d&,&m,&n);
for(i=m;i&n;i++)
{k=sqrt(i);
for(j=2;j&=k;j++)
& && && & if(i%j==0)
& && && && && && &&&
& && && & if(j&k)
& && && && && && &&&printf(& %d&,i);
printf(&\n&);
5.15 找出最大素数
素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。
输入:取值范围
输出:该范围内的最大素数
#include&stdio.h&& &
int main()& &
& & int a,i,j;& &
& & scanf(&%d&,&a);& &
& & for(i=a;i&1;i--)& &
& && &&&for(j=2;j&i;j++)& &
& && &&&{& &
& && && && &if(i%j==0)& &
& && && && && && &
& && &&&}& &
& && &&&if(j==i)
& && && && && && & {
& && && && && && && && && & printf(&%d\n&,i);
& && && && && && && && && &
& && && && && && & }
& && && &}
5.16 回文数
输入一个数,判断是否为回文数,如果是,输出Yes,否则输出No
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
char *chan(int count) ;
int main(int argc, char* argv[])
str=chan(0);
n=strlen(str);
for (i = 0; i&(n-1)/2; i++) {
&&if (str!=str[n-1-i]) {
&&printf(&Yes\n&);
else printf(&No\n&);
free(str);
system(&pause&);
char *chan(int count)
static char *
if ((a=getchar())!='\n')
&&count++;
&&chan(count);
& & p=malloc(sizeof(char)*(count+1));
& & *(p+count)=0;
*(p+count-1)=a;
选做 5.17 自守数
自守数是指一个数的平方的尾数等于该数自身的自然数。例如252=625,762=5776。输入一个自然数,判断其是否为自守数。如果是,则输出Yes,否则输出No
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i,j,a=0,b=1,c;
& & scanf(&%d&,&n);
& & i=n*n;
& & j=i-n;
& & while(n&0)
& && &&&n=n/10;
& && &&&a++;
& & for(c=1; c&=a; c++)
& && &&&b=b*10;
& & if(j%b==0)
& && &&&printf(&Yes\n&);
& && &&&printf(&No\n&);
& & return 0;
选做 5.18 求亲密数
若正整数A的全部约数(包括1,不包括A本身)之和等于B ; 且整数B的全部约数(包括1,不包括B本身)之和等于A,则 A 、 B 为亲密数。编程,输入正整数A,输出亲密数 A , B(A&=B) ,若不存在亲密数,则输出 No output 。
例如:220和284就是一对亲密数。220的约数是:1、2、4、5、10、11、20、22、44、55、110,约数之和是284;284的约数是:1、2、4、71、142,约数之和是220。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,a,b=0,c=0;
& & scanf(&%d&,&n);
& & for(a=1; a&n; a++)
& && &&&if(n%a==0)
& && && && &b=a+b;
& & for(a=1; a&b; a++)
& && &&&if(b%a==0)
& && && && &c=c+a;
& & if(n==c)
& && &&&printf(&%d-%d\n&,c,b);
& && &&&printf(&No output\n&);
& & return 0;
选做 5.19 高次方的尾数
输入2个正整数m和n,求mn后三位数。比如输入m和n的值分别为13和13,则1313的后三位数字为253。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int m,n,a,b=1,c;
& & scanf(&%d %d&,&m,&n);
& & for(a=1; a&=n; a++)
& && &b=b*m;
& && &b=b%1000;
& & printf(&The last 3 digits of %d ** %d is: %d\n&,m,n,b);
& & return 0;
选做 5.20 阶乘尾数零的个数
输入一个正整数n,求其阶乘尾数0的个数。比如,输入n的值为100,则其阶乘尾数0的个数为24。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,a,b,c;
& & scanf(&%d&,&n);
& & a=n/25;
& & b=n/5;
& & c=a+b;
& & printf(&The number of 0 in the end of %d! is:%d.\n&,n,c);
& & return 0;
5.21 看看是谁做的好事
某四位同学中有一个做了好事 , 不留名 , 表扬信来了,校长问是谁做的好事 . 以下四个人中有三个人说的是真话.
A 说 : 不是我
B 说 : 是 C
C 说 : 是 D
D 说 : 他说的不对 !
编写程序:输出是谁做的好事,只输出对应的大写字母,输出格式printf(&%c\n&,ch); 。
#include &stdio.h&
#include &stdlib.h&
int main()
& & for(ch='A'; ch&='D'; ch++)
& && &&&if(ch=='A'&&ch=='C'&&ch=='D'&&ch!='D')
& && && && &printf(&%c\n&,ch);
& && &&&if(ch!='A'&&ch!='C'&&ch=='D'&&ch!='D')
& && && && &printf(&%c\n&,ch);
& && &&&if(ch!='A'&&ch=='C'&&ch!='D'&&ch!='D')
& && && && &printf(&%c\n&,ch);
& && &&&if(ch!='A'&&ch=='C'&&ch=='D'&&ch=='D')
& && && && &printf(&%c\n&,ch);
5.22 贪吃的猴子
有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。
输入:天数n
输出:第一天的桃子个数,输出语句为printf(&The monkey got %d peachs in first day.\n&,sum);& &
The monkey got 114 peachs in first day.
#include &stdio.h&
#include &stdlib.h&
int main()
& & int n,i;
& & long int m=1;
& & scanf(&%d&,&n);
& & for(i=1; i&=n-1; i++)
& && &&&m=(n-i+m)*2;
& & printf(&The monkey got %d peachs in first day.\n&,m);
& & return 0;
5.23 百马百担
有100匹马,驮100担货,其中大马驮3担,中马驮2担,两匹小马驮1担
输出:大、中、小马的个数,用逗号分隔。例如:2,30,68
说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行因为有多个结果,结果的排序按照大马的个数从少到多
#include &stdio.h&
void main()
{int x,y,z;
for(x=1;x&33;x++)
& && && & for(y=1;y&50;y++)
& && && & {z=(100-3*x-2*y)*2;
& && && &&&if(x+y+z==100)
& && && &&&printf(&%d,%d,%d\n&,x,y,z);
& && && & }
5.24 四大湖问题
我国有4大淡水湖。
A说:洞庭湖最大,洪泽最小。鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序。
#include &stdio.h&
#include &stdlib.h&
int main()
& & int a,b,c,d;
& & for(a=1; a&=4; a++)
& && &&&for(b=1; b&=4; b++)
& && && && &if(b==a)
& && && && &for(c=1; c&=4; c++)
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
我看不太懂,飘过~~~
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
表示完全不懂 业余去上过一节C语言课 然后。。。就没有然后嘞
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
呃,太水了~~~还不如发木叶学堂去~~~
[]:小春 买彩票中奖了,奖励 11 /Rs. 金钱.
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
小春 发表于
呃,太水了~~~还不如发木叶学堂去~~~
同楼上~~~~~
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
来自移动客户端
敢不敢再水一点
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
计数器习惯于从0开始,而不是从1开始。if语句里面判断时,要养成把常数写在前面、变量写在后面的习惯,这样不易出错…
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
完完全全看不懂& & 怪不得我过不了二级…
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
楼主好水。
[]:R9abcde 乐于助人,奖励 8 /Rs. 金钱.
贡献 /Point.
威望 /Value.
查克拉 /Hpm.
在线时间 小时
大管来鉴定一下真伪
Powered by

我要回帖

更多关于 贪吃蛇c语言实现思路 的文章

 

随机推荐