C程序题库课案.docx
《C程序题库课案.docx》由会员分享,可在线阅读,更多相关《C程序题库课案.docx(152页珍藏版)》请在冰点文库上搜索。
C程序题库课案
C程序题库
1、顺序结构
【程序1】
题目:
输入2个整数,求两数的平方和并输出。
程序代码:
#include
void main()
{ int a ,b,s;
printf("please input a,b:
\n");
scanf("%d%d”,&a,&b);
s=a*a+b*b;
printf("the result is %d\n",s);
}
【程序2】
题目:
有函数F(x)=(x+1)2和G(x)=2x+1,输入X值计算F(G(x))的值。
#include
#include
voidmain()
{
floatx,y;
printf("Pleaseinputx:
");
scanf("%f",&x);
y=2*x+1;
y=(float)pow(y+1,2);
printf("Theresultis:
%f\n",y);
}
【程序3】
题目:
任意输入三个字符,要求首先按逆序输出,然后同行原序输出。
程序源代码:
#include
voidmain()
{
chara,b,c;
printf("Pleaseinput3characters:
");
scanf("%c%c%c",&a,&b,&c);
printf("%c%c%c",c,b,a);
printf("%c%c%c",a,b,c);
printf("\n");
}
【程序4】
题目:
求圆面积。
根据输入的半径,计算并输出圆的面积。
1.程序分析:
圆面积公式s=3.1415*r*r,注意r和s应该为float类型。
2.程序源代码:
#include
voidmain()
{
floatr;
floatPI=3.1415f;
floats;
printf("请输入圆的半径:
");
scanf("%f",&r);
s=PI*r*r;
//整数的格式占位符%d,浮点数的格式占位符%f
printf("半径为:
%f的圆的面积是:
%f",r,s);
}
【程序5】
题目:
求长方形面积。
根据输入的长和宽,计算长方形的面积
1.程序分析:
2.程序源代码:
#include
voidmain()
{
intchang,kuan;//声明两个变量,存放长和宽
ints;
printf("请输入长方形的长:
");
scanf("%d",&chang);//要求用户输入长方形的长
printf("请输入长方形的宽:
");
scanf("%d",&kuan);
s=chang*kuan;
printf("长=%d,宽=%d长方形的面积是:
%d",chang,kuan,s);
}
二、分支结构
【程序1】
题目:
输入两个数,把大数打印出来。
#include
voidmain()
{
inta,b,max;
printf("请输入两个整数:
");
scanf("%d%d",&a,&b);//输入两个数
if(a>b)//判断大小
{
max=a;
}
else
{
max=b;
}
printf("最大的数是%d",max);//打印大数
}
【程序2】
题目:
输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:
我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值
进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能
使x最小。
2.程序源代码:
#include"stdio.h"
main()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{t=x;x=y;y=t;}/*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("smalltobig:
%d%d%d\n",x,y,z);
}
【程序3】
题目:
一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
1.程序分析:
利用对10n整除和取余运算,将一个5位十进制数拆分出万位、千位、十位、个位。
2.程序源代码:
#include"stdio.h"
#include"conio.h"
main()
{
longge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;//得出万位
qian=x%10000/1000;//得出千位
shi=x%100/10;//得出十位
ge=x%10;//得出个位
if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
printf("thisnumberisahuiwen\n");
else
printf("thisnumberisnotahuiwen\n");
}
【程序4】
题目:
利用条件运算符的嵌套来完成此题:
学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:
(a>b)?
a:
b这是条件运算符的基本例子。
2.程序源代码:
#include"stdio.h"
main()
{
intscore;
chargrade;
printf("pleaseinputascore\n");
scanf("%d",&score);
grade=score>=90?
'A':
(score>=60?
'B':
'C');
printf("%dbelongsto%c",score,grade);
getch();
}
【程序5】
题目:
输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:
以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,
特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
#include"stdio.h"
main()
{
intday,month,year,sum,leap;
printf("\npleaseinputyear,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case1:
sum=0;break;
case2:
sum=31;break;
case3:
sum=59;break;
case4:
sum=90;break;
case5:
sum=120;break;
case6:
sum=151;break;
case7:
sum=181;break;
case8:
sum=212;break;
case9:
sum=243;break;
case10:
sum=273;break;
case11:
sum=304;break;
case12:
sum=334;break;
default:
printf("dataerror");break;
}
sum=sum+day;/*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!
=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("Itisthe%dthday.",sum);
}
【程序6】
题目:
企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提
成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高
于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金
总数?
1.程序分析:
请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:
#include"stdio.h"
main()
{
longinti;
intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
elseif(i<=200000)
bonus=bonus1+(i-100000)*0.075;
elseif(i<=400000)
bonus=bonus2+(i-200000)*0.05;
elseif(i<=600000)
bonus=bonus4+(i-400000)*0.03;
elseif(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
【程序7】
题目:
给一个不多于5位的正整数,要求:
一、求它是几位数,二、逆序打印出各位数字。
1.程序分析:
利用对10n整除和取余运算分解出10进制数的每一位数。
2.程序源代码:
#include"stdio.h"
#include"conio.h"
main()
{
longa,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if(a!
=0)printf("thereare5,%ld%ld%ld%ld%ld\n",e,d,c,b,a);
elseif(b!
=0)printf("thereare4,%ld%ld%ld%ld\n",e,d,c,b);
elseif(c!
=0)printf("thereare3,%ld%ld%ld\n",e,d,c);
elseif(d!
=0)printf("thereare2,%ld%ld\n",e,d);
elseif(e!
=0)printf("thereare1,%ld\n",e);
}
【程序8】
题目:
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
判断第二个字母。
1.程序分析:
用switch语句比较好,如果第一个字母一样,则判断第二个字母。
2.程序源代码:
#include"stdio.h"
voidmain()
{
charletter;
printf("pleaseinputthefirstletterofsomeday\n");
while((letter=getch())!
='Y')/*当所按字母为Y时才结束*/
{
switch(letter)
{
case'S':
printf("pleaseinputsecondletter\n");
if((letter=getch())=='a')
printf("Saturday\n");
elseif((letter=getch())=='u')
printf("Sunday\n");
elseprintf("dataerror\n");
break;
case'F':
printf("Friday\n");break;
case'M':
printf("Monday\n");break;
case'T':
printf("pleaseinputsecondletter\n");
if((letter=getch())=='u')
printf("Tuesday\n");
elseif((letter=getch())=='h')
printf("Thursday\n");
elseprintf("dataerror\n");
break;
case'W':
printf("wednesday\n");break;
default:
printf("dataerror\n");
}
}
}
【程序9】
题目:
输入一个圆半径(r),当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。
1.程序分析:
2.程序源代码:
#include
#define PI 3.14
void main()
{ float r ,s , l;
printf("please input r:
\n");
scanf("%f”,&r);
if (r>=0)
{s=pi*r*r;
l=2*i*r
printf("the area is %f\n",s);
printf("the circumference is %f\n",l);
}
else printf("input error!
\n");
}
【程序10】
题目:
函数y=f(x)可表示为:
2x+1 (x<0)
y= 0 (x=0)
2x-1 (x>0)
编程实现输入一个x值,输出y值。
1.程序分析:
2.程序源代码:
#include
void main()
{ int x,y;
scanf(“%d”,&x);
if(x<0) y=2*x+1;
else if(x>0) y=2*x-1;
else y=0;
printf(“%d”,y);
}
【程序11】
题目:
编写一个程序,从4个整数中找出最小的数,并显示此数。
#include
void main( )
{int a,b,c,d,t;
scanf (“%d,%d,%d,%d ”,&a,&b,&c,&d);
if (a>b)
{t=a; a=b; b=t;}
if (a>c)
{t=a; a=c; c=t;}
if (a>d)
{t=a; a=d; d=t;}
printf (“min = %d \n”,a);
}
【程序12】
题目:
有一函数当x<0时y=1,当x>0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,输出y值。
1.程序分析:
2.程序源代码:
#include
void main()
{int x,y;
scanf("%d",&x);
if (x<0) y=1;
else if(x==0) y=5;
else y=3;
printf("x=%d,y=%d\n",x,y);
}
【程序13】
题目:
从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中
调用该函数)
#include
float max(float x,float y);
void main()
{ float a,b,m;
scanf("%f,%f",&a,&b);
m=max(a,b);
printf("Max is %f\n",m);
}
float max(float x,float y)
{ float temp;
if (xreturn(x);
}
【程序14】
题目:
编一个程序计算一元二次方程的根。
1.程序分析:
2.程序源代码:
#include
#include
voidmain()
{
doublea,b,c,d,x1,x2;
printf("请输入一元二次方程的三个系数:
");
scanf("%lf%lf%lf",&a,&b,&c);
if(a==0)
if(b==0)
if(c!
=0)
printf("方程不成立!
\n");
else
printf("方程有无穷多解!
\n");
else
{
x1=--c/b;
printf("方程解为:
%f\n",x1);
}
else
{
d=b*b-4*a*c;
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("方程有两个不相等的实根,分别为:
%f,%f\n",x1,x2);
}
else
if(d==0)
{
x1=-b/(2*a);
printf("方程有两个相等的实根,为:
%f\n",x1);
}
else
printf("方程无实根!
\n");
}
}
【程序15】
题目:
编程输入一个整数,若为四位正整数则要求正确分离出其个、十、百、千位及中间的两位数并分别输出,如输入的是1234,则输出应该为4、3、2、1、23;否则给出一个出错提示。
1.程序分析:
2.程序源代码:
#include
voidmain()
{
intx,ge,shi,bai,qian,zhongjian;
printf("请输入一个四位正整数:
");
scanf("%d",&x);
if((x<1000)||(x>9999))
printf("所输入的数据不是四位正整数!
\n");
else
{
ge=x%10;
shi=x/10%10;
bai=x/100%10;
qian=x/1000;
zhongjian=bai*10+shi;
printf("个位:
%d,十位:
%d,百位:
%d,千位:
%d,中间两位:
%d\n",ge,shi,bai,qian,zhongjian);
}
}
【程序16】
题目:
某班综合考评,根据参加集体活动的次数加分,规则如下:
参加1次及以下:
加1分;
参加2至3次:
加2分;
参加4至7次:
参加几次加几分;
参加8至10次:
加8分;
参加10次以上:
加10分。
程序运行时输入某人参加活动的次数,则输出其应该加的分数;如果输入为负值,则给出相应提示。
1.程序分析:
2.程序源代码:
#include
voidmain()
{
intcs,jf;
printf("请输入参加活动次数:
");
scanf("%d",&cs);
if(cs<0)
printf("你所输入的活动次数有误!
\n");
else
{
if(cs<=1)
jf=1;
else
if(cs<=3)
jf=2;
else
if(cs<=7)
jf=cs;
else
if(cs<=10)
jf=8;
else
jf=10;
printf("此人参加活动%d次,按规定应该加%d分!
\n",cs,jf);
}
}
【程序17】
题目:
分奖金。
规定公司员工的级别为A、B、C和其他四类,每一类的奖金如下:
A250
B200
C100
其他50
编写程序,任意输入一个员工级别,输出他的奖金。
1.程序分析:
2.程序源代码:
#include
voidmain()
{
charch;//用来存放员工的级别
printf("请输入员工的级别:
");
scanf("%c",&ch);
//按照级别定员工的奖金
switch(ch)
{
case'A':
printf("员工的奖金是:
250元");
break;
case'B':
printf("员工的奖金是:
200元");
break;
case'C':
printf("员工的奖金是:
100元");
break;
default:
printf("员工的奖金是:
50元");
}
}
【程序18】
题目:
评级别。
学生的分数和等级标准如下:
90分到100分优秀
80分到90分良
70分