c语言程序案例解析.docx

上传人:b****6 文档编号:6667181 上传时间:2023-01-08 格式:DOCX 页数:32 大小:24.81KB
下载 相关 举报
c语言程序案例解析.docx_第1页
第1页 / 共32页
c语言程序案例解析.docx_第2页
第2页 / 共32页
c语言程序案例解析.docx_第3页
第3页 / 共32页
c语言程序案例解析.docx_第4页
第4页 / 共32页
c语言程序案例解析.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

c语言程序案例解析.docx

《c语言程序案例解析.docx》由会员分享,可在线阅读,更多相关《c语言程序案例解析.docx(32页珍藏版)》请在冰豆网上搜索。

c语言程序案例解析.docx

c语言程序案例解析

上机注意:

1、请大家在VC6.0中建立工程,编写代码,编译(compile),链接(build),运行(executeprogram)后,输入题目中的例子输入,在输出与题目中的例子输出一致后再提交到编程网格上。

2、建立VC6.0工程(project)时,请建立Win32ConsoleApplication。

3、下面是练习2中的两个习题讲解

/*

*练习2、习题(4-1)计算邮资

*习题讲解

*/

#include

intmain()

{

  doubleweight;

  charexp;

  doubled;

  /*

  *scanf里面的数字/字符变量(例如下面的weight),要用&

  *%c是字符型变量的输入输出格式

  */

  /*

  *如果输入之间有其他内容(例如空格,逗号等),scanf的输入格式(即双引号中的内容)要与之匹配

  *例如,本题的输入为“1y”,之间有空格,scanf的输入格式应该写成"%lf%c"

  *例如“练习2、习题(4-2)点和正方形的关系”中的输入为“0.5,0.5”,之间有逗号,scanf的输入格式应该写成"%lf,%lf"

  */

  scanf("%lf%c",&weight,&exp);

  if(weight<=1)

    d=0.8;

  else

    d=(weight-1)*0.5+0.8;

  /*

  *if语句里的条件,如果是判断是不是相等,应该用两个等号

  *字符常量(例如下面的字符y)要用单引号

  */

  if(exp=='y')

    d=d+2;

  /*

  *printf里面的变量(例如下面的d)不要用&

  *%lf是双精度浮点数的输入输出格式,.1表示小数点后保留一位(保留两位用.2)

  */

  printf("%.1lf\n",d);

  return0;

}

/*

*练习2、习题(4-3)判断一个数能否同时被3和5整除

*习题讲解

*/

#include

intmain()

{

    inti;

    scanf("%d",&i);

  /*

  *下面i%3中的%表示取余数,余数为0,也就是i能被3整除了

  *如果if语句中有多个条件,要使用逻辑运算符(讲义C语言编程基础

(2)第63页-66页)

  */

    if(i%3==0&&i%5==0)

    /*

    *printf双引号中内容除了像%d这样的变量输出格式,其他内容(像contains3and5)会全部输出

    *其中,%d所在的位置为变量i要输出的位置。

    *如果要求输出为“变量15contains3and5”,那么应该写成printf("变量%dcontains3and5",i)

    */

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

    else

        printf("%ddoesn'tcontain3and5\n",i);

    return0;

}

1.

读入一个字符,一个整数,一个单精度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔。

输出浮点数时使用格式“%f”。

关于输入

共有四行:

第一行是一个字符;

第二行是一个整数;

第三行是一个单精度浮点数;

第四行是一个双精度浮点数。

关于输出

输出字符、整数、单精度浮点数和双精度浮点数,之间用空格分隔。

#include

intmain()

{

chara;

intb;

floatc;

doubled;

scanf("%c",&a);

scanf("%d",&b);

scanf("%f",&c);

scanf("%lf",&d);

printf("%c",a);

printf("%d",b);

printf("%f",c);

printf("%lf",d);

return0;

}

2.

给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。

关于输入

只有一个字符。

关于输出

该字符构成的等腰三角形,底边长5个字符,高3个字符。

