c语言题库答案精选干货文档格式.docx

上传人:b****5 文档编号:17438404 上传时间:2022-12-01 格式:DOCX 页数:19 大小:22.96KB
下载 相关 举报
c语言题库答案精选干货文档格式.docx_第1页
第1页 / 共19页
c语言题库答案精选干货文档格式.docx_第2页
第2页 / 共19页
c语言题库答案精选干货文档格式.docx_第3页
第3页 / 共19页
c语言题库答案精选干货文档格式.docx_第4页
第4页 / 共19页
c语言题库答案精选干货文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c语言题库答案精选干货文档格式.docx

《c语言题库答案精选干货文档格式.docx》由会员分享,可在线阅读,更多相关《c语言题库答案精选干货文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

c语言题库答案精选干货文档格式.docx

i++)

if(str[i]〉='

a’&&str[i]<='z’) 

str[i]=str[i]-32;

else 

if(str[i]>

=’A'&

&

str[i]〈='Z'

) 

str[i]=str[i]+32;

...文档交流仅供参考...

puts(str);

return 

0;

3,找出最重的苹果(彭玉旭)

小明有n个苹果(n〈20),每一个苹果都有一定的重量,请找出最重的苹果,并输出该苹果的重量

第一个整数是n,表示苹果的个数,接下来的n个整数是苹果的重量,每个整数之间用空格隔开

输出描述:

最重的苹果的重量

样式输入:

245 93

93

#include〈stdio。

h〉

int 

main()

n;

max=0,num;

scanf(”%d"

,&

n);

while(n--)

{ 

scanf(”%d",&num);

if(num〉max)

max=num;

printf(”%d”,max);

return 

0;

}

4,函数求解1/n的累加(谌海军)

利用自定义函数编写程序,求下面的式子:

Y=1+1/2+1/3……+1/n(n的数值由键盘输入,n〈=100)...文档交流仅供参考...

输入一个正整数

输出为小数,保留小数点后8位有效数字.

8

2.71785714

#include<

stdio。

h> 

intmain()

 double y=0;

 intn,i;

  scanf("

%d”,&n);

   for(i=1;

i〈=n;

i++)

  y+=1.0/i;

 printf("%。

8lf",y);

  return 0;

5,汽水瓶(谌海军)

题目描述:

有这样一道智力题:

“某商店规定:

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

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

”答案是5瓶,方法如下:

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

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

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

输入为一个正整数n(1〈=n〈=100),表示空汽水瓶个数。

输出为一个正整数,表示可换汽水的瓶数。

10

5

#include<stdio。

h〉 

int 

main()

{ 

n,count=0,k;

scanf("

%d",&n);

while(n〉1)

k=n/3+n%3;

count+=n/3;

n=k;

if(n==2) 

count++;

break;

} 

printf(”%d",count);

return 

0;

/*也可以两个两个换——*/

#include<

stdio.h>

/

intmain()

{

intn;

ﻩscanf("

%d",&n);

printf(”%d”,n/2);

  return0;

6,栽树(彭玉旭)

在某食堂门前有n(n〈200)个树坑,编号是从0~n-1,开始时是没有树的。

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

=b<

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

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

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

食堂门前树的总数。

10

12

23

3 4

45

#include〈stdio。

h>

main() 

tree[200]={0},n,i;

scanf("%d"

n);

star,end,j;

for(i=1;

i<5;

i++) 

scanf("

%d%d",&star,&end);

for(j=star;

j<

=end;

j++)

tree[j]=1;

}

sum=0;

for(i=0;

i<n;

i++)

sum+=tree[i];

printf("%d",sum);

return 

7,密码破译(闫博钊)

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

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

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

输入第一行为钥匙的个数N(1≤N≤5000)输入第二行为密码的长度 以下N行为每个钥匙的长度

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

若找到两把破译的钥匙,则输出有两行,分别为两把钥匙的编号.若有多种破译方案,则只输出一种即可。

10

80

27

9

4

73

23

68

12

64 

92

24

6

#include<

stdio。

h>

int 

main()

n,l;

x[5000];

i;

scanf("%d%d”,&

n,&l);

for(i=0;

i〈n;

i++)

scanf("%d”,&

x[i]);

j;

for(i=0;

i<

n-1;

i++)

for(j=i+1;

j<

n;

j++)

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

printf("%d\n%d",i+1,j+1);

return 0;

printf("0"

);

return 

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编码.

CCCABACCBAB

#include 

<stdio.h〉

#include 

<string.h>

void 

ABC(char 

str[],int 

star,int 

end)

a=0,b=0,i;

for(i=star;

i<end;

if(str[i]=='

0’)

a++;

else 

if(str[i]==’1')

b++;

if(a==end-star)

printf("A”);

else 

if(b==end-star)

printf("B”);

printf("

C");

ABC(str,star,(star+end)/2);

ABC(str,(star+end)/2,end);

main() 

char 

str[500],l;

gets(str);

l=strlen(str);

ABC(str,0,l);

return 

0;

10,最大公约数(闫博钊)

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

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

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

2510

#include〈stdio.h>

intgcd(intm,intn)/*经典的最大公约数*/

if(n==0)returnm;

return gcd(n,m%n);

int main()

ﻩintm,n;

scanf("

%d%d",&

m,&n);

printf(”%d”,gcd(m,n));

return0;

11,大数相加(彭玉旭)

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

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

如123+23,一个字符串是123另外一个字符串是23,从字符串的最后开始加,得到146.结果最大是两个字符串最长的那个值加1.现在请你计算两个不超过30位的十进制的数的和。

 知识点:

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

提示:

字符0的ASCII是48,注意进位处理...文档交流仅供参考...

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

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

每一个和占一行

123

123

3

246

126

stdio。

h>

#include〈string.h>

intmain()

intlena,lenb,i,j,n,t,temp,k,num=2,count;

ﻩintc[32]={0};

inta[32]={0},b[32]={0};

chara1[32],b1[32];

count=1;

while(num--)

ﻩ{

scanf(”%s%s”,a1,b1);

ﻩlena=strlen(a1);

lenb=strlen(b1);

ﻩif(lena<

lenb)k=lenb;

ﻩelsek=lena;

for(i=0;

i〈lena;

i++)a[i]=a1[lena—i-1]-’0’;

ﻩfor(i=0;

i<lenb;

i++)b[i]=b1[lenb-i-1]-’0’;

for(i=0;

i〈k;

i++)

ﻩﻩ{

ﻩc[i]=a[i]+b[i]+c[i];

ﻩc[i+1]=c[i+1]+c[i]/10;

ﻩc[i]=c[i]%10;

ﻩ}

if(c[k]) k++;

ﻩﻩfor(i=k-1;

i>=0;

i-—)printf(”%d”,c[i]);

ﻩﻩif(num〉=1) printf(”\n”);

/*memset(c,0,sizeof(c));

/*memset 库函数,在string.h里用来清零的最快办法*/...文档交流仅供参考...

ﻩﻩmemset(a,0,sizeof(a));

ﻩmemset(b,0,sizeof(b));

*/

return0;

12,字符串比对(谌海军)

有字符串a(长度<

=100),b(长度〈=10),计算b串在a串中出现的次数。

解题思路:

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

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

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

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

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

输出为一个正整数;

abcdefghijklmnababcdeabc

abc

#include<stdio。

h〉

#include〈string.h〉

int main()

 chara[100],b[10];

 inti,l1,l2,j,k,c,d,cnt=0;

ﻩscanf("

%s%s”,a,b);

intl=strlen(b);

ﻩchar*q=strstr(a,b);

ﻩwhile(q!

=NULL)

ﻩ{

ﻩﻩcnt++;

ﻩﻩq=strstr(q+1,b);

//题目的意思不是很懂要是ccccccccccc这样的话有几个?

}

printf("

%d",cnt);

return0;

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;

1003

91

/*数学问题f[1]=0;

  f[i]=(f[i-1]+m)%i;

(i>1)都不用存数组

#include<

stdio.h〉

intmain()

intn,m,i,s=0;

 scanf("

%d%d"

&

n,&m);

 for(i=2;

=n;

i++)

   s=(s+m)%i;

 printf("%d\n"

,s+1);

return0;

}*/

#include<

stdio。

i,m,n,exit=0,count=0;

int 

a[100]={0};

scanf("

%d%d"

&n,&m);

for(i=0;

i〈n;

i++) 

a[i]=i+1;

i=0;

while(n—exit>

1)

if(a[i]!

=0)

count++;

if(count==m){

count=0;

a[i]=0;

exit++;

i++;

if(i==n) 

i=0;

for(i=0;

if(a[i]!

printf("%d",a[i]);

return 

14,星期几?

(谌海军)

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

要求使用枚举变量。

枚举变量的赋值只能用枚举常量来表示,但是枚举常量均有一个整形数代表,可将改整形数存入枚举变量地址以实现外部赋值的目的.如:

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

scanf(”%d”,&

d1);

当键盘输入1时,相当于将d1赋值为Mon,即d1=Mon枚举变量的输出,只能输出其代表的整形数,如需输出其对应的枚举常量,可借助字符串数组的方式处理;

如:

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

,“Tue”,"

Wed”,”Thu"

,”Fri",”Sat"

};

printf("

%s"

,*(p+2));

其输出结果为:

Tue...文档交流仅供参考...

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

=6)表示今天是星期几,第二个数m(m〈=1000),表示求m天后是星期几;

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

1 4

Fri

#include<stdio.h>

intmain() 

{/*表示枚举变量完全看不懂的说-—*/

  char *p[]={"

Sun"

,"Mon"

”Tue”,"

Wed"

”Thu”,"Fri"

”Sat"

 intm,d;

scanf(”%d%d",&d,&

m);

 printf("

%s"

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

  return0;

15,abc+cba=1333(卜胜贤)

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

(知识点:

控制语句)...文档交流仅供参考...

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

123321

456654

……

#include<

stdio.h>

main() 

i,a,b,c;

for(i=100;

i<

1000;

a=i/100;

b=i/10%10;

c=i%10;

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

printf("

%d 

%d%d%d\n"

i,c,b,a);

} 

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

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

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

例如,当s中的数为:

87653142时,t中的数为:

7531。

(知识点:

控制语句、函数、指针)...文档交流仅供参考...

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

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

987654321

97531

#include〈stdio。

#include<

string.h>

intmain()

ﻩchar a[15];

ﻩgets(a);

ﻩinti,l=strlen(a);

ﻩfor(i=0;

i++)

ﻩif((a[i]%2)/*’0’的ASCII为48——*/

ﻩﻩprintf("%c”,a[i]);

ﻩreturn0;

17,四位反序数(卜胜贤)

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

123的反序数是321),编程,输出一个满足条件的N.(知识点:

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

=9)

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

9

1089

#include<stdio.h〉 

#include<

string.h〉 

main() 

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

当前位置:首页 > 医药卫生 > 预防医学

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

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