c语言经典习题与解答Word文档下载推荐.docx
《c语言经典习题与解答Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言经典习题与解答Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
请输入卷面成绩:
"
mark);
scanf("
%d"
&
mark);
getchar();
请输入是否获奖,是y,否n:
);
m=getchar();
if(m=='
y'
)
mark=mark+5;
if(mark>
100)
mark=100;
你的最后成绩:
%d\n"
}
2.编写一个程序,用户输入年份及月份两个数据,程序输出该月份的天数。
(提示:
对2月要考虑是否闰年,闰年年份要么能被4整除且不能被100整除,要么能被400整除,除此之外都不是闰年)。
intyear,month;
intdays(intyear,intmonth)
{intk;
if((year%4==0)&
&
(year%100!
=0)||(year%400==0))
{
if(month==2)k=1;
if(month==4||month==6||month==9||month==11)k=2;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)k=3;
else
if(month==2)k=4;
if(month==4||month==6||month==9||month==11)k=5;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)k=6;
switch(k)
case1:
29days\n"
break;
case2:
30days\n"
case3:
31days\n"
case4:
28days\n"
case5:
case6:
return0;
pleaseinputtheyearandmonth:
year,month);
%d%d"
year,&
month);
days(year,month);
3.求一元二次方程ax2+bx+c=0的根。
(要考虑a、b、c三个系数不同的取值)
#include<
stdio.h>
math.h>
floata,b,c,delta;
printf("
inputthethreecoefficientsoftheequation(A,B,C):
"
scanf("
%f%f%f"
a,&
b,&
c);
if(a!
=0){
delta=b*b-4*a*c;
if(delta>
0)
printf("
x1=%f,x2=%f\n"
(-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a));
else
if(delta==0)
printf("
x1=x2=%f\n"
-b/(2*a));
else
x1=%f+%fi,x2=%f-%fi\n"
-b/(2*a),sqrt(-delta)/(2*a),-b/(2*a),sqrt(-delta)/(2*a));
}else
if(b!
=0)
x=%f\n"
-c/b);
if(c==0)
0=0!
\n"
%f=0\n"
c);
getchar();
4.学校曾经组织一次“程序设计大奖赛”,规定本学期“程序设计”课程的成绩可以根据大奖赛的成绩适度加分。
加分规则是:
参赛者加5分,三等奖加15分,二等奖加20分,一等奖加30分,总分不超过100分。
编程序,输入某同学的考试成绩,回答在竞赛中获奖等级,计算并输出该某同学的程序设计课成绩。
intwin;
voidmain(void){
输入你的考试成绩:
请选择你参加程序设计大奖赛情况\n"
(0:
未参赛,1:
参赛,2:
三等奖,3:
二等奖,4:
一等奖):
win);
switch(win){
case0:
break;
case1:
mark=mark+5;
case2:
mark=mark+15;
case3:
mark=mark+20;
case4:
mark=mark+30;
}
if(mark>
100)
mark=100;
你的最后成绩是:
getchar();
5.高速公路每公里的收费标准按不同种类汽车如下:
小汽车(car)0.50元
卡车(truck)1.00元
大客车(bus)1.50元
编程序,为某高速公路收费站计算各种车辆的收费额。
#include"
enumtsort{car,truck,bus}sort;
inti;
floatmileage,price;
voidmain(){
printf("
pleasechoose(0.car1.truck2.bus):
);
scanf("
&
i);
switch(i){
case0:
sort=car;
break;
case1:
sort=truck;
case2:
sort=bus;
pleaseinputmileage:
scanf("
%f"
mileage);
switch(sort){
casecar:
price=0.50;
casetruck:
price=1.00;
casebus:
price=1.50;
printf("
cost=%.2f\n"
price*mileage);
}
6.设计一个模拟单步计算器的程序,设该计算器只能作加、减、乘、除运算。
用户输入形如
m#n
的算式,其中m、n为运算数,#为运算符。
(需考虑运算符不合法,及除数为0的情况)
floata,b;
charw;
pleaceinpute#e:
a);
%c"
w);
b);
switch(w){
case'
+'
:
a=a+b;
break;
-'
a=a-b;
*'
a=a*b;
/'
a=a/b;
%.2f\n"
a);
7.编写程序,输入一个4位自然数n,判断n是否是降序数。
降序数是指对于n=d1d2…dk有:
d1≥d2≥…≥dk
intnumber,a,b,c,d;
pleaseinputanumber:
number);
number);
a=number/1000;
b=(number/100)%10;
c=(number%100)/10;
d=number%10;
if((a>
=b)&
(b>
=c)&
(c>
=d))
这个数是降序数"
else
这个数不是降序数"
8.编写程序,输入一个5位自然数n,判断n是否对称数。
对称数是指正序和反序读都相等的整数,如96769为对称数。
booljudge(intnumber[]){
inti,j;
j=0;
while(number[j+1]!
=0)j++;
i=0;
while(i<
j){
if(number[i]!
=number[j])
returnfalse;
i++;
j--;
returntrue;
main(){
inti,number[5];
boolflag;
pleaseanumber:
for(i=0;
i<
=4;
i++){
number[i]);
flag=judge(number);
if(flag=true)printf("
y"
elseprintf("
n"
9.编写程序,判断给定的3位数是否为Armstrong数。
Armstrong数是指其值等于它每位数字立方和的数,如153就是一个Armstrong数。
math.h"
intnumber,a,b,c;