精心整理c语言程序编程经典题型Word格式文档下载.docx
- 文档编号:22321812
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:12
- 大小:17.92KB
精心整理c语言程序编程经典题型Word格式文档下载.docx
《精心整理c语言程序编程经典题型Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《精心整理c语言程序编程经典题型Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
main()
f(6);
第二题,以下函数的功能是将给定字符串进行倒序输出,
请完成该函数空缺部分。
char*p=“abcdef”;
char*q=(char*)malloc(strlen(p)+1);
for(inti=0,intlen=strlen(p);
len-1;
q=p[i+1];
q[len-1]=p[0];
—–
(2)—-;
printf(“%s\n”,q);
string.h"
stdlib.h"
char*p="
abcdef"
;
char*q=(char*)malloc(strlen(p)+1);
for(inti=0,intlen=strlen(p);
*q=p[i+1];
q[len-1]=p[0];
printf("
%s\n"
q);
第三题,(这题的题目到底是要干啥,本人到现在沿未明了,数学学统计好,但可以确定原题给出的代码就是如此)
intf(intm,intn)
inta=1;
intm1=m;
//—–(3)—-
a*=m1–;
intb=1;
while(n>
1)
b*=n–;
returna/b;
第四题,任意给出一个四位数,
把它重新组成一个四位的最大数和一个最小数,
算出两者间的差。
例如:
3721这个数,可以重组成:
7321和1237,相数之差为7321-1237
请完善下面这个函数,以实现此功能
intf(intn)
intN[4];
for(inti=0;
4;
N[3-i]=n%10;
n=n/10;
for(i=0;
3;
for(intj=0;
j<
3-i;
j++)
if(N[j]>
N[j+1])
intt=N[j+1];
N[j+1]=N[j];
N[j]=t;
intn_min=0;
n_min=n_min*10+N[i];
intn_max=0;
for(i=3;
i>
=0;
i--)
n_max=n_max*10+N[i];
returnn_max-n_min;
f(1100));
voidpaixu(inta[],intn,intp)
inti,j,k,t;
n;
k=i;
for(j=i+1;
if(p==0)//jiangxu
{
if(a[j]>
a[k])
k=j;
}
else
if(a[j]<
if(k!
=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
intx,i;
inta[4];
intsum1,sum2;
输入一个4位整数:
\n"
);
scanf("
%d"
&
x);
a[0]=x/1000;
a[1]=x%1000/100;
a[2]=x%100/10;
a[3]=x%10;
paixu(a,4,0);
sum1=1000*a[0]+100*a[1]+10*a[2]+a[3];
paixu(a,4,1);
sum2=1000*a[0]+100*a[1]+10*a[2]+a[3];
sum1-sum2);
第五题,假设有m+n个人,其中,
m个人手持面额为5角的硬币,
n个人手持面额为1元的硬币,0.5*m+nm
他们都要乘车买票,
现假设售票员手中无零钞,
票价为5角,
下面这个函数就可以算出这m+n个人所有可能的买票情况,
请完善此函数。
//m:
持有5角币的人数
//n:
持有1元币的人数
//返回:
所有顺利完成购票过程的购票次序的种类数
if(m<
n)return0;
if(n==0)return1;
return_________f(m,n-1)+f(m-1,n)______________;
最后一题:
编程题:
注:
最后一题的编程题对参赛者的要求相当高,以下代码在你提交自己的程序设计思路前是不可见的。
求二十四点:
//Calcu24.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include“stdafx.h”
#include“conio.h”
#include“stdlib.h”
#include“time.h”
#include“math.h”
#include“string.h”
/*
从一副扑克牌中,任取4张。
2-10按其点数计算(为了表示方便10用T表示),J,Q,K,A统一按1计算
要求通过加减乘除四则运算得到数字24。
本程序可以随机抽取纸牌,并用试探法求解。
*/
voidGivePuzzle(char*buf)
charcard[]={‘A’,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’T'
’J'
’Q'
’K'
};
i++){
buf=card[rand()%13];
voidshuffle(char*buf)
5;
intk=rand()%4;
chart=buf[k];
buf[k]=buf[0];
buf[0]=t;
intGetCardValue(intc)
if(c==’T'
)
return10;
if(c>
=’0′&
&
c<
=’9′)returnc–’0′;
return1;
charGetOper(intn)
switch(n)
case0:
return‘+’;
case1:
return‘-’;
case2:
return‘*’;
case3:
return‘/’;
return‘‘;
doubleMyCalcu(doubleop1,doubleop2,intoper)
switch(oper)
returnop1+op2;
returnop1–op2;
returnop1*op2;
if(fabs(op2)>
0.0001)
returnop1/op2;
else
return100000;
return0;
voidMakeAnswer(char*answer,inttype,char*question,int*oper)
charp[4][3];
if(question==‘T’)
strcpy(p,“10″);
sprintf(p,“%c”,question);
switch(type)
sprintf(answer,“%s%c(%s%c(%s%c%s))”,
p[0],GetOper(oper[0]),p[1],GetOper(oper[1]),p[2],GetOper(oper[2]),p[3]);
break;
sprintf(answer,“%s%c((%s%c%s)%c%s)”,
sprintf(answer,“(%s%c%s)%c(%s%c%s)”,
sprintf(answer,“((%s%c%s)%c%s)%c%s”,
case4:
sprintf(answer,“(%s%c(%s%c%s))%c%s”,
boolTestResolve(char*question,int*oper,char*answer)
//等待考生完成
returntrue;
//returnfalse;
采用随机试探法:
就是通过随机数字产生加减乘除的组合,通过大量的测试来命中的解法
提示:
1.需要考虑用括号控制计算次序的问题比如:
(10–4)*(3+A),实际上计算次序的数目是有限的:
A*(B*(c*D))
A*((B*C)*D)
(A*B)*(C*D)
((A*B)*C)*D
(A*(B*C))*D
2.需要考虑计算结果为分数的情况:
(3+(3/7))*7
3.题目中牌的位置可以任意交换
boolTryResolve(char*question,char*answer)
intoper[3];
//存储运算符,0:
加法1:
减法2:
乘法3:
除法
1000*1000;
//打乱纸牌顺序
shuffle(question);
//随机产生运算符
j<
j++)
oper[j]=rand()%4;
if(TestResolve(question,oper,answer))
returntrue;
returnfalse;
intmain(intargc,char*argv[])
//初始化随机种子
srand((unsigned)time(NULL));
charbuf1[4];
//题目
charbuf2[30];
//解答
printf(“***************************\n”);
printf(“计算24\n”);
printf(“AJQK均按1计算,其它按牌点计算\n”);
printf(“目标是:
通过四则运算组合出结果:
24\n”);
printf(“***************************\n\n”);
for(;
)
GivePuzzle(buf1);
//出题
printf(“题目:
”);
j++){
if(buf1[j]==‘T’)//、、、、初始化buf1[];
printf(“10“);
printf(“%c“,buf1[j]);
printf(“\n按任意键参考答案…\n”);
getch();
if(TryResolve(buf1,buf2))
//解题
//
//printf(“a\n”);
//for(inti=0;
17;
printf(“%c”,buf2);
printf(“参考:
%s\n”,buf2);
printf(“可能是无解…\n”);
printf(“按任意键出下一题目,x键退出…\n”);
if(getch()==‘x’)break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精心整理 c语言程序编程经典题型 精心 整理 语言 程序 编程 经典 题型