程序设计第一学期题库Word下载.docx
《程序设计第一学期题库Word下载.docx》由会员分享,可在线阅读,更多相关《程序设计第一学期题库Word下载.docx(69页珍藏版)》请在冰豆网上搜索。
intmoney,year;
doubleinterest,rate;
%d%d%lf"
money,&
year,&
rate);
interest=money*pow((1+rate),year)-money;
interest=%.2f\n"
interest);
3.计算分段函数
输入一个正整数repeat(0<
repeat<
10),做repeat次下列运算:
输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt函数求平方根,
调用pow函数求幂。
当x>
=0时,f(x)=x^0.5,当x小于0时,f(x)=(x+1)^2+2x+1/x。
括号内是说明
3(repeat=3)
10
-0.5
f(10.00)=3.16
f(-0.50)=-2.75
f(0.00)=0.00
intrepeat,ri;
doublex,y;
&
repeat);
for(ri=1;
ri<
=repeat;
ri++)
scanf("
%lf"
x);
if(x<
0)
y=pow((x+1),2)+2*x+1/x;
else
y=sqrt(x);
printf("
f(%.2f)=%.2f\n"
x,y);
}
4.计算两个整数的和、差、积、商与余数
输入2个整数num1和num2,计算并输出它们的和、差、积、商与余数。
输出两个整数的余数可以用printf("
%d%%%d=%d\n"
num1,num2,num1%num2);
53(num1=5,num2=3)
5+3=8
5-3=2
5*3=15
5/3=1
5%3=2
intnum1,num2;
%d%d"
num1,&
num2);
%d+%d=%d\n"
num1,num2,num1+num2);
%d-%d=%d\n"
num1,num2,num1-num2);
%d*%d=%d\n"
num1,num2,num1*num2);
%d/%d=%d\n"
num1,num2,num1/num2);
num1,num2,num1%num2);
5.计算旅途时间(选作)
输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。
有效的时间范围是0000到2359(前两位表示小时,后两位表示分钟),
不需要考虑出发时间晚于到达时间的情况。
7121411(出发时间是7:
12,到达时间是14:
11)
Thetrainjourneytimeis6hours59minutes.
inttime1,time2,hour,minutes;
time1,&
time2);
hour=(time2-time1)/100;
minutes=time2-time1-100*hour-40;
Thetrainjourneytimeis%dhours%dminutes.\n"
hour,minutes);
6.数字加密(选作)
输入一个四位数,将其加密后输出。
方法是将该数每一位上的数字加9,
然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,
百位和个位上的数字互换,组成加密后的新四位数。
1257
Theencryptednumberis4601(每一位上的数字加9除以10取余后,得0146,交换后得到4601)
intdigit1,digit2,digit3,digit4,newnum,number;
number);
digit1=number%10;
digit2=(number%100-digit1)/10;
digit3=(number%1000-digit2*10-digit1)/100;
digit4=(number%10000-digit3*100-digit2*10-digit1)/1000;
digit4=(digit4+9)%10;
digit3=(digit3+9)%10;
digit2=(digit2+9)%10;
digit1=(digit1+9)%10;
newnum=digit3+digit4*10+digit1*100+digit2*1000;
Theencryptednumberis%d\n"
newnum);
3实验2.3指定次数的循环
1.求m+(m+1)+(m+2)+......+100
输入一个正整数m(0<
=m<
=100),计算表达式m+(m+1)+(m+2)+......+100的值。
输入输出
0(计算0+1+2+...+100)sum=5050
10(计算10+11+12+...+100)sum=5005
50(计算50+51+52+...+100)sum=3825
{
inti,m,sum;
for(ri=1;
{
m);
sum=0;
for(i=m;
i<
=100;
i++)
sum=sum+i;
sum=%d\n"
sum);
}
2.求1/m+1/(m+1)+1/(m+2)+......+1/n
输入2个正整数m和n(m<
=n),计算表达式1/m+1/(m+1)+1/(m+2)+......+1/n的值,
输出时保留3位小数。
515(计算1/5+1/6+1/7+...+1/15)sum=1.235
1020(计算1/10+1/11+1/12+...+1/20)sum=0.769
13(计算1+1/2+1/3)sum=1.833
inti,m,n;
doublesum;
m,&
n);
=n;
sum=sum+1.0/i;
sum=%.3f\n"
}
3.求1+1/3+1/5+......+1/n
输入一个正整数n,计算表达式1+1/3+1/5+......的前n项之和,输出时保留6位小数。
2(repeat=2)
5(计算1+1/3+1/5+1/7+1/9)sum=1.787302
23(计算1+1/3+1/5+...+1/45)sum=2.549541
inti,n;
for(i=1;
sum=sum+1.0/(2*i-1);
sum=%.6f\n"
4.求1-1/4+1/7-1/10+……的前n项之和
读入一个正整数n,计算1-1/4+1/7-1/10+……的前n项之和,输出时保留3位小数。
3sum=0.893
10sum=0.819
intflag,i,n;
doubleitem,sum;
flag=-1;
flag=-flag;
item=3*i-2;
sum=sum+flag*1.0/item;
}
5.求m!
+n!
输入2个正整数m和n,计算m!
+n!
。
输入:
输出:
14(m=1,n=4)1!
+4!
=25
38(m=3,n=8)3!
+8!
=40326
#include"
stdio.h"
doublefm,fn;
fm=1;
fn=1;
=m;
fm=fm*i;
fn=fn*i;
%d!
+%d!
=%.0f\n"
m,n,fm+fn);
6.求x的n次幂
读入1个实数x和正整数n(n<
=50),计算并输出x的n次幂(保留2位小数),不允许调用pow函数求幂。
1.52(x=1.5,n=2)2.25
27(x=2,n=7)128.00
doublemypow,x;
%lf%d"
x,&
mypow=1;
mypow=mypow*x;
%.2f\n"
mypow);
4实验2.4使用函数
1.生成3的乘方表
输入一个正整数n,生成一张3的乘方表,输出3^0~3^n的值,可调用幂函数计算3的乘方。
输出使用语句printf("
pow(3,%d)=%.0f\n"
i,mypow);
3(n=3)
pow(3,0)=1
pow(3,1)=3
pow(3,2)=9
pow(3,3)=27
doublemypow;
for(i=0;
mypow=pow(3,i);
2.生成阶乘表
输入一个正整数n,生成一张阶乘表,输出1!
~n!
的值,
要求定义和调用函数fact(n)计算n!
,函数类型为double。
i,myfact);
1!
=1
2!
=2
3!
=6
doublemyfact;
doublefact(intn);
for(i=1;
myfact=fact(i);
doublefact(intn)
inti;
myfact=1;
myfact=myfact*i;
returnmyfact;
3.使用函数求n!
/(m!
*(n-m)!
)
=n),计算n!
*(n-m)!
)。
要求定义并调用函数fact(n)计算n的阶乘,其中n的类型是int,函数类型是double。
例:
27(m=2,n=7)result=21
512(m=5,n=12)result=792
doublefact(intn);
intm,n;
doubles;
s=1;
s=s*(fact(n))/(fact(m)*fact(n-m));
result=%.0f\n"
s);
doubleproduct;
product=1;
product=product*i;
returnproduct;
4.求100^0.5+101^0.5+……+1000^0.5
计算100^0.5+101^0.5+……+1000^0.5的值(保留2位小数),可调用sqrt函数计算平方根。
sum=20435.99
sum=0;
for(i=100;
=1000;
sum=sum+sqrt(i);
sum=%.2f\n"
5实验3分支结构程序设计
1.求分段函数的值
-1x<
0
y=sign(x)=0x=0
1x>
3(repeat=3)
10(x=10)sign(10)=1(x=10时y=1)
0(x=0)sign(0)=0(x=0时y=0)
-98(x=-98)sign(-98)=-1(x=-98时y=-1)
intx,y;
y=-1;
elseif(x==0)
y=0;
y=1;
sign(%d)=%d\n"
2.分类统计字符
输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
Reold123?
letter=5,blank=1,digit=3,other=1
charc;
intblank,digit,i,letter,other;
blank=digit=letter=other=0;
for(i=1;
i<
=10;
i++)
c=getchar();
if((c>
='
a'
&
c<
z'
)||(c>
A'
Z'
))
letter++;
elseif(c>
0'
9'
digit++;
elseif(c=='
'
blank++;
other++;
letter=%d,blank=%d,digit=%d,other=%d\n"
letter,blank,digit,other);
3.显示五级记分制成绩所对应的百分制成绩区间(使用switch)
输入一个正整数repeat(0<
10),做repeat次下列运算:
输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。
五级制成绩对应的百分制成绩区间为:
A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),
如果输入不正确的成绩,显示"
Invalidinput"
输出使用以下语句:
printf("
90-100\n"
);
80-89\n"
70-79\n"
60-69\n"
0-59\n"
Invalidinput\n"
6ABCDEj(repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)
90-100
80-89
70-79
60-69
0-59
Invalidinput(输入数据不合法)
charch;
ch=getchar();
switch(ch)
case'
:
printf("
break;
B'
C'