例子输入

*

例子输出

 *

***

*****

#include

intmain()

{

chara;

scanf("%c",&a);

printf("%c\n",a);

printf("%c",a);

printf("%c",a);

printf("%c\n",a);

printf("%c",a);

printf("%c",a);

printf("%c",a);

printf("%c",a);

printf("%c\n",a);

return0;

}

3.

输入三个正整数表示三条边的长度,判断这三条边能否构成一个三角形,如果能,则输出“yes”,否则输出“no”。

关于输入

输入是三个正整型数,分别表示三条边的长度。

关于输出

yes或者no

#include

intmain()

{

inta,b,c;

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

if(a+b>c&&a+c>b&&b+c>a)

printf("yes");

else

printf("no");

return0;

}

4.甲流死亡率

甲流并不可怕,在中国,它的死亡率并不是很高。

请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。

关于输入

输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。

关于输出

输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。

#include

intmain()

{

inta,b;

doublec;

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

c=100.0*b/a;

printf("%.3lf%%",c);

return0;

}

5.鸡兔同笼

一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。

已经知道了笼子里面鸡和兔子的总数a和脚的总数b,问笼子里面有多少只鸡,有多少只兔子

关于输入

输入仅一行,包括两个整数a和b,我们保证输入的合法性

关于输出

输出也是一行,输出鸡的个数和兔子的个数,中间用空格隔开

#include

intmain()

{

inta,b,c,d;

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

c=2*a-b/2;

d=b/2-a;

printf("%d%d",c,d);

return0;

}

6.奇数和

计算正整数m到n(包括m和n)之间的所有奇数的和,其中,m不大于n,且n不大于300。

例如m=3,n=12,其和则为:

3+5+7+9+11=35

关于输入

两个数m和n,两个数以空格间隔,其中m

关于输出

奇数之和

#include

intmain()

{

inta,b,i,m;

m=0;

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

for(i=a;i<=b;i++)

{

if(i%2==1)

m=m+i;

}

printf("%d",m);

return0;

}

7.与7无关数之和

一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数.现求所有小于等于n(n<100)的与7无关的正整数的平方和.

关于输入

输入为一行,正整数n,(n<100)

关于输出

输出小于等于n的与7无关的正整数的平方和

#include

intmain()

{

inti,n,m,n1,n2,n3;

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

m=0;

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

n1=i%7;

n2=i/10;

n3=i%10;

if(n1!

=0&&n2!

=7&&n3!

=7)

m=m+i*i;

}

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

return0;

}

8.球落地

一球从h米的高度自由落下,每次落地后又反跳回原高度的一半,再落下。

求它在第n次落地时,共经过多少米,第n次反弹多高。

关于输入

高度h(双精度浮点数),落地次数n(大于0整数)。

关于输出

输出它在第n次落地时,共经过的米数s和第n次反弹的高度h。

(精确到小数点后四位)

#include

intmain()

{

doublei,h,y,h2;

intn;

y=1;

scanf("%lf",&h);

scanf("%d",&n);

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

{

y=y*2;

}

h2=h/y;

y=3*h-4*h/y;

printf("%.4lf%.4lf",y,h2);

return0;

}

9.人民币面额

从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。

关于输入

一个小于1000的正整数。

关于输出

输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数

#include

intmain()

{

intx,a,b,c,d,e,f;

scanf("%d",&x);

a=x/100;

b=(x-100*a)/50;

c=(x-100*a-50*b)/20;

d=(x-100*a-50*b-c*20)/10;

e=(x-100*a-50*b-c*20-d*10)/5;

f=x-100*a-50*b-c*20-d*10-5*e;

printf("%d\n%d\n%d\n%d\n%d\n%d\n",a,b,c,d,e,f);

return0;

}

10.最大两个数

写一个程序,它读入一系列的整数,最后输出其中最大的两个数。

关于输入

第一行输入一个大于1且小于100的整数,表示数列的长度。

此后每行输出数列的一项。

