c语言程序设计题库Word文档格式.docx

上传人:b****5 文档编号:18197746 上传时间:2022-12-14 格式:DOCX 页数:68 大小:34.67KB
下载 相关 举报
c语言程序设计题库Word文档格式.docx_第1页
第1页 / 共68页
c语言程序设计题库Word文档格式.docx_第2页
第2页 / 共68页
c语言程序设计题库Word文档格式.docx_第3页
第3页 / 共68页
c语言程序设计题库Word文档格式.docx_第4页
第4页 / 共68页
c语言程序设计题库Word文档格式.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

c语言程序设计题库Word文档格式.docx

《c语言程序设计题库Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言程序设计题库Word文档格式.docx(68页珍藏版)》请在冰豆网上搜索。

c语言程序设计题库Word文档格式.docx

returnresult;

5题目标题:

汽水瓶(谌海军)

题目描述:

有这样一道智力题:

“某商店规定:

三个空汽水瓶可以换一瓶汽水。

小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?

”答案是5瓶,

方法如下:

先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。

然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。

如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

输入描述:

输入为一个正整数n(1<

=n<

=100),表示空汽水瓶个数。

#include<

{intn,m=0,sum=0,i=0;

scanf("

while(n>

=3)

{m=n/3;

n=n-2*m;

sum=sum+m;

if(n=2)

sum++;

elseif(n<

2)

sum=sum+i;

sum);

6题目标题:

栽树(彭玉旭)

在某食堂门前有n(n<

200)个树坑,编号是从0~n-1,开始时是没有树的。

每个月,园林工人都会在编号a~b(0<

=a<

=b<

=n-1)之间栽树(包括a,b),如果树坑原来有树,则不需要从新栽树。

请计算4个月后,食堂门前总共有多少棵树。

第一个整数是n,接下来有8个整数,分别为每个月栽树的编号。

输出描述描述:

食堂门前树的总数。

第六题

inta1,b1,a2,b2,a3,b3,a4,b4;

intresult=0;

%d%d"

a1,&

b1);

a2,&

b2);

a3,&

b3);

a4,&

b4);

if(i>

=a1&

=b1)

result++;

elseif(i>

=a2&

=b2)

=a3&

=b3)

=a4&

=b4)

result);

7题目标题:

密码破译(闫博钊)

某组织欲破获一个外星人的密码,密码由一定长度的字串组成。

此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度,则此密码被成功破译。

现在就请你编程找出能破译此密码的两个钥匙。

输入第一行为钥匙的个数N(1≤N≤5000)

输入第二行为密码的长度

以下N行为每个钥匙的长度

若无法找到破译此密码的钥匙,则输出仅1行0。

若找到两把破译的钥匙,则输出有两行,分别为两把钥匙的编号。

若有多种破译方案,则只输出一种即可。

intn,s[5000],l,i,j,sign=1,m=0;

l);

scanf("

s[i]);

if(sign==0)break;

for(j=i+1;

j<

j++)

if(s[i]+s[j]==l)

{printf("

%d\n%d"

i+1,j+1);

sign=0;

break;

}}

if(sign)printf("

m);

{intm,n,sum,i,j,a[5000];

m);

for(i=1;

for(j=i+1;

{sum=a[i]+a[j];

p=sum-m;

if(p==0)

i,j);

intN,length;

inti,j,key[5000];

intnum1,num2,t;

N);

length);

N;

key[i]);

t=1;

N&

t==1;

if(key[i]+key[j]==length)

{

num1=i+1;

num2=j+1;

t=0;

break;

}

if(t==1)

printf("

0"

);

else

num1,num2);

 

9题目标题:

基因编码(闫博钊)

小可可选修了基础生物基因学。

教授告诉大家SuperSamuel星球上Kitty猫的基因的长度都是2的正整数次幂2k(k≤8),全是由两种不同的基因单元组成的。

这两种不同的基因单元分别记成0和1,于是Kitty猫的基因可以写成一个01串表达式S。

为了便于分析和降低数据存储量,教授发明了ABC编码规则。

该编码规则是不断地按照

A(若S串全是0)

T(S)=  B(若S串全是1)

        CT(S1)T(S2) (否则把S串分成两个等长的子串S1和S2)

对Kitty猫基因01串表达式S进行改写,直至最终被改写成只含有字符“A”、“B”、“C”的符号串。

例如T(01001011)

=CT(0100)T(1011)

=CCT(01)T(00)CT(10)T(11)

=CCCT(0)T

(1)ACCT

(1)T(0)B

=CCCABACCBAB

请你编写程序帮助小可可求出Kitty猫基因的ABC编码以协助教授开展科研工作。

