c语言解题.docx
《c语言解题.docx》由会员分享,可在线阅读,更多相关《c语言解题.docx(15页珍藏版)》请在冰豆网上搜索。
c语言解题
第五次作业:
函数
计算并输
1.自然数的计算编写自己的两个函数,分别求出两个整数的最大公约数和最小的公倍数。
编写一个程序,功能是能够由键盘输入两个整数,并能调用自己编写的函数,出这两个整数的最大公约数和最小公倍数。
#include
voidmain()
{
inta,b,c,d;
scanf("%d%d",&a,&b);
c=ys(a,b);
d=bs(a,b);
printf("a,b的最小公倍数是%d\n最大公约数是%d\n",d,c);
}
intys(intx,inty)
inti;
for(i=x;i>=1;i--)
if(x%i==0&&y%i==0)
return(i);
intbs(intx,inty)
for(i=x;i<=x*y;i++)
if(i%x==0&&i%y==0)
bd
2.字符串连接
请使用字符数组,编写自己的字符串连接函数。
编写一个程序,功能是能够由键盘输入两个字符串,并能调用自己编写的字符串连接函
数,输出新的字符串。
{charIj(charx[],chary[],charz[]);
inti,j;
chara[100],b[100],c[200];
gets(a);
gets(b);
lj(a,b,c);
for(i=0;iprintf("%c",c[i]);printf("\n");}charlj(charx[],chary[],charz[]){inti,j;for(i=0;iz[i]=x[i];for(i=strlen(x);i<=strlen(x)+strlen(y)-1;i++)z[i]=y[i-strlen(x)];}W"C:\Debug\l.exe"abedsfghijkinnapab&defghijkinnapPressanykeytocontinue^3.三角函数请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。台劳级数为:357xxxxsinx=—————-——-...1!3!5!7!0246xxxxcosx-++1!2!4!6!舍去的值由自己定义一个最小值。请用自己的函数计算下面两个表达式的值,并且与VC++提供的标准函数之间的误差进行比较。请输入结果。—C0sc0y初2E)y=2*sinxsirxcosc-coSx,(x=450)#include#ineludevoidmain(){floats(floatx);floatc(floatx);floata,b,e,d;a=3.141592/3;d=3.141592/4;b=sqrt((1-c(a))/2);e=2*s(d)*s(d)+s(d)*c(d)-c(d)*c(d);printf("%f\n%f\n",b,e);}floats(floatx){inti;floaty=0,s=1/x,t=1/2,w;for(i=1;w>1e-6||w<-1*1e-6;i++){s=x*x*s;t=i*(i+1)*t;w=s/t;y=y+w;w=-1*w;}return(y);}floatc(floatx){inti;floaty=0,s=1/(x*x),t=1/2,w;for(i=1;w>1e-6||w<-1*1e-6;i++){s=x*x*s;t=i*(i+1)*t;w=s/t;y=y+w;w=-1*w;}return(y);}4.弦截法解方程32用弦截法求解方程f(x)=x3-5x2+16x-80=0的根。要求使用和编写如下的函数:32代表f(x)=x3-5x2+16x-80的值#includevoidmain(){floatroot(floatx1,floatx2);floatx1,x2,x;do{scanf("%f%f",&x1,&x2);}while(f(x1)*f(x2)>0);x=root(x1,x2);printf("therootis%f",x);}floatf(floatx){floaty;y=x*x*x-5*x*x+16*x-80;return(y);}floatxpoint(floatx1,floatx2){floaty;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));returny;}floatroot(floatx1,floatx2){floatx;do{x=xpoint(x1,x2);if(f(x)*f(x1)<0)x2=x;elsex1=x;}while(fabs(f(x))>=1e-6);return(x);}5.最长单词编写一个自己的函数,能够将一个字符串中最长的单词查找出来。编写一个程序,功能是能够由键盘输入一行字符,并能调用自己编写的最长单词查找函数,输出这个单词。#includevoidmain(){chara[1000],b[1000][1000];inti,k,f;for(i=0;i<1000;i++)scanf("%c",&a[i]);b[k][f]=longest(a);for(i=0;iprintf("%c",b[k][i]);}charlongest(chara[]){inti,j,f,k,n,y;charx[1000],b[1000][1000];n=strlen(a);if(a[0]!=''){for(i=0,f=0;i{if(a[i]=='')break;else{b[0][f]=a[i];f++;}x[0]=f;}}else{for(i=0,k=0;i{if(a[i+1]!=''){for(j=i+1,f=0;j{if(a[j]=='')break;else{b[k][f]=a[j];f++;}x[k]=f;}}k++;}y=k;}for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
printf("%c",c[i]);
printf("\n");
charlj(charx[],chary[],charz[])
for(i=0;iz[i]=x[i];for(i=strlen(x);i<=strlen(x)+strlen(y)-1;i++)z[i]=y[i-strlen(x)];}W"C:\Debug\l.exe"abedsfghijkinnapab&defghijkinnapPressanykeytocontinue^3.三角函数请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。台劳级数为:357xxxxsinx=—————-——-...1!3!5!7!0246xxxxcosx-++1!2!4!6!舍去的值由自己定义一个最小值。请用自己的函数计算下面两个表达式的值,并且与VC++提供的标准函数之间的误差进行比较。请输入结果。—C0sc0y初2E)y=2*sinxsirxcosc-coSx,(x=450)#include#ineludevoidmain(){floats(floatx);floatc(floatx);floata,b,e,d;a=3.141592/3;d=3.141592/4;b=sqrt((1-c(a))/2);e=2*s(d)*s(d)+s(d)*c(d)-c(d)*c(d);printf("%f\n%f\n",b,e);}floats(floatx){inti;floaty=0,s=1/x,t=1/2,w;for(i=1;w>1e-6||w<-1*1e-6;i++){s=x*x*s;t=i*(i+1)*t;w=s/t;y=y+w;w=-1*w;}return(y);}floatc(floatx){inti;floaty=0,s=1/(x*x),t=1/2,w;for(i=1;w>1e-6||w<-1*1e-6;i++){s=x*x*s;t=i*(i+1)*t;w=s/t;y=y+w;w=-1*w;}return(y);}4.弦截法解方程32用弦截法求解方程f(x)=x3-5x2+16x-80=0的根。要求使用和编写如下的函数:32代表f(x)=x3-5x2+16x-80的值#includevoidmain(){floatroot(floatx1,floatx2);floatx1,x2,x;do{scanf("%f%f",&x1,&x2);}while(f(x1)*f(x2)>0);x=root(x1,x2);printf("therootis%f",x);}floatf(floatx){floaty;y=x*x*x-5*x*x+16*x-80;return(y);}floatxpoint(floatx1,floatx2){floaty;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));returny;}floatroot(floatx1,floatx2){floatx;do{x=xpoint(x1,x2);if(f(x)*f(x1)<0)x2=x;elsex1=x;}while(fabs(f(x))>=1e-6);return(x);}5.最长单词编写一个自己的函数,能够将一个字符串中最长的单词查找出来。编写一个程序,功能是能够由键盘输入一行字符,并能调用自己编写的最长单词查找函数,输出这个单词。#includevoidmain(){chara[1000],b[1000][1000];inti,k,f;for(i=0;i<1000;i++)scanf("%c",&a[i]);b[k][f]=longest(a);for(i=0;iprintf("%c",b[k][i]);}charlongest(chara[]){inti,j,f,k,n,y;charx[1000],b[1000][1000];n=strlen(a);if(a[0]!=''){for(i=0,f=0;i{if(a[i]=='')break;else{b[0][f]=a[i];f++;}x[0]=f;}}else{for(i=0,k=0;i{if(a[i+1]!=''){for(j=i+1,f=0;j{if(a[j]=='')break;else{b[k][f]=a[j];f++;}x[k]=f;}}k++;}y=k;}for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
z[i]=x[i];
for(i=strlen(x);i<=strlen(x)+strlen(y)-1;i++)z[i]=y[i-strlen(x)];
W"C:
\Debug\l.exe"
abedsfgh
ijkinnap
ab&defghijkinnap
Pressanykeytocontinue^
3.三角函数
请使用台劳级数编写自己的常用三角近似值计算函数,用于自己程序的调用。
台劳级数
为:
357
xxxx
sinx=—————-——-...
1!
3!
5!
7!
0
2
4
6
x
cosx-
+
2!
4!
6!
舍去的值由自己定义一个最小值。
请用自己的函数计算下面两个表达式的值,并且与VC++提供的标准函数之间的误差进
行比较。
请输入结果。
—C0sc0
y初2E)
y=2*sinxsirxcosc-coSx,(x=450)
#inelude
{floats(floatx);
floatc(floatx);
floata,b,e,d;
a=3.141592/3;
d=3.141592/4;b=sqrt((1-c(a))/2);
e=2*s(d)*s(d)+s(d)*c(d)-c(d)*c(d);printf("%f\n%f\n",b,e);
floats(floatx)
floaty=0,s=1/x,t=1/2,w;for(i=1;w>1e-6||w<-1*1e-6;i++)
{s=x*x*s;t=i*(i+1)*t;w=s/t;y=y+w;w=-1*w;
return(y);
floatc(floatx)
floaty=0,s=1/(x*x),t=1/2,w;for(i=1;w>1e-6||w<-1*1e-6;i++){
s=x*x*s;t=i*(i+1)*t;w=s/t;y=y+w;w=-1*w;
4.弦截法解方程
32
用弦截法求解方程f(x)=x3-5x2+16x-80=0的根。
要求使用和编写如下的函数:
代表f(x)=x3-5x2+16x-80的值
{floatroot(floatx1,floatx2);
floatx1,x2,x;
do
{scanf("%f%f",&x1,&x2);
}while(f(x1)*f(x2)>0);x=root(x1,x2);
printf("therootis%f",x);
floatf(floatx)
floaty;y=x*x*x-5*x*x+16*x-80;return(y);
floatxpoint(floatx1,floatx2)
{floaty;y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));returny;
floatroot(floatx1,floatx2)
floatx;
{x=xpoint(x1,x2);if(f(x)*f(x1)<0)x2=x;
elsex1=x;
}while(fabs(f(x))>=1e-6);return(x);
5.最长单词编写一个自己的函数,能够将一个字符串中最长的单词查找出来。
编写一个程序,功能是能够由键盘输入一行字符,并能调用自己编写的最长单词查找函数,输出这个单词。
chara[1000],b[1000][1000];
inti,k,f;
for(i=0;i<1000;i++)
scanf("%c",&a[i]);
b[k][f]=longest(a);
for(i=0;iprintf("%c",b[k][i]);}charlongest(chara[]){inti,j,f,k,n,y;charx[1000],b[1000][1000];n=strlen(a);if(a[0]!=''){for(i=0,f=0;i{if(a[i]=='')break;else{b[0][f]=a[i];f++;}x[0]=f;}}else{for(i=0,k=0;i{if(a[i+1]!=''){for(j=i+1,f=0;j{if(a[j]=='')break;else{b[k][f]=a[j];f++;}x[k]=f;}}k++;}y=k;}for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
printf("%c",b[k][i]);
charlongest(chara[])
inti,j,f,k,n,y;
charx[1000],b[1000][1000];n=strlen(a);
if(a[0]!
='')
for(i=0,f=0;i{if(a[i]=='')break;else{b[0][f]=a[i];f++;}x[0]=f;}}else{for(i=0,k=0;i{if(a[i+1]!=''){for(j=i+1,f=0;j{if(a[j]=='')break;else{b[k][f]=a[j];f++;}x[k]=f;}}k++;}y=k;}for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
if(a[i]=='')
break;
else
b[0][f]=a[i];
f++;
x[0]=f;
for(i=0,k=0;i{if(a[i+1]!=''){for(j=i+1,f=0;j{if(a[j]=='')break;else{b[k][f]=a[j];f++;}x[k]=f;}}k++;}y=k;}for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
if(a[i+1]!
for(j=i+1,f=0;j{if(a[j]=='')break;else{b[k][f]=a[j];f++;}x[k]=f;}}k++;}y=k;}for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
if(a[j]=='')
b[k][f]=a[j];
x[k]=f;
k++;
y=k;
for(k=0;kreturn(b[k][f]);}intMax(inta[],intfirst,intn){intmax;if(first==n-1)returna[first];max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
return(b[k][f]);
intMax(inta[],intfirst,intn)
intmax;
if(first==n-1)returna[first];
max=Max(a,first+1,n);if(maxreturna[first];elsereturnmax;6.勒让德多项式用递归思想求n阶勒让德多项式的值,该多项式为:1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21#includevoidmain(){floatp(floatx,intn);floatx,y;intn;scan("%f%d",&x,&n);y=p(x,n);printf("%f\n",y);}floatp(floatx,intn){floaty;if(n==0)return(1);elseif(n==1)return(x);elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);}T"C:\Debug\8498.exe"|2Q3HeseeeeePressanijkeijtocontirua7.角夫猜想日本数学家角夫提出了如下的猜想:任意一个自然数,比如奇数,将其乘以3再加1;如果是偶数将其除以2;反复运算。请大家编写程序,看会出现什么结果?编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。如输入:请输入自然数n:30输出:自然数n按照角夫猜想运算规则变化的各次结果:154623703510653160804020105168。。。。。。(直到结果收敛,不再变化)#includevoidmain(){intjf(intn);intn,k;do{scan("%d",&n);k=n;jf(n);}while(k!=0);}intjf(intn){intn1;if(n%2==0)n1=n/2,printf("%d",n1);elsen仁n*3+1,printf("%d",n1);if(n1!=n)jf(n1);8.数学黑洞任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。如输入:请输入自然数n:7754输出:自然数n按照以上运算规则变化的各次规律:(7754,4577,3177)(7731,1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。。。。。(直到结果收敛,不再变化)#ineludevoidmain(){intn,max,min;scanf("%d",&n);sort(n);}sort(intn){inta[4];inti,j,temp;intmax,min;a[0]=n/1000;a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;a[3]=n-n/10*10;for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
returna[first];
elsereturnmax;
6.勒让德多项式
用递归思想求n阶勒让德多项式的值,该多项式为:
1((2n—1)*x—pn_1(x)—(n—1)*pgx)/n21
{floatp(floatx,intn);
floatx,y;
intn;
scan("%f%d",&x,&n);
y=p(x,n);
printf("%f\n",y);
floatp(floatx,intn)
{floaty;
if(n==0)return
(1);
elseif(n==1)return(x);
elsey=((2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-2)/2);return(y);
T"C:
\Debug\8498.exe"|
2Q3
Heseeeee
Pressanijkeijtocontirua
7.角夫猜想
日本数学家角夫提出了如下的猜想:
任意一个自然数,比如奇数,将其乘以3再加1;
如果是偶数将其除以2;反复运算。
请大家编写程序,看会出现什么结果?
编写程序功能要求能够不停的输入自然数,遇到输入自然数0时,程序结束。
如
输入:
请输入自然数n:
30
输出:
自然数n按照角夫猜想运算规则变化的各次结果:
1546237035
10653160804020105168。
。
(直到结果收敛,不再
变化)
{intjf(intn);
intn,k;
scan("%d",&n);
k=n;
jf(n);
}while(k!
=0);
intjf(intn)
{intn1;
if(n%2==0)n1=n/2,printf("%d",n1);
elsen仁n*3+1,printf("%d",n1);
if(n1!
=n)jf(n1);
8.数学黑洞
任意一个4位自然数(除4个数字完全一样除外,例如4444、7777等),,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍然为一个自然数,重复上述运算,你会发现一个神秘数。
编写程序功能要求能够不停的输入自然数,遇到输入0时,程序结束。
7754
自然数n按照以上运算规则变化的各次规律:
(7754,4577,3177)(7731,
1377,6534)(6543,3456,3087)(8730,0378,8352)(8532,2358,6174)。
(直到结果收敛,不再变化)
{intn,max,min;
scanf("%d",&n);
sort(n);
}sort(intn)
{inta[4];
inti,j,temp;
intmax,min;
a[0]=n/1000;
a[1]=n/100-n/1000*10;a[2]=n/10-n/100*10;
a[3]=n-n/10*10;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
if(a[i]{temp=a[i];a[i]=a[j];a[j]=temp;}max=a[0]*1000+a[1]*100+a[2]*10+a[3];for(i=0;i<3;i++)for(j=i+1;j<3;j++)if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}min=a[0]*1000+a[1]*100+a[2]*10+a[3];n=max-min;printf("(%d,%d,%d)",max,min,n);sort(n);}9.设计递归程序任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)输出:字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式例如,输入aybdx,则递归程序输出XaDyBbYdAxi0.成绩排名期中考试快要结束了,老师需要进行年级成绩排名。排名的规则如下:以期中考试的平均成绩为排名依据(满分为i00分);对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;如果学生A和学生B的平均成绩相同,则他们的排名相同。要求编写几个函数,分别实现以下的功能:函数1:输入10个同学的学号、姓名、平均成绩函数2:按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名函数3:输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息编写一个程序来使用验证上述函数。输入、输出格式要求:(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
{temp=a[i];
a[i]=a[j];
a[j]=temp;
max=a[0]*1000+a[1]*100+a[2]*10+a[3];
if(a[i]>a[j])
min=a[0]*1000+a[1]*100+a[2]*10+a[3];
n=max-min;
printf("(%d,%d,%d)",max,min,n);
9.设计递归程序
任意给定输入的一个小写英文字符串aia2a3…an-ian(n>5)
字符串AndiAi-1a2An-233•…A2an-1Aldn,其中A为a的大与形式
例如,输入aybdx,则递归程序输出XaDyBbYdAx
i0.成绩排名
期中考试快要结束了,老师需要进行年级成绩排名。
排名的规则如下:
以期中考试的平均成绩为排名依据(满分为i00分);
对学生A,如果一共有K个学生的平均成绩比A的平均成绩高,则学生A的年级排名为K+i;
如果学生A和学生B的平均成绩相同,则他们的排名相同。
要求编写几个函数,分别实现以下的功能:
函数1:
输入10个同学的学号、姓名、平均成绩
函数2:
按平均成绩由大到小的顺序进行排序,学号、姓名也随之调整,并请按照上述规则进行排名
函数3:
输入一个同学的学号,能够用折半查找法找出该同学的姓名、平均成绩、排名等信息
编写一个程序来使用验证上述函数。
输入、输出格式要求:
(1)第一行为一个整数N(1随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。如果学号不存在,输出错误提示信息。(3)输入学号0000000000时,程序退出。11.日历计算请使用已学的知识来编写一个自己的日历计算程序。功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。请不要使用VC环境提供的日期计算函数。已知公元1年1月1日为星期一。(以下为选作题,请用递归思想尝试编写程序)12.分书问题有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:i喜欢j书i不喜欢j书希望你写一个程序,输出所有分书方案,让人人皆大欢喜。假定5个人对5本书的阅读兴趣如下表:书0书1书2书3书4人A00110人B11001人C01101人D00010人E01001
随后有N行,每行有两个非负整数和字符串描述一个学生的信息,依次为学号、姓名和平均成绩。
(2)随机输入一个同学的学号,请输出这个同学的姓名、平均成绩、排名等信息。
如果学号不存在,输出错误提示信息。
(3)输入学号0000000000时,程序退出。
11.日历计算
请使用已学的知识来编写一个自己的日历计算程序。
功能要求任意输入一个日期(年、月、日),请输出该日期为该年度的第几天、第几周、星期几。
请不要使用VC环境提供的日期计算函数。
已知公元1年1月1日为星期一。
(以下为选作题,请用递归思想尝试编写程序)
12.分书问题
有编号分别为1,2,3,4,5的五本书,准备分给A,B,C,D,E五个人,每个人阅读兴趣用一个二维数组加以描述:
i喜欢j书
i不喜欢j书
希望你写一个程序,输出所有分书方案,让人人皆大欢喜。
假定5个人对5本书的阅读兴
趣如下表:
书0
书1
书2
书3
书4
人A
1
人B
人C
人D
人E
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1