关于输出

输出应有两行,第一行输出最大的数,第二行输出次大的数。

#include

intmain()

{

inti,n,m,max1,max2;

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

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

scanf("%d",&m);

if(i==1)

max2=m;

if(i==2){

if(m>max2)

max1=m;

else

max1=max2;

}

if(i>=3){

if(m>=max1)

{

max2=max1;

max1=m;

}

elseif(m>=max2)

max2=m;

}

}

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

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

return0;

}

11.计算邮资

计算邮资:

用户输入:

邮件的重量,以及是否加快

计算规则:

重量在1克以内(包括1克),基本费0.8元。

超过1克的部分,按照0.5元/克的比例加收超重费。

如果用户选择加快,多收2元。

关于输入

重量doubleweight

是否加快charexp(可以取'y'or'n')

关于输出

邮资(注:

只需要输出数字,不需要加单位。

例如1.3元,只需要输出1.3)

#include

intmain()

{

doubleweight,m;

charexp;

scanf("%lf",&weight);

scanf("%c",&exp);

if(weight<=1)

m=0.8;

else

m=0.3+weight*0.5;

if(exp=='y')

m=m+2;

printf("%.1lf",m);

return0;

}

12.点是否在正方形内

有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,1),(-1,-1),x是横轴,y是纵轴。

写一个程序,判断一个给定的点是否在这个正方形内。

关于输入

输入坐标x,y

关于输出

点在正方形内,输出yes;点在正方形外,输出no

#include

intmain()

{

doublex,y;

scanf("%lf,%lf",&x,&y);

if((x>=-1)&&(x<=1)&&(y>=-1)&&(y<=1))

printf("yes");

else

printf("no");

return0;

}

13.

判断一个数n能否同时被3和5整除

关于输入

任意一个整数

关于输出

是否能同时被3和5整除

例子输入

15

20

例子输出

15contains3and5

20doesn'tcontain3and5

#include

intmain()

{

intx;

scanf("%d",&x);

if(x%3==0&&x%5==0){

printf("%dcontains3and5",x);

}else{

printf("%ddoesn'tcontain3and5",x);

}

return0;

}

14.能否被3,5,7整除

输入一个整数,判断它能否被3,5,7整除,并输出以下信息:

(1)能同时被3,5,7整除(直接输出357,每个数中间一个空格);

(2)能被其中两个数整除(输出两个数,小的在前,大的在后。

例如:

35或者37或者57,中间用空格分隔)

(3)能被其中一个数整除(输出这个除数)

(4)不能被任何数整除;(输出小写字符n)

关于输入

一个整数

关于输出

实现题目的要求

#include

intmain()

{

inta3,a5,a7,x;

scanf("%d",&x);

a3=x%3;

a5=x%5;

a7=x%7;

if((a3==0)&&(a5==0)&&(a7==0))

printf("357");

if((a3==0)&&(a5==0)&&(a7!

=0))

printf("35");

if((a3==0)&&(a5!

=0)&&(a7==0))

printf("37");

if((a3!

=0)&&(a5==0)&&(a7==0))

printf("57");

if((a3==0)&&(a5!

=0)&&(a7!

=0))

printf("3");

if((a3!

=0)&&(a5==0)&&(a7!

=0))

printf("5");

if((a3!

=0)&&(a5!

=0)&&(a7==0))

printf("7");

if((a3!

=0)&&(a5!

=0)&&(a7!

=0))

printf("n");

return0;

}

15.输出最大数

输入三个整数,输出最大的数。

关于输入

输入为一行,共三个整数。

关于输出

输出为最大的整数。

例子输入

102056

例子输出

56

#include

intmain()

{

inta,b,c;

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

if((a>b)&&(a>c))

printf("%d",a);

if((b>a)&&(b>c))

printf("%d",b);

if((c>b)&&(c>b))

printf("%d",c);

return0;

}

16.计算器

一个最简单的计算器,支持+,-,*,/四种运算。

仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

关于输入

输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。

