精心整理c语言程序编程经典题型Word格式.docx

上传人:b****5 文档编号:18618152 上传时间:2022-12-29 格式:DOCX 页数:10 大小:17.98KB
下载 相关 举报
精心整理c语言程序编程经典题型Word格式.docx_第1页
第1页 / 共10页
精心整理c语言程序编程经典题型Word格式.docx_第2页
第2页 / 共10页
精心整理c语言程序编程经典题型Word格式.docx_第3页
第3页 / 共10页
精心整理c语言程序编程经典题型Word格式.docx_第4页
第4页 / 共10页
精心整理c语言程序编程经典题型Word格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

精心整理c语言程序编程经典题型Word格式.docx

《精心整理c语言程序编程经典题型Word格式.docx》由会员分享,可在线阅读,更多相关《精心整理c语言程序编程经典题型Word格式.docx(10页珍藏版)》请在冰豆网上搜索。

精心整理c语言程序编程经典题型Word格式.docx

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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1