C语言13道题目.docx

上传人:b****7 文档编号:25218305 上传时间:2023-06-06 格式:DOCX 页数:15 大小:22.06KB
下载 相关 举报
C语言13道题目.docx_第1页
第1页 / 共15页
C语言13道题目.docx_第2页
第2页 / 共15页
C语言13道题目.docx_第3页
第3页 / 共15页
C语言13道题目.docx_第4页
第4页 / 共15页
C语言13道题目.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C语言13道题目.docx

《C语言13道题目.docx》由会员分享,可在线阅读,更多相关《C语言13道题目.docx(15页珍藏版)》请在冰豆网上搜索。

C语言13道题目.docx

C语言13道题目

这十三个题目我用的编译器是MicrosoftVisualStudio中编译的所以在任何一个后面都加了两行getchar();如果你用的编译器是VC++6.0;后面两行getchar();完全可以不加。

其中绿颜色的全为注释部分。

1、编写程序,分行输出一个三位数的每一个数字,即分三行输出个位数字、十位数字、百位数字

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

intb,x,y,z;/*定义三个变量b(b用来存输入的一个三位数),x(百位数),y(十位数),z(个位数)*/

scanf("%d",&b);/*从键盘输入一个三数存入变量b*/

x=b/100;/*用这个三位数除以100(两个整型相除得到还是一个整型,只会取整数部分)从而得到百位数*/

y=b%100/10;/*用这个三位数对100取余(取余所得的余数)用这个余数除以10(两个整型相除得到还是一个整型,只会取整数部分)从而得到十位数*/

z=b%10;/*用这个三位数对10取余(取余所得的余数)从而得到个位数*/

printf("个位为%d\n",z);/*输出个数上的数字*/

printf("十位为%d\n",y);/*输出十数上的数字*/

printf("百位为%d\n",x);/*输出百数上的数字*/

getchar();

getchar();

}

2、鸡与兔共100只,鸡的脚数比兔的脚数少28.问鸡与兔各几只?

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

intx;/*定义变量x(鸡的数量为x)*/

for(x=0;x<=100;x++)/*循环(x的值可以从0取到100)*/

{

if(x+(100-x)==100&&4*(100-x)-2*x==28)/*判断鸡兔的总数和要达到100;还有判断鸡的脚要比兔的脚少28只,要两个要求同时满足时才执行下面的输出语句*/

{

printf("鸡的只数为%d\n兔子的只数为%d\n",x,100-x);/*要上面条件满足时才输出鸡都数量级兔子的数量(因为鸡的数量是x,所以兔的数量就为100-x)*/

}

}

getchar();

getchar();

}

3、有30个人在饭馆吃饭,其中有男人、女人、小孩,每个男人花3块钱,女人花2块钱,小孩花1块钱,一共50块钱,问男人、女人和小孩各多少人?

(男人、女人、小孩都存在)

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

intX,Y,Z;/*定义变量X,Y,Z(男人数量为X,女人的数量为Y,小孩的数量为Z)*/

for(X=1;X<=15;X++)/*循环体(X的值可以从1取到16,因为前提因素是男人、女人、小孩都存在的,所以至少存在1个,而后面的条件是共只有50元,小孩、女人至少有1人存在就用了3元,而乘下的都是男人为37元,从而循环只能取1至16了,)*/

{

for(Y=1;Y<=23;Y++)/*循环体(Y的值可以从1取到23,因为前提因素是男人、女人、小孩都存在的,所以至少存在1个,而后面的条件是共只有50元,小孩、男人至少有1人存在就用了4元,而乘下的都是男人为46元,从而循环只能取1至23了,)*/

{

Z=30-X-Y;/*从上面的循环体内得出了男人及女人的数量,总人数是30人,得知小孩就为30减去男人再减去女人*/

if(3*X+2*Y+1*Z==50)/*判断总钱数是否等于50元*/

printf("男人%d,女人%d,小孩%d\n",X,Y,Z);/*输出每一次满足条件的结果*/

}

}

getchar();

getchar();

}

4、编写函数求n的阶乘n!

(利用循环和递归两种方法)

函数原型为:

longfactn(intn)

循环方法:

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

longd=factn(5);/*对自定义函数的调用*/