关于输出

输出只有一行,一个整数,为运算结果。

然而:

1.如果出现除数为0的情况,则输出:

Dividedbyzero!

2.如果出现无效的操作符(即不为+,-,*,/之一),则输出:

Invalidoperator!

例子输入

12+

例子输出

3

#include

intmain()

{

inta,b,c;

charx;

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

scanf("%c",&x);

switch(x)

{

case'+':

c=a+b;

printf("%d",c);

break;

case'-':

c=a-b;

printf("%d",c);

break;

case'*':

c=a*b;

printf("%d",c);

break;

case'/':

if(b==0)

printf("Dividedbyzero!

");

else{

c=a/b;

printf("%d",c);

}

break;

default:

printf("Invalidoperator!

");

}

return0;

}

17.财务管理

阿华今年毕业并找到一份工作。

他挣的钱很多,但却总不够花。

阿华决定看紧自己的钱包以解决他的财务问题。

他要做的第一步是先弄清自己的钱的情况。

阿华拿出银行结帐单想算一算他都有多少钱。

请写一个程序处理过去十二个月月末帐户余额,帮助阿华计算出平均帐户余额。

关于输入

输入共12行,每行一个数字,代表相应月份月末帐户余额,每个数字都是正数,并且小数点后精确到分。

金额数字前没有货币符号。

关于输出

输出是一个金额数,即这十二个月的平均帐户余额。

请按四舍五入近似到分。

金额前带一个美元符号($),金额后紧跟一个回车符号(\n)。

输出中不应包含空白符号或其他任何符号。

例子输入

100.00

489.12

12454.12

1234.10

823.05

109.20

5.27

1542.25

839.18

83.99

1295.01

1.75

例子输出

$1581.42

#include

intmain()

{

floatx,y,sum;

sum=0;

inti;

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

{

scanf("%f",&x);

sum+=x;

}

y=sum/12;

printf("$%.2f\n",y);

return0;

}

18.满足条件的数

编写程序,读入若干个四位数(小于30),求出其中满足以下条件的数的个数:

个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。

关于输入

输入为两行,第一行为四位数的个数,第二行为要读入的四位数

关于输出

输出为一行,即满足条件的四位数的个数

#include

intmain()

{

intn,m,i,x1,x2,x3,x4,p,j;

j=0;

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

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

{

scanf("%d",&m);

x4=m/1000;

x3=(m-1000*x4)/100;

x2=(m-1000*x4-100*x3)/10;

x1=m-1000*x4-100*x3-10*x2;

p=x1-x2-x3-x4;

if(p>0){

j++;

}

}

printf("%d",j);

return0;

}

19.求最大公约数

#include

intmain(){

inta,b,result;

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

result=a;

while

(1){

if((a%result==0)&&(b%result==0)){

break;

}

result--;

}

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

return0;

}

20.最小公倍数

#include

intmain(){

inta,b,result;

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

result=a;

while

(1){

if((result%a==0)&&(result%b==0)){

break;

}

result++;

}

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

return0;

}

21.编写一个完整的C程序,求一个正整数中各个数位(个位、十位、百位、…)上数字的和。

输入:

一个正整数;

输出:

一个整数,即输入的正整数中各个数位上数字的和。

例子输入:

123456例子输出:

21

intmain(){

inta,result=0;

scanf(“%d”,&a);

for(inti=a;i>0;i/=10){

result+=i%10;

}

printf(“%d”,result);

return0;

}

22.输出一个double型数的小数部分.

#include

intmain(){

doublea;

scanf("%lf",&a);

a-=(int)(a);

printf("%lf\n",a);

return0;

}

23.接受从控制台输入的三个整数,并按照绝对值的大小进行从大

到小输出到控制台

#include

intmain(){

inta,b,c,t;

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

if((a<0?

-a:

a)<(b<0?

-b:

b)){

t=a;

a=b;

b=t;

}

if((a<0?

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

当前位置:首页 > 解决方案 > 学习计划

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

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