C语言部分编程题答案.docx

上传人:b****1 文档编号:2833285 上传时间:2023-05-04 格式:DOCX 页数:24 大小:20.25KB
下载 相关 举报
C语言部分编程题答案.docx_第1页
第1页 / 共24页
C语言部分编程题答案.docx_第2页
第2页 / 共24页
C语言部分编程题答案.docx_第3页
第3页 / 共24页
C语言部分编程题答案.docx_第4页
第4页 / 共24页
C语言部分编程题答案.docx_第5页
第5页 / 共24页
C语言部分编程题答案.docx_第6页
第6页 / 共24页
C语言部分编程题答案.docx_第7页
第7页 / 共24页
C语言部分编程题答案.docx_第8页
第8页 / 共24页
C语言部分编程题答案.docx_第9页
第9页 / 共24页
C语言部分编程题答案.docx_第10页
第10页 / 共24页
C语言部分编程题答案.docx_第11页
第11页 / 共24页
C语言部分编程题答案.docx_第12页
第12页 / 共24页
C语言部分编程题答案.docx_第13页
第13页 / 共24页
C语言部分编程题答案.docx_第14页
第14页 / 共24页
C语言部分编程题答案.docx_第15页
第15页 / 共24页
C语言部分编程题答案.docx_第16页
第16页 / 共24页
C语言部分编程题答案.docx_第17页
第17页 / 共24页
C语言部分编程题答案.docx_第18页
第18页 / 共24页
C语言部分编程题答案.docx_第19页
第19页 / 共24页
C语言部分编程题答案.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言部分编程题答案.docx

《C语言部分编程题答案.docx》由会员分享,可在线阅读,更多相关《C语言部分编程题答案.docx(24页珍藏版)》请在冰点文库上搜索。

C语言部分编程题答案.docx

C语言部分编程题答案

C语言部分编程题答案

1.根据输入字符(0到F,用%c接受)显示与该字符所表示的十六进制数相对应的十进制数(例如输入A,输出10;输入0,输出0)。

用else-if完成(P90,例3.21)

#include

voidmain()