测试数据以一行的形式存放Kitty猫基因的01串表达式,字符串长度不超过500

对应测试数据,以一行的形式输出这个Kitty猫基因的ABC编码。

string.h>

voidf(chara[],intbegin,intend);

intmain()

chara[500];

intlength;

gets(a);

length=strlen(a);

f(a,0,length);

return0;

voidf(chara[],intbegin,intend)

intnum_A=0,num_B=0;

for(i=begin;

end;

if(a[i]=='

0'

num_A++;

elseif(a[i]=='

1'

num_B++;

if(num_A==end-begin)

A"

elseif(num_B==end-begin)

B"

C"

f(a,begin,(end+begin)/2);

f(a,(end+begin)/2,end);

10题目标题:

最大公约数(闫博钊)

输入两个整数a,b(1≤a,b≤100000),请编写程序求出他们的最大公约数。

输入两个整数ab,用空格隔开

输出对应a,b的最大公约数

{longa,b,c,t;

%ld%ld"

a,&

b);

if(a<

b)

t=a;

a=b;

b=t;

while(b!

=0)

c=a%b;

b=c;

printf("

%ld"

a);

11题目标题:

大数相加(彭玉旭)

a+b这个程序大家都会做,但是如果a和b都比较大时该怎么办呢。

其实我们可以把输入一个比较大的数用字符串表示,模拟人工加法方式。

如123+23,一个字符串是123另外一个字符串是23,从字符串的最后开始加,得到146.结果最大是两个字符串最长的那个值加1。

现在请你计算两个不超过30位的十进制的数的和。

知识点:

字符串输入,字符的0~9的加法运算。

提示:

字符0的ASCII是48,注意进位处理

包行四行,每一行包含不超过30个的由0~9的字符组成字符串。

第一行加第二行的和以及第三行加第四行的和。

每一个和占一行

char*add_high_jd(char*a,char*b)

char*s;

intlenmax,lenmin,i,key=0,m;

if(strlen(b)>

strlen(a)){s=a;

a=b;

b=s;

lenmax=strlen(a);

lenmin=strlen(b);

=lenmin;

{

m=a[lenmax-i]+b[lenmin-i]-96+key;

if(m>

=10)

a[lenmax-i]=m%10+48;

key=1;

else

a[lenmax-i]=m+48;

key=0;

}

=lenmax-lenmin;

m=a[lenmax-lenmin-i]-48+key;

a[lenmax-lenmin-i]=m%10+48;

else{

a[lenmax-lenmin-i]=m+48;

if(key)

for(i=lenmax;

i>

=1;

i--)

a[i]=a[i-1];

a[0]='

;

a[lenmax+1]='

\0'

returna;

12题目标题:

字符串比对(谌海军)

有字符串a(长度<

=100),b(长度<

=10),计算b串在a串中出现的次数。

解题思路:

1、用gets语句从键盘输入两个字符串赋予a,b字符数组;

2、建立两层嵌套循环,外循环至a串结束标志为止,内循环至b串结束标志为止;

3、内循环中比对b串与a串的数据,满足条件时计数,否则break;

4、所有循环结束后输出计数值。

输入为两个字符串,第一个字符串长度小于100,第二个字符串长度小于10;

输出为一个正整数;

chara[100],b[10];

inti,j,count,result;

gets(b);

result=0;

strlen(a);

for(j=0,count=0;

strlen(b);

if(b[j]==a[i+j])

count++;

break;

if(count==strlen(b))

chara[40]={'

},b[40]={'

},c[40]={'

},d[40]={'

},e[40]={'

},f[40]={'

};

while(gets(a)!

=NULL&

gets(b)!

gets(c)!

gets(d)!

=NULL)//×

í

á

?

strcpy(e,add_high_jd(a,b));

strcpy(f,add_high_jd(c,d));

puts(e);

//...

puts(f);

13题目标题:

围圈报数(谌海军)

有n(n<

=100)围成一圈,顺序排号(从1排到n)。

从第一个人开始报数(从1报到m(m<

=9)),凡报到m的人退出圈子,

问最后留下的是原来第几号的那位?

1、定义一个长度为100数组a,初始化为0;

2、接收键盘输入值n,m,数组a的前n-1个元素赋值为1~n;

3、建立两层嵌套循环,外循环至退出人数为n-1为止,

内循环中从0循环至n,将a数组中非0的数据逢m置零,同时记录退出人数;

4、循环全部结束后输出最后留下的一个a数组的非零元素的值。

输入为两个正整数,第一个<

=100,第二个<

=9;

#include<

#defineN100

inta[N]={0};

intn,m;

intk=0,t=0,s;

n,&

s=n;

++i)

a[i]=i+1;

while(n>

1)

if(a[k%s]!

t++;

if(t==m)

n--;

a[k%s]=0;

t=0;

k++;

s;

if(a[i]!

a[i]);

14题目标题:

星期几?

(谌海军)

编一个程序,已知今天是星期几,计算出n天后是星期几。

要求使用枚举变量。

枚举变量的赋值只能用枚举常量来表示,但是枚举常量均有一个整形数代表,

可将改整形数存入枚举变量地址以实现外部赋值的目的。

如:

enumday{Sun,Mon,Tue,Wed,Thu,Fri,Sat}d1;

d1);

当键盘输入1时,相当于将d1赋值为Mon,即d1=Mon

枚举变量的输出,只能输出其代表的整形数,如需输出其对应的枚举常量,可借助字符串数组的方式处理;

char*p[]={“Sun”,“Mon”,“Tue”,"

Wed"

"

Thu"

Fri"

Sat"

%s"

*(p+2));

其输出结果为:

Tue

输入为两个正整数,第一个数n(n<

=6)表示今天是星期几,

第二个数m(m<

=1000),表示求m天后是星期几;

输出为一个长度为3的字符串,表示星期几的名称;

#include<

enumday{Sun,Mon,Tue,Wed,Thu,Fri,Sat}d;

char*p[]={"

Sun"

Mon"

Tue"

intm;

%d%d"

d,&

*(p+(d+m)%7));

15题目标题:

abc+cba=1333(卜胜贤)

已知abc+cba=1333,其中a,b,c均为一位数,编程求出所有满足条件的a,b,c所有组合。

(知识点:

控制语句)

输出数据为多组,每组两个整形数

inta,b,c;

for(a=0;

a<

10;

a++)

for(b=0;

b<

b++)

for(c=0;

c<

c++)

if((a*100+b*10+c)+(c*100+b*10+a)==1333)

%d%d\n"

a*100+b*10+c,c*100+b*10+a);

16题目标题:

整数各位取奇数(卜胜贤)

将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

例如,当s中的数为:

87653142时,t中的数为:

7531。

控制语句、函数、指针)

输入数据为一个不大于100000000的整形数;

输出数据为一个不大于100000000的整形数;

inta;

intb;

intsum=0;

intcount=0;

intbase=1;

a);

while(a!

b=a%10;

a=a/10;

if(1==b%2)

sum=sum+base*b;

base=base*10;

17题目标题:

四位反序数(卜胜贤)

设N是一个四位数,它的n倍恰好是其反序数(例如:

123的反序数是321),

编程,输出一个满足条件的N。

输入为一个整形数n(2<

=9)

输出为一个四位数的整形数

intnumber(intn);

intn,i,t=0;

for(i=1000;

10000;

if(i*n==number(i))

t=i;

t);

intnumber(intn)

inta1,a2,a3,a4;

intresult;

a1=n%10;

a2=n/10%10;

a3=n/100%10;

a4=n/1000;

result=a1*1000+a2*100+a3*10+a4;

18题目标题:

字母翻译(卜胜贤)

编程:

求解下列式中各字母代表的数字并输出

PEAR-ARA=PEA

(知识点:

输出为四个数字,以空格分开,依次为代表PEAR的数字

intp,e,a,r,d,b,c;

for(p=1;

p<

p++)

for(e=0;

e<

e++)

for(a=1;

for(r=0;

r<

r++)

{

d=p*1000+e*100+a*10+r;

b=a*100+r*10+a;

c=p*100+e*10+a;

if(d-b==c)

printf("

%d%d%d%d"

p,e,a,r);

}

19题目标题:

字符串复制(卜胜贤)

有一个字符串,包括n个字符。

写一个函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串。

要求在主函数输入字符串及m值并输出复制结果。

控制语句、字符串、指针)

输入为一个字符串(长度小于80)及一个整形数(小于字符串的实际长度)

输出为一个字符串

intn,m,i;

charstr[80];

char*p;

p=str;

gets(str);

m=strlen(str);

for(i=n-1;

m;

%c"

*(p+i));

inti,j,n;

chara[80];

20题目标题:

二维字符数组转换(卜胜贤)

编写函数fun,函数的功能是:

将M行N列的二维数组中的字符数据,按列的

顺序依次放到一个字符串中。

例如,二维数组中的数据为:

WWWW

SSSS

HHHH

则字符串中的内容应是:

WSHWSHWSH。

数组、指针)

输入为一个3行4列二维字符数组数据

输出为一个长度为12的字符数组;

void

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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