printf("%d\n",d);/*输出调用所得的到结果*/

getchar();

getchar();

}

longfactn(intn)/*对自定义函数的说明*/

{

longresult=1;/*定义一个长整型变量result并赋初始值为1*/

inti;/*定义一个整型变量i用来控制循环体的初始值*/

for(i=1;i<=n;i++)/*循环体(用n来控制阶乘的循环次数)*/

{

result=result*i;/*将result乘以i的值赋给result*/

}

returnresult;

}

递归方法:

这个方法不解释,自己都被搞晕了。

#include"stdio.h"

voidmain()

{

longd=factn(5);

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

getchar();

getchar();

}

longfactn(intn)

{

if(n==1)

{

return1;

}

else

{

returnn*factn(n-1);

}

}

5、编写程序,实现从键盘输入两个整数,输出它们的加、减、乘、除、取余5种算术运算结果

#include/*头文件*/

voidmain()/*主函数*/

{

inta,b;/*定义两个整型变量a(a同是是加、减、乘、除数及取余的数)与b(同时是被加、减、乘、除数及取余的数)*/

printf("请输入两个数:

\n");/*提示用户要输入两个数*/

scanf("%d%d",&a,&b);/*接收用户要键盘输入的两个数,分别存入a与b中*/

printf("a+b=%d\n",a+b);/*输出a+b的结果*/

printf("a-b=%d\n",a-b);/*输出a-b的结果*/

printf("a*b=%d\n",a*b);/*输出a*b的结果*/

printf("a/b=%.3f\n",(float)a/(float)b);/*输出a/b的结果(此处a除以b的结果有可能是个小数,所以数据类型在强置转换成浮点型)*/

printf("a%%b=%d\n",a%b);/*输出a%%(求余)b的结果*/

getchar();

getchar();

}

6、给出一个百分制成绩,要求输出成绩等级'A','B','C','D','E',90分以上为'A',80~89分为'B',70~79分为‘C’,60~69分为'D',60分以下为‘E’。

(用if和switch分别实现)

用if方法:

#include"stdio.h"/*头文件*/

intmain()/*主函数*/

{

intscore;/*定义整型变量score*/

printf("输入成绩:

");/*提示用“输入成绩”*/

scanf("%d",&score);/*从键盘上输入一个数并且存在变量score里面*/

if(score<=100&&score>=0)/*判断输入的这个数是否在0~100之间*/

{

if(score>=90)/*判断输入的数是否大于或等于90*/

printf("你的成绩等级为A\n");/*如果上面条件成立就输出“你的成绩等级为A”*/

elseif(score>=80)/*判断输入的数是否大于或等于80并且是小于90的*/

printf("你的成绩等级为B\n");/*如果上面条件成立就输出“你的成绩等级为B”*/

elseif(score>=70)/*判断输入的数是否大于或等于70并且是小于80的*/

printf("你的成绩等级为C\n");/*如果上面条件成立就输出“你的成绩等级为C”*/

elseif(score>=60)/*判断输入的数是否大于或等于60并且是小于70的*/

printf("你的成绩等级为D\n");/*如果上面条件成立就输出“你的成绩等级为D”*/

else/*判断输入的数是否小于60*/

printf("你的成绩等级为E\n");/*如果上面条件成立就输出“你的成绩等级为E”*/

}

else/*这个else与最上面的if语句(判断成绩是否在于0~100之间的)配套,判断输入的数是否在100以外或者是在0以下*/

printf("哥你输入的数字有误\n");/*如果上面条件成立就提示你输出有误*/

getcahr()

getcahr;

}

用switch方法:

#include/*头文件*/

intmain()/*主函数*/

{

doublegrade;/*定义符点型变量(因为成绩有可以带小数的),用来存放输入的成绩*/

intint_grade;/*定义整型变量,用来存将double型转成int型的变量*/

printf("yourscore:

");/*提示用“yourscore”*/

scanf("%d,\n",&grade);/*从键盘上输入一个数并且存在变量score里面*/

int_grade=(int)grade;/*将符点型数grade强制转换成整型并赋值给变量int_grade*/

if(grade<=100&&grade>=0)/*判断输入的这个数是否在0~100之间*/

switch(int_grade/10)/*switch语句后面可以带一个表达式,也可是int型数据,也可以是char型,(后面用int_grade/10两个整型相除得到的还是一个整型)因为成绩的关系都是10的倍数*/

{

case10:

case9:

printf("youscore:

A\n");/*如果上面表达式得到的结果是10和9,就都输出“youscore:

A”*/

break;/*如果上面语句执行完就,结束switch语句*/

case8:

printf("youscore:

B\n");/*如果上面表达式得到的结果是8,就都输出“youscore:

B”*/

break;/*如果上面语句执行完就,结束switch语句*/

case7:

printf("youscore:

C\n");/*如果上面表达式得到的结果是7,就都输出“youscore:

C”*/

break;/*如果上面语句执行完就,结束switch语句*/

case6:

printf("youscore:

D\n");/*如果上面表达式得到的结果是6,就都输出“youscore:

D”*/

break;/*如果上面语句执行完就,结束switch语句*/

case5:

case4:

case3:

case2:

case1:

case0:

printf("youscore:

E\n");/*如果上面表达式得到的结果是5,4,3,2,1,就都输出“youscore:

E”*/

break;/*如果上面语句执行完就,结束switch语句*/

}

else/*这个else与最上面的if语句(判断成绩是否在于0~100之间的)配套,判断输入的数是否在100以外或者是在0以下*/

printf("哥你输入有误啊!

");/*如果上面条件成立就提示你输出有误*/

getchar();

getchar();

}

7、共有1000瓶汽水,每喝完一瓶得到一个空瓶子,每3个空瓶子又能换1瓶汽水,喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩多少个空瓶子?

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

intx=1000,y=0,z=0;/*定义变量X,Y,Z(之前汽水数量为X并赋初值为1000,空瓶子的数量为Y,喝掉汽水的总数量为Z)*/

while(x>0)/*当X大于0时进行循环*/

{

x--;/*当每一次喝掉一瓶汽水就从X中减去1*/

y++;/*当每一次喝掉一瓶汽水,空瓶子就加1*/

z++;/*当每一次喝掉一瓶汽水,喝掉汽水的总数量就加1*/

if(y==3)/*如果空瓶子的数量达到3个时,就可以用3个空瓶子去换一瓶汽水*/

{

x++;/*用3个空瓶子去换一瓶汽水,所以汽水的数量又得加1*/

y=0;/*当用3个空瓶子换了汽水之后,空瓶子的数量就为0了*/

}

}

printf("共%d,空%d\n",z,y);/*输出共喝了多少瓶汽水及最后乘多少个空瓶子*/

getchar();

getchar();

}

8、每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元买100只鸡,请问有哪些可能?

(每种鸡的数量都可以为0)

#include/*头文件*/

voidmain()/*主函数*/

{

intx=0,y=0,z=0;/*定义三个变量x(公鸡),y(母鸡),z(小鸡);并且每个都赋初值为0*/

for(x=0;x<=25;x++)/*X的初值为0,可是X的最大值只能到25(因为公鸡是4元,25只就100元,)所以只能在这个范围内取值,X的值累加*/

{

for(y=0;y<=33;y++)/*Y的初值为0,可是Y的最大值只能到33(因为母鸡是3元,33只就99元,)所以只能在这个范围内取值,Y的值累加*/

{

z=100-x-y;/*前面确定的X与Y的取值范围,后面Z就等于总数减去前面两项,所得到的*/

if(4*x+3*y+0.5*z==100)/*前面三个循环确定了X,Y,Z值的范围,如果表达式成立,则运行下列输出结果*/

printf("母鸡数为%d:

公鸡数为%d:

小鸡数为%d:

\n",x,y,z);/*输出每一次满足条件的结果。

*/

}

}

getchar();

getchar();

}

9、输出9*9乘法表

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

inti,j,result;/*定义三个变量i(用来控制行数),j(用来控制列数),result(用来存乘积)*/

for(i=1;i<=9;i++)/*给i赋初始值为1,当i小等于9时,i递增*/

{for(j=1;j<=i;j++)/*给j赋初始值为1,当j小等于i时,j递增;j的循环次数由i来决定*/

{

result=i*j;/*当i与j每一次进行取值时,把其值相乘得到的结果赋给result*/

printf("%d*%d=%-3d",i,j,result);/*将i乘j的值按左对齐,占3位的形式输出*/

}

printf("\n");/*当每执行完一次内循环之后就输出一个换行*/

}

getchar();

getchar();

}

10、设计一个程序,从键盘输入3个整数,输出其中不大不小的那个数,输出宽度为五位。

#include/*头文件*/

voidmain()/*主函数*/

{

intX(intx,inty,intz);/*对X函数的声明*/

inta,b,c,d;/*定义三个整型变量a,b,c,d*/

printf("请输入三个值\n");/*提示用户从键盘输入三个数*/

scanf("%d%d%d",&a,&b,&c);/*从键盘输入三个数分别存入a,b,c中*/

d=X(a,b,c);/*对X函数的调用*/

printf("中间值为%5d\n",d);/*输出调用函数后的结果,所得到的中间那个数*/

getchar();

getchar();

}

intX(intx,inty,intz)/*定义X函数*/

{

intm;/*定义一个整型变量m*/

if(x

elseif(x>y&&x>z&&y>z)m=y;/*当x大于y而且x又要大于z和y又要大于z时,则y就为当中值*/

elseif(x>y&&x

elseif(xz&&y>z)m=x;/*当x小于y而且x又要大于z和y又要大于z时,则x就为当中值*/

elseif(xz)m=z;/*当x小于y而且x又要小于z和y又要大于z时,则z就为当中值*/

elseif(x>y&&x>z&&y

return(m);/*将得到的结果返回出去*/

}

11、编程求1+3+5+7+……95+97+99的和

#include/*头文件*/

intmain()/*主函数*/

{

inti,m=0;/*定义两个变量i(用来控制加数的循环),m(用来得到最后的累加和)*/

for(i=1;i<100;i=i+2)/*i的初值为1,当i小于100时;i累计加2*/

m=m+i;/*将100以内的的奇数和累加起来*/

printf("m=%d\n",m);/*将得到最后的结果输出*/

getchar();

getchar0;

}

12、输出100-200之间,能被3整除但不能被7整除的数

#include/*头文件*/

intmain()/*主函数*/

{

intn,j=0;/*定义两个变量n(用来控制循环),j(用来控制每行输出的个数及数量)*/

for(n=100;n<=200;n++)/*变量n的初值为100,终值为200,在这个数之间判断能被3整除但不能被7整除的每一个数,每次判断一个数之后累加*/

{

if(n%3==0&&n%7!

=0)/*如果这个数能被3整除,但不能被7整除*/

{

printf("n=%-8d",n);/*则按左对齐,占8个宽度,输出这个数*/

j++;/*每次输出一个数之后,j的值就加1*/

if(j%5==0)/*当j等于5或是5的倍数时(就是当j对5取余等于0时)*/

printf("\n");/*则输出换行*/

}

}

printf("个数=%d\n",j);/*输出总共有多少个数*/

getchar();

getchar();

}

13、有100匹马,驼100担货,大马担3担,中马担2担,两匹小马担一担,共有多少种驼法。

#include"stdio.h"/*头文件*/

voidmain()/*主函数*/

{

intX,Y,Z;/*定义三个变量X(表示大马),Y(表示中马),Z(表示小马)*/

for(X=0;X<=33;X++)/*X的初值为0,可是X的最大值只能到33(因为一匹大马担3担,33匹就是99担,总数才100担,)所以只能在这个范围内取值,X的值累加*/

{

for(Y=0;Y<=50;Y++)/*Y的初值为0,可是Y的最大值只能到50(因为一匹中马担2担,50匹就是100担,总数才100担,)所以只能在这个范围内取值,Y的值累加*/

{

Z=100-X-Y;/*前面确定的X与Y的取值范围,后面Z就等于总数减去前面两项,所得到的*/

{

if(3*X+2*Y+0.5*Z==100)/*前面三个循环确定了X,Y,Z值的范围,如果表达式成立,则运行下列输出结果*/

printf("大马%d,中马%d,小马%d\n",X,Y,Z);/*将每一次符合条件的结果输出来*/

}

}

}

getchar();

getchar();

}

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

当前位置:首页 > 小学教育 > 小学作文

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

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