北理C语言作业及答案3
北理工《C语言程序设计》期末考试精选题汇总【含答案解析】 33
2015下半年C语言期末复习资料一、课程内容的重点、难点第一章:程序设计基础知识重点:算法和算法的表示、结构化程序的三种基本结构。
难点:算法的表示。
第二章:C语言概述重点:C程序的基本结构、C语言的基本组成、用C语言解题的全过程。
第三章:数据类型与运算规则重点:C语言的基本数据类型及其表示、算术运算与赋值运算、关系运算与逻辑运算、位运算和其它运算,混合运算及数据类型转换。
第四章:顺序结构的程序设计重点:C语言中的各种语句、C语言中数据的输入与输出。
难点:输入、输出函数的使用。
第五章:选择结构的程序设计重点:if语句构成的选择结构程序和switch语句构成的选择结构程序。
难点:嵌套的if语句和嵌套的switch语句。
第六章:循环结构的成程序设计重点:while、do-while和for构成的循环结构程序设计,循环的嵌套。
难点:for语句的使用,循环的嵌套。
第七章:数组重点:一维数值数组的定义与使用,一维字符数组的定义与使用及常用字符处理函数的使用,二维数组的定义和使用。
难点:用数组求解实际问题的编程。
第八章:函数重点:函数的定义、函数的调用(嵌套调用和递规调用)与返回、函数间的数据传递、变量的存储类别。
难点:递规函数的定义与调用。
第九章:指针重点:指针的定义与引用、数组与指针、指针与函数、用指针处理字符串数据、指针数组和多级指针。
难点:二维数组的指针与使用,多级指针。
第十章:结构、联合与枚举类型重点:结构类型的定义、结构变量和结构数组的定义、函数间传递结构数据,联合类型的定义和应用,枚举类型的定义,用typedef定义类型。
难点:结构类型的应用,链表的操作和应用。
第十一章:文件重点:文件的打开和关闭,文件的顺序读写操作,文件的随机读写操作,文件操作的状态和出错检查。
难点:文件的读写操作二、期末考试题型介绍1、选择填空题:从四个备选答案中选择一个正确的答案。
每小题1分。
2、填空题:根据题目的要求在题目的空白处填上适当的内容。
C语言程序设计教材(北理工)习题参考答案(不排除少数错误)
第一章:程序设计基础知识一、单项选择题1.C2.B3.B4.C5.D6.A7.C8.A二、填空题1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言6.基本功能操作、控制结构7.有穷性8.直到型循环结构9.算法10.可读性11.模块化12.对问题的分解和模块的划分三、应用题1、用如何一种熟悉的方法描述求 N 个数中最小数的算法。
2、用枚举法设计例1-4中百钱买百鸡问题的算法,并用流程图表示;3 分别用递推和递规两种算法计算斐波那契数列:f(n+2)=f(n+1)+f(n),f(1)=f(0)=1的前30项,并用流程图表示a )递推 b)递规递推公式:f(n)=f(n-1)+f(n-2) 递规公式:f(n)=f(n-1)+f(n-2) f(1)=f(0)=1b )递推 b)递规4:一般迭代法:迭代公式:x1=1-x03,收敛条件:|x0/x1|<=1e-5牛顿迭代法:f(x)=x 3-x-1,f ’(x)=3x 2-1 迭代公式:x1=x0-f(x0)/f ’(x0) 收敛条件:|x0/x1|<=1e-55:分子a,分母b ,下一项分子c ,某项t=a/b,和s 。
第一项:a=2,b=1,c=a,t=a/b,s=t第i 项:c=a+b,b=a,a=c,t=a/b,s=s+t1-26:6第二章:C程序的基本结构一、单项选择题1.B2.D3.C4.B5.A6.A7.B8.C二、填空题1.主函数2.编译系统3.函数函数4.输入输出5.头文件6..obj7.库函数8.文本三、应用题5.标识符:au_to, _auto,file,m_i_n,hello,ABC,SIN90,x1234,until,cos2x,s_3关键字:sizeof非关键字,非标识符:3id,-min,call..menu,n*m,x.y,1234,1234hello,s+3第三章习题参考答案一、单项选择题1.D2.B3.A4.C5.C6.D7.B8.D9.B 10.C11.A 12.D13.C14.C15.C16.B17.B 18.C 19.C 20.D21.A 22.D 23.D 24.D,A 25.D26.A二、填空题1.补码2.±(10-308~ 10308) 15 ~ 16 位3.实型4.单目从右向左5.函数调用6.65 ,89三、应用题1.10 92.111213.区别是:求负:单目,右结合减法:双目,左结合取址:单目,右结合按位与:双目,左结合第四章习题参考答案一、单项选择题1.D2.C3.D4.A5. D6.B7.A8.C9.B 10.B二、填空题1.一条;2.5.1690003.(1)-200 2500(2)i=-200,j=2500(3)i=-200j=25004.a=98, b=765.000000, c=4321.0000005.三种可能的输入是:(1)(1)100<回车> 25.81<回车> 1.89234<回车>(2)(2)100<空格> 25.81<空格> 1.89234<回车>(3)(3)100<TAB> 25.81<TAB> 1.89234<回车> 6.0,0,37.38.输入语句的格式是:scanf("%lf%lf%lf",&a,&b,&c); 9.13 13.000000 13.00000010. 两种方法:(1) 增加一个临时变量t。
北理乐学c语言答案,
7.入门计算圆柱的侧面积及体积#include<>void main(){double a,b;scanf("%lf\n%lf",&a,&b);printf("s=%.2lf,v=%.2lf\n",2**a*b,*a*a*b); }1.Hello world.输入:无输出:Hello world.程序:#include<>int main(){printf("Hello world.\n");return 0;}2.Welcome to Beijing.程序:#include <>int main(){printf("Welcome\n");printf("to\n");printf("Beijing.\n");return 0;}3. 求A+B输入:整数1 整数2输出:整数1+整数2=和程序:#include<>int main(){int a,b;scanf("%d",&a);scanf("%d",&b);printf("%d+%d=%d\n",a,b,a+b);return 0;}4. 求 x 的 3次方输入:一个整数。
输出:该整数的 3 次方值。
程序:#include<>int main(){int x;scanf("%d",&x);printf("%d\n",x*x*x);return 0;}5. 学习打印你的第一个图形编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。
程序:#include<>int main(){printf(" *\n");printf(" ***\n");printf(" *****\n");printf("*******\n");return 0;}6. 一年级的算术题输入:接受两个整数,每个整数之间使用空格分隔。
北理工C语言超全上机答案(非信息类)
上机考试时间为60分钟,上机考题为3道。
第一题为简单的图形打印;第二题为简单数值计算(一般用穷举法就可以解决),第三题为相对复杂的数组/字符串处理。
上机考题选自以下题目。
#include <stdio.h>int main(){int i,j,n;scanf("%d",&n);外层i对行循环,i=n时先输出空格的行循环为for(i=1;i<=n;i++)若垂直反转则是 for(i=n;i>=1;i--)如:上下三角形,对称梯形,对称平行四边形。
内层 jk…对列循环。
先打印空格或者先打印星号,找规律换行在内层循环中【1.1】编程,输入n,输出如下例(n=6)所示的图形:* * * * * ** * * * * ** * * * * ** * * * * ** * * * * ** * * * * *程序:#include <stdio.h>int main(){int i,j,n;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++) printf("*");printf("\n");}system("pause");}【1.2】编程,输入n,输出如下例(n=6)所示的图形:* * * * * ** * * * * ** * * * * ** * * * * ** * * * * ** * * * * *程序:#include <stdio.h>int main(){int i,j,n;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++)printf(" ");for(j=1;j<=n;j++)printf("*");printf("\n");}system("pause");}【1.3】编程,输入n,输出如下例(n=6)所示的高为n的等腰三角形。
北理C语言作业及答案3
C语言作业3 43. 缩写展开成绩: 10 / 折扣: 0.8在保存字符串时,对出现在连续位置的若干个字符,如这些字符在ASCII表中也是连续出现,则可以将这些字符使用缩写形式进行保存,以节省保存空间。
例如用A-Z表示ABCD...XYZ,1-5表示12345,c-f表示cdef。
输入:包含缩写形式的字符串输出:将缩写形式进行还原后的字符串说明:只分别对大写字母、小写字母和数字进行压缩,对于形如9-A,a-C这样的缩写不进行处理。
测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.0-9↵以文本方式显示1.0123456789↵1秒64M 0测试用例2以文本方式显示1.G-I↵以文本方式显示1.GHI↵1秒64M 0测试用例以文本方式显示1.ABDG-K035-9abd-h↵以文本方式显示1.ABDGHIJK0356789abdefgh↵1秒64M 0#include <stdio.h>int main(){int i=0;char s[100];gets(s);while(s[i]!='\0'){if(s[i+1]!='-'){printf("%c",s[i]);i++;}else{if(s[i+2]>s[i] && ((s[i]<=57)+(s[i+2]<=57)!=1) && (s[i]<=57||s[i]>=65)){while(s[i]!=s[i+2]){printf("%c",s[i]++);}i+=2;}else printf("%c",s[i++]);}}printf("\n");return 0;}44. 函数递归成绩: 10 / 折扣: 0.8编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。
北理工《C语言程序设计》在线作业含正确答案
北理工《C语言程序设计》在线作业含正确答案北理工《C语言程序设计》在线作业含正确答案一、单选题共40题,80分1、在以下对C语言的描述中,正确的是()。
A在C语言中调用函数时,只能将实参数的值传递给形参,形参的值不能传递给实参BC语言函数既可以嵌套定义又可以递归调用C函数必须有返回值,否则不能使用函数DC语言程序中有定义关系的所有函数都必须放在同一源文件中2、若在键盘上输入:283.1900,想使单精度实型变量c的值为283.19,则正确的输入语句是()。
A、scanf("%f",&c);Bscanf("8.4f",&c);Cscanf("%6.2f",&c);Dscanf("8f",&c);3、以下()不是C语言的特点。
A语言的表达能力B语言定义严格C数据结构系统化D控制流程结构化4、C编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是()。
A编辑和编译B编译和连接C连接和运行D编辑和运行5、以下程序的输出是( )。
main(){char a[2][5]={“6937”,”8254”};inti,j,s=0;for(i=0;i<2;i++)for(j=0;a[i][j]>'0'&&a[i][j]<='9';j+=2)s=10*s+a[i][j]-‘0’;printf(“s=%d ”,s);}A、6385B69825C63825D6938256、已知:struct{int i; char c; float a; }test; 则sizeof(test)的值是()。
A4B5C6D772分已知“int a=4,b=5,c;”,则执行表达式“c=a=a>b”后变量a 的值为()。
A1B0C4D582分为了显示一个文本文件的内容,在打开文件时,文件的打开方式应当时()。
北理工《C语言程序设计》在线作业含正确答案
B2,1,0
C1,2,1
D2,1,1
18、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是( )。
A地址传递
B值传递
C由实参传给形参,并由形参传回给实参
D由用户指定传递方式
19、在C语言的函数定义过程中,如果函数finA调用了函数funB,函数funB又调用了函数funA,则( )。
A、6385
B69825
C63825
D693825
6、已知:struct{int i; char c; float a; }test; 则sizeof(test)的值是( )。
A4
B5
C6
D7
7
2分
已知“int a=4,b=5,c;”,则执行表达式“c=a=a>b”后变量a的值为( )。
A1
B0
C4
C数据结构系统化
D控制流程结构化
4、C编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是( )。
A编辑和编译
B编译和连接
C连接和运行
D编辑和运行
5、以下程序的输出是( )。main(){char a[2][5]={“6937”,”8254”};int i,j,s=0;for(i=0;i<2;i++)for(j=0;a[i][j]>'0'&&a[i][j]<='9';j+=2)s=10*s+a[i][j]-‘0’;printf(“s=%d ”,s);}
Dscanf("%d%d%d",&a,&b,&c);
北京理工大学网络教室C语言编程题库及答案(绝对经典)
1.Hello world.之阳早格格创做输进:无输出:Hello world.步调:#include<stdio.h>int main(){printf("Hello world.\n");return 0;}2.Welcome to Beijing.步调:#include <stdio.h>int main(){printf("Welcome\n");printf("to\n");printf("Beijing.\n");return 0;}3. 供A+B输进:整数1 整数2输出:整数1+整数2=战步调:#include<stdio.h>int main(){int a,b;scanf("%d",&a);scanf("%d",&b);printf("%d+%d=%d\n",a,b,a+b);return 0;}4. 供 x 的 3次圆输进:一个整数.输出:该整数的 3 次圆值.步调:#include<stdio.h>int main(){int x;scanf("%d",&x);printf("%d\n",x*x*x);return 0;}5. 教习挨印您的第一个图形编写一个小步调,央供输出的是 4 止由*号组成的等腰三角形.步调:#include<stdio.h>int main(){printf(" *\n");printf(" ***\n");printf(" *****\n");printf("*******\n");return 0;}6. 一年级的算术题输进:交受二个整数,每个整数之间使用空格分开.比圆输进圆法为:123 444输出:分别输出依照整型数据举止 +、-、*、/、* 之后的运止截止.步调:#include<stdio.h>int main(){int a,b;scanf("%d %d",&a,&b);printf("%d+%d=%d\n",a,b,a+b);printf("%d-%d=%d\n",a,b,a-b);printf("%d*%d=%d\n",a,b,a*b);printf("%d/%d=%d\n",a,b,a/b);printf("%d%%%d=%d\n",a,b,a%b);return 0;}7. 供二个变量的最小值输进:二个整型数输出:二个整型值中的最小值步调:#include<stdio.h>int main(){int a,b;scanf("%d%d",&a,&b);printf("min=%d\n",a<b?a:b);return 0;}8. 推断三角形的形状输进:三角型的3条边的少度(int型).输出:等边三角形:equilateral triangle等腰三角形:isoceles triangle没有形成三角形:non-triangle普遍三角形:triangle步调:#include<stdio.h>int main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){if (a==b&&b==c&&a==c)printf("equilateral triangle.\n");else if(a==b||a==c||b==c)printf("isoceles triangle.\n");elseprintf("triangle.\n");}elseprintf("non-triangle.\n");return 0;}9. 估计圆柱的正里积及体积输进:第一止输进圆柱的底里半径r 第二止输进圆柱的下 h输出:s=< 圆柱的正里积 >,v=< 圆柱的体积 >央供1. 所有变量皆定义为单粗度典型2. 截止透彻到小数面后二位步调:#include<stdio.h>int main(){double r,h,s,v;scanf("%lf",&r);scanf("%lf",&h);s=2*PI*r*h;v=PI*r*r*h;printf("s=%.2f,v=%.2f\n",s,v);return 0;}10. 估计时钟的夹角背景:钟里上的时针战分针之间的夹角经常正在 0 ~180之间 ( 包罗 0 战180 ) .举例去道,正在十二面的时间二针之间的夹角为 0 ,而正在六面的时间夹角为180 ,正在三面的时间为90 .原题要办理的是估计12:00 到 11:59 之间任性一个时间的夹角.输进:每组尝试数据包罗二个数字:第一个数字代表小时 ( 大于 0 小于等于 12) ,第二个数字代表分 ( 正在区间 [0, 59] 上 ) .输出:对于应每组尝试数据,用时常使用圆法隐现时间以及那个时间时针战分针间的最小夹角,透彻到小数面后一位.输出圆法如下所示.步调:#include<stdio.h>#include<math.h>int main(){int h,m;float d1,d2,d;scanf("%d%d",&h,&m);d1=30*(h+m/60.0);d2=m*360/60.0;d=fabs(d1-d2);if(d>180)d=360-d;printf("At %d:%d the angle is %.1f degrees.\n",h,m,d);return 0;}11. 找出最大素数素数是指一个只可被1战它自己整除的数,正在数论中占有要害的钻研职位,正在当代暗号教中也被广大应用.输进:与值范畴输出:该范畴内的最大素数步调:#include<stdio.h>int main(){int n,i,j;scanf("%d",&n);for(i=n;i>=1;i--){ for(j=2;j<i;j++)if(i%j==0)break;if(j==i){printf("The max prime number is %d.\n",i);break;}}}12. 供末尾3位数值输进:a 战 n 的值.假设 a<=150 .输出:供 a 的 n 次圆的末尾 3 位数.步调:#include<stdio.h>int main(){long int s=1;int a,n,i=1,t=1;scanf("%d%d",&a,&n);if(n==0)printf("The last 3 numbers is 1.\n");else{for(i=1;i<=n;i++){s=(s*a)%1000;}t=s%1000;if(t>=0&&t<10) printf("The last 3 numbers is 00%d.\n",t);if(t>=10&&t<100) printf("The last 3 numbers is 0%d.\n",t);if(t>=100&&t<1000) printf("The last 3 numbers is %d.\n",t);}return 0;}13. 贪吃的猴子有一只猴子,第一天戴了若搞个桃子,当即吃了一半,但是还感触没有过瘾,便又多吃了一个.第2天早上又将剩下的桃子吃掉一半,仍旧感触没有过瘾,便又多吃了二个.以去每天早上皆吃了前一天剩下的一半加天数个(比圆,第5天吃了前一天剩下的普遍加5个).到第n 天早上再念吃的时间,便只剩下一个桃子了.输进:天数n输出:第一天的桃子个数步调:#include<stdio.h>int main(){int i,n,amount=1;scanf("%d",&n);for(i=n-1;i>=1;i--)amount=2*(amount+i);printf("The monkey got %d peachs in first day.\n",amount);}14. 乌色星期五正在西圆,星期五战数字13皆代表着坏幸运,二个没有幸的个体末尾分离成超等没有幸的一天.所以,没有管哪个月的十三日又恰遇星期五便喊“乌色星期五”.输进:年份输出:推断该年是可包罗乌色星期五,如包罗,给出简直日期步调:#include<stdio.h>int main(){int i,n=0,year,month[12]={0};int a[13]={0,13,44,73,104,134,165,195,226,257,287,318,348};int b[13]={0,13,44,72,103,133,164,194,225,256,286,317,347};scanf("%d",&year);for(i=1;i<13;i++){if ((year%4==0 && year%100!=0)||year%400==0){if((year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+a[i])%7==5){n++;month[n]=i;}}elseif((year-1+((year-1)/4)-((year-1)/100)+((year-1)/400)+b[i])%7==5){n++;month[n]=i;}}if(n==1){printf("There is %d Black Friday in year %d.\n",n,year);printf("It is:\n");printf("%d/%d/13\n",year,month[1]);}else{printf("There are %d Black Fridays in year %d.\n",n,year);printf("They are:\n");for (i=1;i<=n;i++){printf("%d/%d/13\n",year,month[i]);}}return 0;}15.您会输出一止星号?咱们才启初上机,当前需要咱们用最简朴得办法,正在一止中输出N个星号.输进:N值输出:一止中N个星号.步调:#include<stdio.h>int main(){int i,n;scanf("%d",&n);for(i=1;i<=n;i++)printf("*");printf("\n");}16. 估计SUM的值已知公式:SUM = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n输进: n 输出:表白式 sum 的值.截止生存 6 位小数.步调:#include<stdio.h>int main(){int i,n;double sum=0;scanf("%d",&n);for (i=1;i<=n;i++)sum+=1.0/i;printf("sum=%.6lf\n",sum);return 0;}17. 觅找特殊整数请编写一个步调觅找一种特殊整数:一个n 位的正整数等于其诸位数字的n次圆之战.比圆:407=4×4×4+0×0×0+7×7×7.所以407便是一个特殊数.输进:正整数的位数n(n<=6).输出:所有此n位特殊数.每个数占一止.若没有存留切合条件的特殊数,则输出提示:“No output.”;若存留,则从小到大举止输出.证明:假设输进为4,正在4位整数中,有3个4位的特殊数,则输出圆法为(输出中的1111、2222战9999本去没有是4位特殊数,不过圆法样例):111122229999步调:#include<stdio.h>#include <math.h>int main(){int n,i,j,num,t,s=0,t1,flag=0;scanf("%d",&n);t=pow(10,n-1);for (i=t;i<t*10;i++){t1=i;s=0;for (j=1;t1!=0;j++){num=t1%10;s+=pow(num,n);t1=t1/10;}if(s==i){flag=1;printf("%d\n",i);}}if(flag==0)printf("No output.\n");return 0;}18. 空心的倒三角型输进:输进三角形的下度(h >= 0).输出:挨印相映的空心倒三角形.图样拜睹尝试用例.步调:#include<stdio.h>#include <math.h>int main(){int i,j,h;scanf("%d",&h);for (i=1;i<=h;i++){for(j=1;j<i;j++)printf(" ");if(i==1||i==h){for(j=1;j<=2*(h-i)+1;j++)printf("*");printf("\n");}else{printf("*");for(j=1;j<=2*(h-i)-1;j++)printf(" ");printf("*\n");}}return 0;}19. 空心字符菱形输进:菱型起初字母战菱形的下度.输出:参瞅尝试用例,挨印空心的由字符组成的菱形.步调:#include<stdio.h>#include <math.h>int main(){int i,j,h;char ch;scanf("%c%d",&ch,&h);for (i=1;i<=h;i++){for(j=1;j<=h-i;j++)printf(" ");printf("%c",ch+i-1);for(j=1;j<=2*i-3;j++)printf(" ");if(i==1){printf("\n");continue;}printf("%c\n",ch+i-1);}for (i=h+1;i<=2*h-1;i++){for(j=1;j<=i-h;j++)printf(" ");printf("%c",ch+(2*h-1)-i);for(j=1;j<=(2*h-1-i)*2-1;j++)printf(" ");if(i==2*h-1){printf("\n");continue;}printf("%c\n",ch+(2*h-1)-i);}return 0;}20. 空心梯形输进止数n 战尾数字字符,正在屏幕上输出由数字围起的下战下底宽度均 n 的空心梯形. 央供:输出的数字是循环的,即输出数字 9 后再输出的数字是 0.输进:止数n 战尾字符输出:空心梯形步调:#include<stdio.h>#include <math.h>int main(){int i,j,n,f,t=0;scanf("%d%d",&n,&f);t=f;for(j=1;j<=3*n-2;j++){if(j==3*n-2)printf("%d",t);elseprintf("%d ",t);if(j<(3*n-1)/2){if(t==9) t=0;elset++;}else if(j==(3*n-1)/2&&n%2==0) continue;else{if(t==0) t=9;elset--;}}printf("\n");t=f;for (i=2;i<=n;i++){for (j=1;j<=2*(i-1);j++)printf(" ");if(i==n){for (j=1;j<=(n+1)/2;j++){if(t==9){t=0;printf("%d ",t);}elseprintf("%d ",++t);}for (j=1;j<=n/2;j++){if(t==0&&n%2!=0)t=9;else if(j==1&&n%2==0){if(j==n/2)printf("%d\n",t);elseprintf("%d ",t);continue;}elset--;if(j==n/2)printf("%d\n",t);elseprintf("%d ",t);}}else{if(t==9){printf("0");for(j=1;j<=6*n-4*i-3;j++)printf(" ");printf("0\n");t=0;}else{t++;printf("%d",t);for(j=1;j<=6*n-4*i-3;j++)printf(" ");printf("%d\n",t);}}}。
北理工《C语言程序设计》在线作业
北理工《C语言程序设计》在线作业试卷总分:100 得分:100一、单选题(共40 道试题,共80 分)1.下面程序的输出结果是()。
main(){int i,j;float s;for(i=6;i>4;i--){s=0.0; for(j=i;j>3;j--)s=s+i*j; }printf(“%f ”,s);}A.135.000000B.90.000000C.45.000000D.60.000000答案:C2.在以下对C语言的描述中,正确的是()。
A.在C语言中调用函数时,只能将实参数的值传递给形参,形参的值不能传递给实参B.C语言函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C语言程序中有定义关系的所有函数都必须放在同一源文件中答案:A3.以下()不是C语言的特点。
A.语言的表达能力B.语言定义严格C.数据结构系统化D.控制流程结构化答案:B4.已知:char s[10],*p=s,则在下列语句中,错误的语句是()。
A.p=s+5;B.s=p+s;C.s[2]=p[4];D.*p=s[0];答案:B5.以下正确的数组定义语句是()。
A.int y[1][4]={1,2,3,4,5};B.float x[3][ ]={{1},{2},{3}};C.long s[2][3]={{1},{1,2},{1,2,3}};D.double t[ ][3]={0};答案:D6.已知:int a,*p=&a; 则下列函数调用中错误的是()A.scanf("%d",&a);B.scanf("%d",p);C.printf("%d",a);D.printf("%d",p);。
北京理工大学《C语言程序设计》期末试题
参数说明:array[]为整型数组,n 为项数( n > 0);返回值是数组元素的最大值。 例如输入:5↵ 1 5 6 4 2↵ , 输出:6↵ 注意:仅提交自编的 max 函数,不提交 main 函数。
预设代码
a3_3.c
view plaincopy to clipboardprint?
64M
0
三、编程题_2 (10 分)
输入行数 n 值和数字,输出由数字从左往右、从上往下依次递增围起的正方形。 数字输出是循环的,即输出数字9后再输出的是数字0。 例:输入:4 8↙ 屏幕输出(表示为一个空格 ) : 890 1↙ 90↙ 01 123 4 测试输入 期待的输出
64M
0
隐藏用例 4 1 Wearestudents↵ 2 13↵
Wearestudent 1秒 sBIT↵
4
64M
0
随米云打印
网址:sui.me
3 BIT↵
以文本方式显示
1 Wearestudents↵ 隐藏用例 5 2 0↵ 3 BIT↵
以文本方式显示
BITWearestud 1秒 ents↵
2
随米云打印
网址:sui.me
【2】处应填入的是:______。 A) f(n-1)-n B)f(n-1)+n 答案:A 【3】应填入的是:______。 A) f(n-1)-n B)f(n-1)+n 答案:B
C) f(n-1)+1
D)-n;
C) Hale Waihona Puke (n-1)+1D)n;
2、要对全班 100 个同学的成绩,按照从高到低的顺序进行排序,以下程序是排序函数, 其功能是将成绩数组 score 从大到小排序。请完善函数中的语句。 void sort(int scores[],int n ) { int i,j,temp; for(i=【4】;i<=n-1;i++) for(j=0;j<【5】;j++) if(【6】) { temp=scores[j]; scores[j]=scores[j+1] ; scores[j+1]=temp; } for(i=0;i<N;i++) printf("%d\n",scores[i]); } 为保证程序循环次数最少, 【4】处应填入:______。 A) 0 B)1 C) -1 D)N/2 答案:B 为保证程序循环次数最少, 【5】处应填入:______。 A) N B)N-1 C) N-i-1 D)N-i; 答案:D 【6】处应填入:______。 A) scores[j]<scores[j+1] B)scores[j]>scores[j+1] C) scores[j]<scores[j-1] D)scores[j]>scores[j-1] 答案:A 3、根据程序的初始值,打印选中学生的姓名与年龄,补充部分程序,并选择程序的运 行结果: #include <stdio.h> struct student{ int id; char name[12]; int age; }; void print(struct student *p) { printf("name=%s\n",(*p).name);/*【7】*/ printf("age=%d\n",【8】);/*打印输出年龄*/
北京理工大学网络教室C语言编程题库及答案(绝对经典)
1.Hello world.输入:无输出:Hello world.程序:#include<>int main(){printf("Hello world.\n");return 0;}2.Welcome to Beijing.程序:#include <>int main(){printf("Welcome\n");printf("to\n");printf("Beijing.\n");return 0;}3. 求A+B输入:整数1 整数2输出:整数1+整数2=和程序:#include<>int main(){int a,b;scanf("%d",&a);scanf("%d",&b);printf("%d+%d=%d\n",a,b,a+b);return 0;}4. 求x 的3次方输入:一个整数。
输出:该整数的 3 次方值。
程序:#include<>int main(){int x;scanf("%d",&x);printf("%d\n",x*x*x);return 0;}5. 学习打印你的第一个图形编写一个小程序,要求输出的是4 行由*号组成的等腰三角形。
程序:#include<>int main(){printf(" *\n");printf(" ***\n");printf(" *****\n");printf("*******\n");return 0;}6. 一年级的算术题输入:接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:123 444 输出:分别输出按照整型数据进行+、-、*、/、* 之后的运行结果。
北京理工大学C语言教材习题答案
教材习题答案 习题单项选择题1. C2. B3. B4. C5. D6. A7. C8. A填空题1. 判断条件2. 面向过程编程3. 结构化4. 程序5. 面向对象的程序设计语言6. 基本功能操作、控制结构7. 有穷性8. 直到型循环结构9. 算法 10.可读性11.模块化 12.对问题的分解和模块的划分 习题一 、单项选择题1. B2. D3. C4. B5. A6. A7. B8.C 二、填空题1. 主2. C 编译系统3. 函数、函数4. 输入输出5.头6. .OBJ7. 库函数8. 文本 习题一、单项选择题1. D2. B3. A4. C5. C6. D7. D8. B9. B 10.C 11.A 12.D13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D, A 25.D 26.A 27.B 二、填空题1. 补码2. 30810-±(~)30810,15—6 2. 30810-±(~)30810,15—6 3. 逻辑 4. 单目,自右向左 5. 函数调用 6. a 或b(题目有错,小括号后面的c<=98改成(c>=97&&c<=98)就可以得到所给的答案了)7. 1 8. 65,89 习题一、单项选择题 1. D 2. C 3. D 4. A 5. D 6. B7. A 8. C9. B10.B二、填空题 1. 一 ; 2. 5.1690003. (1)-200 2500 (2)i=-200,j=2500 (3)2500200=-=j i4. a=98,b=765.000000,c=4321.0000005.100 25.81 1.89234 ,100 25.81按Enter 键)1.89234,100(按Tab 键)25.81(按Tab 键)1.892346. 0,0,37. 38. scanf(" %lf %lf %lf",&a,&b,&c);9. 13 13.000000 13.00000010.b=a;a=c;c=b;或a=a+b;c=c-b;(对于本题来说,后者的答案更好,不仅使a 与c 的值进行交换而且能保持中间变量b 的值不发生改变)习题一、单项选择题 1. D2. C3. B4. B5. D6. A7. B 8. D二、填空题1. 非零,零2. k= =0 2. k= =03.if(abs(x)>4) Printf(“%d ”,x); elseprintf(“error!”);4. if(x%2==1&&( (x>=1)&&(x<=10)||(x>=200&&x<=210))printf("%d",x);5. k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。
2019-北京理工大学-成教-《C语言程序设计》期末测试卷 (3)
[试题分类]:C语言程序设计1.下列选项中,不属于C语言特点的是A. 能实现汇编语言的大部分功能B. 语言简洁、紧凑、使用方便C. 数据类型丰富,可移植性好D. 有较强的网络操作功能答案:D题型:单选题知识点:第2章 C语言概述难度:12.下列选项中,正确的C语言标识符是A. \nB. %dC. _123D. #define答案:C题型:单选题知识点:第2章 C语言概述难度:13.在C语言中,错误的int类型常数是A. 0B. 038C. 0xAFD. 32765答案:B题型:单选题知识点:第3章数据类型与运算规则难度:14.若有定义“int x=5,y=5,z=5;”,执行语句“x%=y+z;”后,x的值是A. 6B. 5C. 1D. 0答案:B题型:单选题知识点:第3章数据类型与运算规则难度:25.若有定义“int x=3,y=4,z=5;”,则下列表达式中值不为1的是A. 'x'&&'y'B. x<=yC. x||y+z&&y-zD. !((x<y)&&!z||1)答案:D题型:单选题知识点:第3章数据类型与运算规则难度:26.逗号表达式“(a=3*5,a*4),a+15”的值是A. 15B. 60C. 30D. 不确定答案:C题型:单选题知识点:第3章数据类型与运算规则难度:27.若有定义“int i=1,j=2,k=3;”,则执行下列语句后的输出结果是if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k);A. 1 2 3B. 2 3 4C. 2 2 3D. 2 3 3答案:D题型:单选题知识点:第5章选择结构的程序设计难度:28.{若有定义“int x=1,y=1,m=1,n=0;”,则执行下列语句后,变量x和y的值分别是 switch (m) \{case 0: x=x*2;case 1:switch (n) \{case 1: x=x*2;case 2: y=y*2; break;default: x++;\}case 2: x++; y++;case 3: x*=2; y*=2; break;default: x++;y++;\}}A. x=6,y=4B. x=2,y=1C. x=3,y=2D. x=7,y=5答案:A题型:单选题知识点:第5章选择结构的程序设计难度:29.语句序列“int i,j; for (i=0, j=1; i<=j+1; i+=2,j--) printf ("%d\n",i);”执行后i的值是A. 3B. 2C. 1D. 0答案:B题型:单选题知识点:第6章循环结构的程序设计难度:210.若有定义“int n=4;”,则执行语句“while(n--) printf("%d",--n);”后的输出结果是A. 20B. 31C. 210D. 321答案:A题型:单选题知识点:第6章循环结构的程序设计难度:211.{若有定义“int x=3;”,则执行下列语句后的输出结果是do \{printf("%d ",x-=2);\} while(!(--x));}A. 1B. 3 0C. 1 -2D. 死循环答案:C题型:单选题知识点:第6章循环结构的程序设计难度:212.下列关于数组定义、初始化或赋值语句中,正确的是A. int x[5]={1,2,3,4,5,6};B. int n=8; int score[n];C. int a[8]; a[8]=100;D. int x[]={1,2,3,4,5,6};答案:D题型:单选题知识点:第7章数组难度:113.{若有定义“int a[3][3]=\{0,1,2,0,1,2,0,1,2\}, i,j,s=0;”,则执行下列语句后,变量s的值是for(i=0;i<3;i++)for(j=i;j<=i;j++)s=s+a[i][a[j][j]];}A. 9B. 4C. 3D. 1答案:C题型:单选题难度:214.C语言程序中,调用函数时A. 实参和形参共用一个存储空间B. 实参和形参各自占用一个独立的存储空间C. 由用户指定实参和形参是否共用存储空间D. 由系统指定实参和形参是否共用存储空间答案:B题型:单选题知识点:第8章函数难度:115.下述函数首部定义形式正确的是A. int f(int x,y)B. int f(int x; int y)C. int f(x,y: int)D. int f(int x, int y)答案:D题型:单选题知识点:第8章函数难度:116.若p1和p2为指向同一字符串的指针变量,c为字符变量,则下列语句中,不能正确执行的是A. p2=cB. c=*p2C. p1=p2D. c=*p1+*p2;答案:A题型:单选题难度:217.{下列函数的功能是fun(char *p2, char *p1) \{while((*p2=*p1)!='\0') \{p1++; p2++;\}\}}A. 将p1所指字符串的地址赋值给指针p2B. 检查p1和p2所指字符串中是否有'\0'C. 对p1和p2两个指针所指字符串进行比较D. 将p1所指字符串复制到p2所指内存空间答案:D题型:单选题知识点:第9章指针难度:218.下列程序段中,枚举变量c1和c2的值分别是enum color {red, yellow, blue=4, green, white}; enum color c1=yellow, c2=white;A. 2,6B. 1,6C. 2,5D. 2,4答案:B题型:单选题知识点:第10章结构、联合与枚举类型难度:219.{若有如下定义:struct student\{int num; int age;\} data , *p=&data;则下列选项中,引用data中成员num正确的是}A. (*p).data.numB. p->data.aC. p.data.aD. (*p).a答案:D题型:单选题知识点:第10章结构、联合与枚举类型难度:220.C语言中,对文件进行存取的基本单位是A. 记录B. 字节C. 元素D. 簇答案:B题型:单选题知识点:第11章文件难度:121.若y是int型变量,则判断y为奇数的关系表达式为__________。
最新北理工C语言三四五章答案参考
第三章:3-1. 打印菱形图形成绩: 10 / 折扣: 0.8输入n ,输出如下例(n=3 )所示的边长为n 的菱形:*************输入:边长n输出:边长为n 的菱形#include"stdio.h"main(){int n,i,j;scanf("%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n-i;j++) printf(" ");for(j=1;j<=2*i-1;j++) printf("*");printf("\n");}for(i=1;i<=n-1;i++){for(j=1;j<=i;j++) printf(" ");for(j=1;j<=2*n-2*i-1;j++) printf("*");printf("\n");}}3-2. 打印平行四边形成绩: 10 / 折扣: 0.8输入图形的高n 和首字符c ,输出如下例(c='A' ,n=5 )所示的图形. ABCDEBCDEFCDEFGDEFGHEFGHI输入:高n 和首字符 c输出:高为n 和首字符为 c 的平行四边形#include"stdio.h"main(){int n,i,j;char c;scanf("%d,&c",&n,&c);c=getchar();for(i=1;i<=n;i++){for(j=1;j<=i-1;j++) printf(" ");for(j=1;j<=n;j++) putchar(c+i+j-2);printf("\n");}}3-3. 求和成绩: 10 / 折扣: 0.8输入整数m 和正整数n ,按下列公式计算s :s=m-(m+1)+m+2-(m+3)+ ……+(-1)n(m+n) 。
北理C语言作业及答案
34 北理工的恶龙背景:最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花最少的学分数杀死恶龙,于是找到你寻求帮助。
输入:第一行龙头数 n , 勇士人数 m 〔 1<=n, m<=100 〕接下来 n 行,每行包含一个整数,表示龙头的直径接下来 m 行,每行包含一个整数,表示勇士的身高 l输出:如果勇士们能完成任务,输出校长需要花的最小费用;否那么输出“ bit is doomed! 〞测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1. 2 3↵2.5↵3.4↵4.7↵5.8↵6.4↵以文本方式显示1.11↵1秒64M 0测试用例2以文本方式显示1. 2 1↵2.5↵3.5↵4.10↵以文本方式显示1.bit is doomed!↵1秒64M 0#include<stdio.h>void main(){int s=0,t,i,j,m,n,a[100],b[100],c[100]; for(i=0;i<=99;i++)a[i]=0,b[i]=0,c[i]=0;scanf("%d%d",&m,&n);for(i=0;i<=m-1;i++)scanf("%d",&a[i]);for(i=0;i<=n-1;i++)scanf("%d",&b[i]);if(m>n)printf("bit is doomed!\n");else{for(i=0;i<=m-1;i++)for(j=i;j<=m-1;j++){if(a[i]>a[j]){t=a[i],a[i]=a[j],a[j]=t;}}for(i=0;i<=n-1;i++)for(j=i;j<=n-1;j++){if(b[i]>b[j]){t=b[i],b[i]=b[j],b[j]=t;}}t=0;for(i=0;i<=m-1;i++)for(j=0;j<=n-1;j++)if(a[i]<=b[j]){c[t]=b[j];t++;b[j]=0;break;}if(t<m)printf("bit is doomed!\n");else{for(i=0;i<=t;i++)s=s+c[i];printf("%d\n",s);}}}35 杀鸡用牛刀——要用递归啊!背景:哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔〞问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
C语言程序设计—北京理工大学MOOC提交作业
第一周作业【练习1】HelloWorld 成绩成绩 0开启时间开启时间 2014年10月21日 星期二星期二 08:00 折扣折扣0.8 折扣时间折扣时间 2014年12月7日 星期日星期日 23:55允许迟交允许迟交 否关闭时间关闭时间 2014年12月7日 星期日星期日 23:55让我们学习用C 语言向世界问好。
语言向世界问好。
“Hello World”示例程序最早出现于1972年,由贝尔实验室成员Brian Kernighan 撰写的内部技术文件《Introduction to the Language B 》之中。
不久同作者于1974年所撰写的《Programming in C: A T utorial 》,也延用这个示例。
》,也延用这个示例。
一般来说,这是每一种一般来说,这是每一种计算机编程语言计算机编程语言中最基本、最简单的程序,亦通常是初学者所编写的第一个程序。
它还可以用来确定该语言的写的第一个程序。
它还可以用来确定该语言的编译器编译器、程序开发环境,以及运行环境是否已经安装妥当。
将“Hello World”作为第一个示范程序,已经成为编程语言学习的传统。
统。
我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧!我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧! 最早的程序基本是这个样子的:最早的程序基本是这个样子的: #include #include <<stdio.h > int int main main () {printf ("Hello world.\n "); return 0; }请模仿上面的程序,请模仿上面的程序,看看是否可以通过编译?如果你能通过这个简单的程序,那就让我看看是否可以通过编译?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
们继续完成后面的习题吧。
略第二周作业【练习2】学学scanf 和printf 的用法吧成绩成绩 0开启时间开启时间 2014年10月21日 星期二星期二 08:00 折扣折扣0.8 折扣时间折扣时间 2014年12月7日 星期日星期日 23:55允许迟交允许迟交 否关闭时间关闭时间 2014年12月7日 星期日星期日 23:55该如何处理该如何处理 double 型的数据:如何定义变量类型?如何使用型的数据:如何定义变量类型?如何使用 scanf 函数?函数?如果已知圆柱的底面半径如果已知圆柱的底面半径 r ,以及高,以及高 h ,则可计算出圆柱的侧面积,则可计算出圆柱的侧面积 s=2 π r h ,体积,体积,体积 v=π r 2h 。
北京理工大学网络教室C语言编程题库及答案(绝对经典)之欧阳音创编
1.Hello world.输入:无输出:Hello world.程序:#include<stdio.h>int main(){printf("Hello world.\n");return 0;}2.Welcome to Beijing.程序:#include <stdio.h>int main(){printf("Welcome\n");printf("to\n");printf("Beijing.\n");return 0;}3. 求A+B输入:整数1 整数2输出:整数1+整数2=和程序:#include<stdio.h>int main(){i nt a,b;s canf("%d",&a);s canf("%d",&b);p rintf("%d+%d=%d\n",a,b,a+b);r eturn 0;}4. 求 x 的 3次方输入:一个整数。
输出:该整数的 3 次方值。
程序:#include<stdio.h>int main(){int x;scanf("%d",&x);printf("%d\n",x*x*x);return 0;}5. 学习打印你的第一个图形编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。
程序:#include<stdio.h>int main(){printf(" *\n");printf(" ***\n");printf(" *****\n");printf("*******\n");return 0;}6. 一年级的算术题输入:接受两个整数,每个整数之间使用空格分隔。
北理工C语言3
的3-1. 编程,任意输入10个整数,按从小到大的顺序输出。
结果:输入: 9、7、8、6、7、5,输出: 5、6、7、7、8、9。
分析:用选择法排序。
main()/* sj1-3-1 */{int j,k,e,t,a[10];for(j=0;j<10;j++) scanf("%d",&a[j]);for(j=0;j<9;j++){t=j;for(k=j+1;k<10;k++) if(a[t]>a[k]) t=k;e=a[t];a[t]=a[j];a[j]=e; }for(k=0;k<10;k++)printf("%5d",a[k]);printf("\n");}3-2. 编程,任意输入10个人的成绩,按从大到小的顺序排列。
运行程序时,只要输入名次,计算机就能输出该名次对应的成绩。
结果:输入: 4、7、3、6、1、5,12,0,23,-1输入: 4输出: The 4th is 6分析:用选择法排序。
第n名是a[n-1]。
main()/* sj1-3-2 */{int j,k,e,t,n,a[10];for(j=0;j<10;j++) scanf("%d",&a[j]);printf(“nput a number:\n”);scanf(“%d”,&n);for(j=0;j<9;j++){t=j;for(k=j+1;k<10;k++) if(a[t]>a[k]) t=k;e=a[t];a[t]=a[j];a[j]=e; }printf(“The %dth is %d\n”,n,a[n-1]);for(k=0;k<10;k++)printf("%5d",a[k]);printf("\n");}3-3. 编程,输入10个人的序号和成绩,对成绩从小到大排序,输出排序后的序号和成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言作业3 43. 缩写展开成绩: 10 / 折扣: 0.8在保存字符串时,对出现在连续位置的若干个字符,如这些字符在ASCII表中也是连续出现,则可以将这些字符使用缩写形式进行保存,以节省保存空间。
例如用A-Z表示ABCD...XYZ,1-5表示12345,c-f表示cdef。
输入:包含缩写形式的字符串输出:将缩写形式进行还原后的字符串说明:只分别对大写字母、小写字母和数字进行压缩,对于形如9-A,a-C这样的缩写不进行处理。
测试输入期待的输出时间限制内存限制额外进程测试用例1以文本方式显示1.0-9↵以文本方式显示1.0123456789↵1秒64M 0测试用例2以文本方式显示1.G-I↵以文本方式显示1.GHI↵1秒64M 0测试用例以文本方式显示1.ABDG-K035-9abd-h↵以文本方式显示1.ABDGHIJK0356789abdefgh↵1秒64M 0#include <stdio.h>int main(){int i=0;char s[100];gets(s);while(s[i]!='\0'){if(s[i+1]!='-'){printf("%c",s[i]);i++;}else{if(s[i+2]>s[i] && ((s[i]<=57)+(s[i+2]<=57)!=1) && (s[i]<=57||s[i]>=65)){while(s[i]!=s[i+2]){printf("%c",s[i]++);}i+=2;}else printf("%c",s[i++]);}}printf("\n");return 0;}44. 函数递归成绩: 10 / 折扣: 0.8编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。
1 当n >= 0 且n <= 4 时f( n ) = f(n-1) + f(n-3) 当n > 4 且n为偶数时f(n-2) + f(n-4) 当n > 4 且n为奇数时-1 其他函数原型如下:int findf(int n);参数说明:n 项数;返回值是第n项值。
例如输入:10,输出:8预设代码前置代码view plaincopy to clipboardprint?1./* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */2.3.#include <stdio.h>4.5.int main()6.{ int n,s, findf( int );7.scanf("%d", &n);8.s = findf(n);9.printf("%d\n", s);10.return 0;11.}12.13./* PRESET CODE END - NEVER TOUCH CODE ABOVE *//* PR ESET CO D E B EG I N - N EVER TO U CH CO D E B ELO W */#incl ude <st di o.h>int m ai n(){i nt n,s, f i ndf ( i nt );scanf ("%d", &n);s = f i ndf (n);pr i nt f ("%d\n", s);r et ur n 0;}/* PR ESET CO D E EN D - N EVER TO U CH CO D E AB O VE */测试输入期待的输出时间限制内存限制 额外进程测试用例 1以文本方式显示 1. 10↵以文本方式显示 1. 8↵无限制64Mint findf(int n){ if(n>=0&&n<=4) return 1; else if(n>4&&n%2==0) return findf(n-1) + findf(n-3); else if(n>4&&n%2==1) return findf(n-2) + findf(n-4); else return -1; }45. 大家再来做游戏成绩: 10 / 折扣: 0.8还是那个大家做游戏的问题:幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。
规则如下:所有的小朋友绕成一圈,顺序排号,给出开始报数的小孩的编号后,从这个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,接着从下一个小朋友在从1开始报数,直到只剩下一位小朋友游戏才中止。
输入:小朋友的个数(<=50)开始报数的小孩的编号要被练习的数字输出:最终被留下的小朋友的序号例如输入:4 1 3输出:The left child is NO 1.说明:这次,以函数的方式实现上述问题。
主函数已经给出,仅需提交自己编写的函数。
这个问题是著名的约瑟夫问题,基于著名犹太历史学家Josephus讲述的一个,所以函数的名字是josephus。
函数原型:int josephus( int * boy, int n, int m, int r)参数说明:int * boy:保存参加游戏的小孩编号的整型数组的首地址。
小孩的编号从1开始。
int n:开始参加游戏的小孩总数。
int m:开始时第一次报数的小孩的编号。
int r:要被练习的数字。
预设代码josephus.cview plaincopy to clipboardprint?1./* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */2.3.#include "stdio.h"4.int josephus( int *boy, int n, int m, int r );5.6.int main( )7.{ int i, boy[50]={0}, n, m, r;8.scanf("%d%d%d",&n,&m,&r);9.if( n<=0 || n>50 || m<=0 || m>50 || r<=0 )10.printf("The number is wrong!\n" );11.else12.{13.for( i=0; i<n; i++ )14.boy[i] = i + 1;15.printf( "The left child is NO %d.\n", josephus( boy, n, m, r ) );16.}17.return 0;18.}19.20./* PRESET CODE END - NEVER TOUCH CODE ABOVE *//*PR ESET CO D E B EG I N-N EVER TO U CH CO D E B ELO W*/#i ncl ude "st di o.h"i nt j osephus(i nt*boy,i nt n,i nt m,i nt r);i nt m ai n(){i nt i,boy[50]={0},n,m,r;scanf("%d%d%d",&n,&m,&r);i f(n<=0 ||n>50 ||m<=0 ||m>50 ||r<=0 )pr i nt f("The num ber i s w r ong!\n");el se{f or(i=0;i<n;i++ )boy[i]= i+ 1;pr i nt f("The l ef t chi l d i s N O%d.\n",j osephus(boy,n,m,r));}r et ur n 0;}/*PR ESET CO D E EN D-N EVER TO U CH CO D E AB O VE */测试输入期待的输出时间限制内存限制额外进程测试用例1 以文本方式显示1. 4 1 3↵以文本方式显示1.The left child is NO 1.↵无限制64M 0测试用例2 以文本方式显示1.7 2 3↵以文本方式显示1.The left child is NO 5.↵无限制64M 0int josephus( int * boy, int n, int m, int r){int j;if(n>1){if((m+r-1)%n!=0){for(j=(m+r-1)%n-1;j<n-1;j++)boy[j]=boy[j+1];return josephus(boy,n-1,(m+r-1)%n,r);}else{return josephus(boy,n-1,1,r);}}if(n=1){return boy[0];}}H18:拱猪计分(选作)成绩: 5 / 折扣: 0.8背景:拱猪是一种很有趣的扑克牌游戏。
即使你不知道它的玩法,你也可以由它的计分方式来了解它的趣味性。
假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的计分规则,在牌局结束时计算四位玩家所得分数。
1.我们分别以S、H、D及C来代表黑桃,红心,方块及梅花,并以数字1至13来代表A、2、…、Q、K等牌点,例如:H1为红心A,S13为黑桃K。
2.牌局结束时,由各玩家持有的有关计分的牌(计分牌)仅有S12(猪),所有红心牌,D11(羊)及C10(加倍)等16张牌。
其它牌均弃置不计。
若未持有这16张牌之任一张则以得零分计算。
3.若持有C10的玩家只有该张牌而没有任何其它牌则得+50分,若除了C10 还有其它计分牌,则将其它计分牌所得分数加倍计算。
4.若红心牌不在同一家,则H1至H13等13张牌均以负分计,其数值为-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。
而且S12与D11分别以-100及+100分计算。
5.若红心牌H1至H13均在同一家,有下列情形:o所有红心牌以+200分计算。
o若S12、D11皆在吃下所有红心牌之一家,则此玩家得+500分。
o而C10还是以前面所述原则计算之。
例一:若各玩家持有计分牌如下:( 每列代表一玩家所持有之牌)S12 H3 H5 H13D11 H8 H9C10 H1 H2 H4 H6 H7H10 H11 H12则各家之得分依序为:-148 、+83 、-138 及-60 。