北理C语言作业及答案2
34 北理工的恶龙
成绩: 10 / 折扣: 0.8
背景:
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花最少的学分数杀死恶龙,于是找到你寻求帮助。
输入:
第一行龙头数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 杀鸡用牛刀——要用递归啊!
成绩: 5 / 折扣: 0.8
背景:
哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
北理工C语言编程网上作业答案
北理工C语言编程网上作业答案H1:计算通用产品代码(UPC)的校验位(选作)成绩: 5 / 折扣: 0.8背景许多年来,货物生产商都会把超市售卖的每件商品上放置一个条码。
这种被称为通用产品代码(Universal Product Code,缩写UPC)的条码可以识别生产商和产品。
超市可以通过扫描产品上的条码来确定支付此项商品的费用。
每一个条码由十二位数字构成,通常这些数字会显示在条码下面。
例如,包装为26盎司的Morton牌碘化盐所用条码下的数字是:0 24600 01003 0第一个数字表示商品的种类(0表示大部分的食品杂货,2表示需要称量的货品,3表示药品或和健康相关的商品,而5表示优惠券)。
接下来的一组五位数字用来识别生产商。
而第二组五位数字则用来区分产品类型(其中包括包装尺寸)。
最后一位数字是“校验位”,它可以帮助鉴别先前数字中的错误。
如果条码扫描出现错误,那么前十一位数字和最后一位数字可能会不一致,而超市扫描机也会拒绝整个条码。
下面是一种计算校验位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。
然后把第二位、第四位、第六位、第八位和第十位数字相加。
接着把第一次加法结果乘以3后再加上第二次加法的结果。
随后,再把上述结果减去1。
减法后的结果除以10取余数。
最后,用9减去上一步骤中得到的余数。
现在以Morton 碘盐为例,第一组数字的加法是0+4+0+0+0+3=7,而第二组数字的加法是2+6+0+1+0=9。
把第一组加法值乘以3后再加上第二组加法值得到的结果是30。
再减去1,结果变为29。
再把这个值除以10取余数为9。
9在减去余数结果9,最终值为0。
输入每次输入三行数据,第一行是UPC的第一位数字,第二行是UPC的第一组五位数字,第三行是UPC的第二组五位数字。
输出UPC的校验位提示本题有隐藏测试用例。
如果想多找不同的实例验证你的算法,可以拿身边书或食品背后的条码测试一下。
北理工《C语言程序设计》在线作业_2
北理工《C语言程序设计》在线作业试卷总分:100 测试时间:-- 试卷得分:100一、单选题(共40 道试题,共80 分。
)得分:801. 下列程序执行的结果是()。
A=1;b=2;c=3;While(b<a<c){t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);A. 1,2,0B. 2,1,0C. 1,2,1D. 2,1,1正确答案:B 满分:2 分得分:22. 已知“int a=4,b=5,c;”,则执行表达式“c=a=a>b”后变量a的值为()。
A. 0B. 1C. 4D. 5正确答案:B 满分:2 分得分:23. 若有char a[80],b[80];则正确的是()。
A. puts(a,b);B. printf(“%s,%s”a[ ],b[ ]);C. putchar(a,b);D. puts(a);puts(b);正确答案:D 满分:2 分得分:24. 在以下对C语言的描述中,正确的是()。
A. 在C语言中调用函数时,只能将实参数的值传递给形参,形参的值不能传递给实参B. C语言函数既可以嵌套定义又可以递归调用C. 函数必须有返回值,否则不能使用函数D. C语言程序中有定义关系的所有函数都必须放在同一源文件中正确答案:A 满分:2 分得分:25. C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是()。
A. 地址传递B. 值传递C. 由实参传给形参,并由形参传回给实参D. 由用户指定传递方式正确答案:B 满分:2 分得分:26. 执行以下程序段后,c3的值是()。
int c1=1,c2=2,c3; c3=c1/c2;A. 0B. 1/2C. 0.5D. 1正确答案:D 满分:2 分得分:27. C语言结构类型变量在程序执行期间()。
A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中。
北理C语言作业及答案2
34 北理工的恶龙成绩: 10 / 折扣: 0.8背景:最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花最少的学分数杀死恶龙,于是找到你寻求帮助。
输入:第一行龙头数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 杀鸡用牛刀——要用递归啊!成绩: 5 / 折扣: 0.8背景:哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
2022年北京理工大学公共课《C语言》科目期末试卷B(有答案)
2022年北京理工大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=_______;b=a-_______;a-=_______;2、在C语言源程序中,一个变量代表【】。
3、一个C语言源程序由若干函数组成,其中至少应含有一个________4、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为_______,n的值为_______。
5、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为_______。
6、测试char型变量a第6位是否为1的表达式是_______(设最右位是第1位)。
7、函数swap(int x,inty)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。
a[o]=1;a[1]=2;swap(a[o],a[1]);8、字符串"ab\n\\012\\\"”的长度是_______。
9、下面程序段将输出computer。
请填空。
char c[]="It is a computer";for(i=0;_______;i++){_______;printf("%c",c[j]);}10、以下程序段通过指针变量q,但不移动q,将如图所示连续动态存储单元的值,从第一个元素起依次输出到终端屏幕。
请填空。
(假设程序段中的所有变量均已正确说明。
)for(k=0;k<10;k++) printf("%d,",_______); printf("\n");二、选择题11、下面4个选项中,是不合法的整型常量的选项是 ( )。
A.--0f1B.-0XcdfC.-018D.-0x48eg0xfff 017 999 -0680011 12.456 5e2 03f12、下面4个选项中,是不合法的用户标识符的选项是( )。
北理工《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语言期末考试试题及答案
北理c语言期末考试试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. intB. stringC. floatD. double答案:A2. C语言中,用于定义一个结构体的关键字是?A. structB. unionC. enumD. class答案:A3. 在C语言中,以下哪个不是合法的变量名?A. _myVarB. my_varC. 2myVarD. myVar2答案:C4. 下列哪个选项不是C语言中的运算符?A. %B. &&C. ==D. ::5. C语言中,用于声明一个函数的关键字是?A. functionB. defC. voidD. int答案:C6. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!D. 'Hello, World!'答案:A7. C语言中,用于执行循环的关键字是?A. loopB. repeatC. whileD. do答案:C8. 下列哪个选项是C语言中的正确注释?A. /* This is a comment */B. // This is a commentC. //* This is a commentD. /* This is a comment答案:A9. C语言中,用于定义一个枚举类型的关键字是?B. typedefC. unionD. struct答案:A10. 在C语言中,以下哪个选项是正确的数组声明?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[5] = {1, 2, 3};C. int arr[] = {1, 2, 3, 4, 5};D. int arr[5] = {1, 2, 3, 4};答案:A二、填空题(每题2分,共20分)1. 在C语言中,用于定义一个全局变量的关键字是________。
北理工《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语言程序设计教程北京理工大学出版社-部分课后习题答案
}
===========================================
CP6
5./*计算6个学生5门课成绩,每人的平均成绩。*/
#include<stdio.h>
void main()
{
int i,j,xuesheng;
double fen,mean,zongfen;
{
j=100*a+10*b+c;
if ( ex(j) )
printf ("%d=%d*%d*%d+%d*%
d*%d+%d*%d*%d\n", j,a,a,a,b,b,b,c,c,c);
}
}
int ex (int m)
{
int sum=0, z, k;
z=m;
while (z>0)
{
k= z%10;
sum += k*k*k;
a[100],b[100]调用此函数,交换a、b中具有相同下标的数组元素的值,
且输出交换后的a、b数组。
/*p279_1.c*/
//this is a wrong program
#include "stdlib.h"
void swap(int *pa,int *pb)
{
int t;
t=*pa;*pa=*pb;*pb=t;
while(strcmp(s,"stop")!=0)
{
p=s;
while(*p!='\0')
{
if(*p==32||*p=='\0')n++;p++; Nhomakorabea}
北理C语言作业及问题详解2
34 北理工的恶龙成绩: 10 / 折扣: 0.8背景:最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花最少的学分数杀死恶龙,于是找到你寻求帮助。
输入:第一行龙头数 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 杀鸡用牛刀——要用递归啊!成绩: 5 / 折扣: 0.8背景:哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