{

charch;

printf("请输入0~F:

");

scanf("%c",&ch);

if(ch>='0'&&ch<='9')

printf("%d\n",ch-'0');

elseif(ch>='A'&&ch<='F')

printf("%d\n",ch-'A'+10);

elseif(ch>='a'&&ch<='f')

printf("%d\n",ch-'a'+10);

else

printf("输入有误!

\n");

}

2.编写程序,输入一组字符(以#号结尾),对该组字符做一个统计,统计字母、数字和其他字符的个数,输出统计结果。

(P1343-6(10))

#include

voidmain()

{

charch;

intcount1,count2,count3;

count1=0;

count2=0;

count3=0;

scanf("%c",&ch);

while(ch!

='#')

{

if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))

count1++;

elseif(ch>='0'&&ch<='9')

count2++;

else

count3++;

scanf("%c",&ch);

}

printf("字母个数:

%d\n",count1);

printf("数字个数:

%d\n",count2);

printf("其他字符个数:

%d\n",count3);

}

3.编写程序,输入一个正整数,计算并显示该整数的各位数字之和,例如,整型数1987的各位数字之和是1+9+8+7,等于25.(P135(17))

(1)只求和

#include

voidmain()

{

intn,sum;

sum=0;

scanf("%d",&n);

while(n)

{

sum+=n%10;

n/=10;

}

printf("sum=%d\n",sum);

}

(2)输出各位数字并求和

#include

voidmain()

{

intn,sum;

sum=0;

scanf("%d",&n);

printf("%d",n%10);

sum+=n%10;

n/=10;

while(n)

{

printf("+%d",n%10);

sum+=n%10;

n/=10;

}

printf("=%d\n",sum);

}

4.在歌手大奖赛中有若干裁判为歌手打分,计算歌手最后得分的方法是:

去掉一个最高分,去掉一个最低分,去剩余成绩的平均分。

编写程序输入一个歌手的若干成绩,以-1作为输入结束标记,计算歌手的最后打分。

(P135(18))

(1)求最高分

#include

voidmain()

{

intscore,max;

scanf("%d",&score);

max=score;

while(score!

=-1)

{

if(max

max=score;

scanf("%d",&score);

}

printf("max=%d\n",max);

}

(2)求最低分

#include

voidmain()

{

intscore,min;

scanf("%d",&score);

min=score;

while(score!

=-1)

{

if(min>score)

min=score;

scanf("%d",&score);

}

printf("min=%d\n",min);

}

(3)求平均分

#include

voidmain()

{

intscore,max,min,count,sum,avg;

count=0;

sum=0;

scanf("%d",&score);

max=score;

min=score;

while(score!

=-1)

{

if(max

max=score;

if(min>score)

min=score;

count++;

sum+=score;

scanf("%d",&score);

}

if(count>2)

{

avg=(sum-max-min)/(count-2);

printf("avg=%d\n",avg);

}

else

printf("Thedataistooless.\n");

}

5.输出所有的水仙花数

(1)用for语句完成

#include

voidmain()

{

inti,bw,sw,gw;

for(i=100;i<1000;i++)

{

bw=i/100;

sw=i%100/10;

gw=i%10;

if(bw*bw*bw+sw*sw*sw+gw*gw*gw==i)

printf("%d\n",i);

}

}

(2)用多重循环完成

#include

voidmain()

{

intn,bw,sw,gw;

for(bw=1;bw<10;bw++)

for(sw=0;sw<10;sw++)

for(gw=0;gw<10;gw++)

{

n=bw*100+sw*10+gw;

if(bw*bw*bw+sw*sw*sw+gw*gw*gw==n)

printf("%d\n",n);

}

}

6.编写程序求a+aa+aaa+…+aa…a,其中a是一个数字。

例如:

3+33+333+3333+33333(此时n=5)。

要求a和n从键盘输入,输出格式为:

3+33+333+3333+33333=37035.(P134(13))

(1)只求和

#include

voidmain()

{

inta,n,sum,i,b;

scanf("%d%d",&a,&n);

b=0;

sum=0;

for(i=1;i<=n;i++)

{

b=b*10+a;

sum+=b;

}

printf("%d\n",sum);

}

(2)输出各项并求和

#include

voidmain()

{

inta,n,sum,i,b;

scanf("%d%d",&a,&n);

b=a;

sum=b;

printf("%d",b);

for(i=2;i<=n;i++)

{

b=b*10+a;

printf("+%d",b);

sum+=b;

}

printf("=%d\n",sum);

}

7.假设数列中的每一项都比前一项大一个常量。

假设数列第一项为a,并且两个相邻项之间的差为d。

编写程序提示用输入数列的前两项,以及需要计算的项数k。

利用循环语句输出数列的前k项,并计算前k项的和。

(P134(14))

(1)逐项求和

#include

voidmain()

{

inta1,a2,ai,k,d,sum,i;

scanf("%d%d%d",&a1,&a2,&k);

d=a2-a1;

ai=a1;

printf("%d",ai);

sum=a1;

for(i=2;i<=k;i++)

{

ai+=d;

printf("+%d",ai);

sum+=ai;

}

printf("=%d\n",sum);

}

(2)按公式求和,效率更高

#include

voidmain()

{

inta1,a2,ai,k,d,sum,i;

scanf("%d%d%d",&a1,&a2,&k);

d=a2-a1;

ai=a1;

printf("%d",ai);

for(i=2;i<=k;i++)

{

ai+=d;

printf("+%d",ai);

}

sum=(a1+(a1+d*(k-1)))*k/2;

printf("=%d\n",sum);

}

8.输出九九乘法表

#include

voidmain()

{

inti,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

printf("%5d",j*i);

printf("\n");

}

}

9.请为“百鸡问题”编写程序。

百鸡问题:

“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。

百钱买百鸡,问鸡翁、母、雏各几只”。

(1)三重循环

#include

voidmain()

{

intcock,hen,chick;

for(cock=0;cock<=100/5;cock++)

for(hen=0;hen<=100/3;hen++)

for(chick=0;chick<=100*3;chick+=3)

if(cock+hen+chick==100&&cock*5+hen*3+chick/3==100)

printf("cock=%d,hen=%d,chick=%d\n",cock,hen,chick);

}

(2)双重循环

#include

voidmain()

{

intcock,hen,chick;

for(cock=0;cock<=100/5;cock++)

for(chick=0;chick<=100*3;chick+=3)

{

hen=100-cock-chick;

if(hen>=0&&cock*5+hen*3+chick/3==100)

printf("cock=%d,hen=%d,chick=%d\n",cock,hen,chick);

}

}

10.幼儿园有大、中、小三个班的小朋友。

分西瓜时,大班三人一个,中班四人一个,小班五人一个,正好分掉10个西瓜;分苹果时,大班每人2人,中班每人3个,小班每人4人,正好分掉100个苹果。

编写程序求幼儿园共有多少个朋友。

#include

voidmain()

{

intdb,zb,xb;

intmax_db,max_zb,max_xb;

intflag1,flag2;

if(3*10<100/2)

max_db=3*10;

else

max_db=100/2;

if(4*10<100/3)

max_zb=4*10;

else

max_zb=100/3;

if(5*10<100/4)

max_xb=5*10;

else

max_xb=100/4;

printf("大班\t中班\t小班\t总数\n");

for(db=0;db<=max_db;db+=3)

for(zb=0;zb<=max_zb;zb+=4)

for(xb=0;xb<=max_xb;xb+=5)

{

flag1=db/3+zb/4+xb/5==10;

flag2=db*2+zb*3+xb*4==100;

if(flag1&&flag2)

printf("%d\t%d\t%d\t%d\n",db,zb,xb,db+zb+xb);

}

}

11.求3到100之间的所有素数。

每行输出五个

#include

voidmain()

{

inti,j,count;

count=0;

for(i=3;i<=100;i+=2)

{

for(j=2;j<=i-1;j++)

if(i%j==0)

break;

if(j==i)

{

printf("%10d",i);

count++;

if(count%5==0)

printf("\n");

}

}

printf("\n");

}

12.定义函数求两个函数的最小公倍数,并在主函数中输入两个整数以后调用该函数。

编写主函数调用该函数。

(1)解法一

#include

intgetlcm(intx,inty);

voidmain()

{

inta,b;

scanf("%d%d",&a,&b);

printf("lcm=%d\n",getlcm(a,b));

}

intgetlcm(intx,inty)

{

intlcm;

if(x>y)

lcm=x;

else

lcm=y;

while(!

(lcm%x==0&&lcm%y==0))

lcm++;

returnlcm;

}

(2)解法2

#include

intgetlcm(intx,inty);

voidmain()

{

inta,b;

scanf("%d%d",&a,&b);

printf("lcm=%d\n",getlcm(a,b));

}

intgetlcm(intx,inty)

{

intlcm;

if(x>y)

lcm=x;

else

lcm=y;

while(lcm%x||lcm%y)

lcm++;

returnlcm;

}

13.用递归法输出整数1-10。

#include

voidoutput(intfrom,intto);

voidmain()

{

output(1,10);

printf("\n");

}

voidoutput(intfrom,intto)

{

if(from<=to)

{

printf("%5d",from);

output(from+1,to);

}

}

14.用递归方法计算Fibonacci的前20项。

#include

intfabonacci(intn);

voidmain()

{

inti;

for(i=1;i<=20;i++)

printf("%d\n",fabonacci(i));

}

intfabonacci(intn)

{

intr;

if(n>2)

r=fabonacci(n-1)+fabonacci(n-2);

else

r=1;

returnr;

}

15.输入两个字符串,输出较大的字符串。

#include

#include

voidmain()

{

charstr1[80],str2[80],max_str[80];

intr;

gets(str1);

gets(str2);

r=strcmp(str1,str2);

if(r>0)

strcpy(max_str,str1);

else

strcpy(max_str,str2);

puts(max_str);

}

16.编写函数str_len求字符串的长度,并在主函数中调用该函数,函数使用如下:

intstr_len(char*str);

#include

intstr_len(char*str);

voidmain()

{

chars[80];

gets(s);

printf("len=%d\n",str_len(s));

}

intstr_len(char*str)

{

intlen;

len=0;

while(*str!

='\0')

{

len++;

str++;

}

returnlen;

}

17.输入三行四列的二维整形数组,求最大值及其行号、列号。

#include

voidmain()

{

inta[3][4],i,j,max,row,col;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

max=a[0][0];

row=0;

col=0;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(a[i][j]>max)

{

max=a[i][j];

row=i;

col=j;

}

printf("\n最大值为:

%d\n",max);

printf("最大值的行号:

%d\n",row);

printf("最大值的列号:

%d\n",col);

}

18.编写程序,输入10个学生的“C程序设计”课程的期中、期末成绩,计算出总评成绩,总评成绩为“30%*期中成绩+70%*期末成绩”,根据总评成绩的统计90-100、80-89、60-79、0-59这四个分数段各有多少人,输出拥挤情况,并按总评成绩降序输出学生的总评成绩。

(1)仅用main函数

#include

voidmain()

{

doublescore1[10],score2[10],score3[10],temp;

inti,j,max_cur;

puts("请输入10个学生的“期中成绩”:

");

for(i=0;i<10;i++)

scanf("%lf",&score1[i]);

puts("请输入10个学生的“期末成绩”:

");

for(i=0;i<10;i++)

scanf("%lf",&score2[i]);

for(i=0;i<10;i++)

score3[i]=score1[i]*0.3+score2[i]*0.7;

for(i=0;i<9;i++)

{

max_cur=i;

for(j=i+1;j<10;j++)

if(score3[max_cur]

max_cur=j;

temp=score3[i];

score3[i]=score3[max_cur];

score3[max_cur]=temp;

}

puts("按从高到低输出总评成绩:

");

for(i=0;i<10;i++)

printf("%7.2f",score3[i]);

printf("\n");

}

(2)使用自定义函数

#include

voidinput_score(doublescore[],intn);

voidcalculate_final_grade(doublet1[],doublet2[],doublet3[],intn);

voidsort(doublescore[],intn);

voidoutput_score(doublescore[],intn);

voidmain()

{

doublescore1[10],score2[10],score3[10];

puts("请输入10个学生的“期中成绩”:

");

input_score(score1,10);

puts("请输入10个学生的“期末成绩”:

");

input_score(score2,10);

calculate_final_grade(score1,score2,score3,10);

sort(score3,10);

puts("按从高到低输出总评成绩:

");

output_score(score3,10);

}

voidinput_score(doublescore[],intn)

{

inti;

for(i=0;i

scanf("%lf",&score[i]);

}

voidcalculate_final_grade(d

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2