浙江大学城市学院程序设计二上机答.docx
《浙江大学城市学院程序设计二上机答.docx》由会员分享,可在线阅读,更多相关《浙江大学城市学院程序设计二上机答.docx(11页珍藏版)》请在冰豆网上搜索。
浙江大学城市学院程序设计二上机答
5周
计算函数P(n,x)
输入一个正整数repeat(0输入一个整数n(n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。
[1(n=0)
p(n,x)=[x(n=1)
[((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n(n>1)
例:
括号内是说明
输入
3(repeat=3)
00.9(n=0,x=0.9)
1-9.8(n=1,x=-9.8)
101.7(n=10,x=1.7)
输出
p(0,0.90)=1.00
p(1,-9.80)=-9.80
p(10,1.70)=3.05
#include
doublep(intn,doublex);
intmain(void)
{
intrepeat,ri;
intn;
doublex,result;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++)
{
scanf("%d%lf",&n,&x);
result=p(n,x);
printf("p(%d,%.2lf)=%.2lf\n",n,x,result);
}
}
doublep(intn,doublex)
{
doublet;
if(n==0)t=1;
elseif(n==1)
t=x;
else
t=((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n;
returnt;
}
10016十进制转换二进制
输入一个正整数repeat(0输入1个正整数n,将其转换为二进制后输出。
要求定义并调用函数dectobin(n),它的功能是输出n的二进制。
例如,调用dectobin(10),输出1010。
输出语句:
printf("%d");
例:
括号内是说明
输入:
3(repeat=3)
15
100
0
输出:
1111
1100100
0
#include"stdio.h"
intmain(void)
{
intri,repeat;
intn;
voiddectobin(intn);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
dectobin(n);
printf("\n");
}
}
voiddectobin(intn)
{
inta[32],i;
if((n==0)||(n==1)){
printf("%d",n);
return;
}
else{
i=0;
while(n!
=0)
{
a[i++]=n%2;
n=n/2;
}
}
while(i>0)
printf("%d",a[--i]);
}
#include"stdio.h"
intmain(void)
{
intri,repeat;
inti,n;
voiddectobin(intn);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
dectobin(n);
printf("\n");
}
}
voiddectobin(intn)
{
if(n==1||n==0){
printf("%d",n);
return;
}
dectobin(n/2);
printf("%d",n%2);
}
10017递归函数程序设计求Fabonacci数列
输入一个正整数repeat(0用递归方法编写求Fabonacci数列项的函数,返回值为长整型,并写出相应的主函数。
Fabonacci数列的定义为:
f(n)=f(n-2)+f(n-1)(n>=2)其中f(0)=0,f
(1)=1。
例:
(括号内为说明)
输入
3(repeat=3)
0
1
6
输出
fib(0)=0
fib
(1)=1
fib(6)=8
#include
longfib(intn);
intmain(void)
{
intn,ri,repeat;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
printf("fib(%d)=%ld\n",n,fib(n));
}
}
longfib(intn)
{
intt;
if(n==0)t=0;
elseif(n==1)t=1;
elset=fib(n-2)+fib(n-1);
returnt;
}
10019改错题error10_1.cpp
用递归函数计算x^n(n>=1)的值。
例:
(括号内为说明)
输入
23(x=2,n=3)
输出
Root=8.00
#include
doublefun(intn,doublex);
intmain(void)
{
intn;
doublex,root;
scanf("%lf%d",&x,&n);
root=fun(n,x);
printf("Root=%0.2f\n",root);
}
doublefun(intn,doublex)
{
doubler;
if(n==1)r=x;
elser=x*fun(n-1,x);
returnr;
}
10022编程题
输入一个正整数repeat(0编写程序,输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。
若输入月份错误,输出提示信息。
输入输出示例:
括号内为说明
输入:
3(repeat=3)
5
9
14
输出:
May
September
Wronginput!
#include
voidmain()
{
intri,repeat;
intmonth;
char*month_name[]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&month);
if((month>=1)&&(month<=12))
puts(month_name[month]);
else
printf("Wronginput!
");
}
}
10026指定位置输出字符串
编写一个程序,输入一个字符串后再输入2个字符,输出此字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。
用返回字符指针的函数实现。
例:
(括号内为说明)
输入
program
r
g
输出
rog
#include
charnewstr[80];
voidmain()
{
charstr[80],c_begin,c_end;
char*fun(char*p,charc_begin,charc_end);
scanf("%s",str);
getchar();
c_begin=getchar();
getchar();
c_end=getchar();
puts(fun(str,c_begin,c_end));
}
char*fun(char*p,charc_begin,charc_end)
{
char*t;
t=newstr;
while(*(p++)!
=c_begin);
p--;
while(*p!
=c_end)
*(t++)=*(p++);
*(t++)=*(p++);
*t='\0';
returnnewstr;
}
10027藏尾诗
编写一个解密藏尾诗的程序。
输入一首藏尾诗(假设只有4句),输出其藏尾的真实含义。
用返回字符指针的函数实现。
例:
输入:
悠悠田园风
然而心难平
兰花轻涌浪
兰香愈幽静
输出:
风平浪静
#include
#include
charp[16];
voidmain()
{
char*change(chars[4][20]);
chars[4][20];
inti;
for(i=0;i<4;i++)
scanf("%s",s[i]);
puts(change(s));
}
char*change(chars[4][20])
{
inti,t,len;
t=0;
for(i=0;i<4;i++){
len=strlen(s[i]);
p[t++]=s[i][len-2];
p[t++]=s[i][len-1];
}
p[t]='\0';
return(p);
}