第1题
[函数2.1说明]
将一个正整数分解质因数。例如:输入90,打印出90=2×3×3×5。
[函数2.1]
fun 1 ( int n )
{
int i;
for ( i=2;i<=n; i++)
{
while (((1))
{
if (n %i==0 )
{ printf ( "%d*",i );
(2)
}
else
break;
}
}
printf ( "%d",n ) ;}
[函数2.2说明]
下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第3、第4、第5只猴子都是这样做的,问海滩上原来最少有多少个桃子?
[函数2.2]
main ( )
{int i, m, j, k, count;
for ( i=4;i<10000;i+=4 )
{ count=0;
(3);
for ( k=0;k<5;k++ )
{
(4);
i=j;
if ( j%4==0 )
(5);
else
break;
}
i=m;
if ( count==4 )
{printf ( "%d\n", count) ;
break;}
}
}
第2题
【函数2.1说明】
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
【函数2.1】
Fun1 (int n)
{
int i;
for(i=2;i<=n;i++)
{
while ((1))
{
if (n%i==0)
{
printf("%d*",i);
(2);
}
else
break;
}
}
printf("%d",\n);
}
【函数2.2说明】
下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第 3、4、5只猴子都是这样做的,问海滩上原来最少有多少个猴子?
【函数2.2】
main()
{
int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{
count=0;
(3);
for(k=0;k<5;k++)
{
(4);
i=j;
if(j%4==0)
(5);
else
break;
}
i=m;
if(count==4)
{
printf("%d\n",count);
break;
}
}
}
第3题
注:C语言的同学只做链表部分,C++的同学做容器部分,可选做链表部分 一、链表部分:(C语言同学必做) 1)构建一个多文件工程,包含三个文件,link.h,link.c,main.c。 2)构造一个链表,要求链表的定义在头文件link.h,链表节点的数据部分包括姓名,年龄,成绩(姓名建议用指针定义)。 3)链表操作函数的实现为link.c,要求实现两个函数: n 链表的遍历输出; n 链表按照姓名查找某个节点,如果该节点存在,则删除该节点。 4)main.c的要求: n 从键盘读入数据,并将数据存入链表节点中创建一个链表(链表节点数量不少于3个),调用链表遍历输出所有节点; n 从键盘读入一个姓名,调用查找删除函数,再次调用遍历函数输出链表。 5)测试数据要求: 测试两次,第一次输入一个在链表中存在的节点的姓名,第二次输入一个链表节点中不存在的姓名。 6)提交要求: 将link.h,link.c,main.c文件粘贴到word中,并将两次运行结果截图粘贴到word中,以pdf形式提交。 二、容器部分:(C++语言同学必做) 1)构建一个多文件工程,包含三个文件,test.h,test.c,main.c。 2)构造一个类Test,要求类的定义在头文件test.h中,类的成员数据部分包括姓名,年龄,成绩(姓名建议采用指针定义)。 3)类的成员函数实现为test.c,要求实现两个函数: n 构造函数(带3个参数,为对象赋值); n 析构函数。 4)main.c的要求: n 定义一个Test类的容器; n 实现一个遍历函数,遍历输出容器中的所有对象; n 实现一个查找删除函数,利用姓名查找容器中的某个对象,若存在将其从容器中删除; n 从键盘读入数据,初始化Test类的对象,并将对象保存到容器中,对象数量要求不少于3个; n 遍历输出容器所有对象; n 从键盘读入一个姓名,调用查找删除函数,再次调用遍历函数输出容器内容。 5)测试数据要求: 测试两次,第一次输入一个在容器中存在的对象的姓名,第二次输入一个容器对象中不存在的姓名。 6)提交要求: 将test.h,test.c,main.c文件粘贴到word中,并将两次运行结果截图粘贴到word中,以pdf形式提交。
第4题
下列字符串是标识符的是( )。
A.aa
B.a-class
C.int
D.LINE 1
【我提交的答案】: A |
【参考答案与解析】: 正确答案:C |
C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。int就是表达整型变量类型的标识符,它不能用做变量名和函数名。
A怎么错了,不是可以作为用户标识符吗?
第5题
【说明】
有两个进程(编号分别为0和1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下【C代码1】给出了一种实现方法。
【C代码1】
int flag[2]; /+flag数组,初始化为FALSE*/
Enter_Critical_Section(int my_task_id, int other_task_id)
{ while (flag[other_task_id]==TRUE); /*空循环语句*/
flag[my_task_id]=TRUE;
}
Exit_Critical_Section(int my_task_id, int other_task_id)
{ flag[my_task_id]=FALSE;
}
当一个进程要访问临界资源时,就可以调用【C代码1】给出的这两个函数。【C代码2】给出了进程0的一个例子。
【C代码2】
Enter_Critical_Section(0,1);
……使用这个资源……
Exit_Critical_Section(0,1);
……做其他的事情……
什么是临界资源(critical resource)?请用100字以内的文字简要说明。
第6题
【说明】
希赛教育集团公司为发展生产向社会公开招聘M个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩从高分至低分的顺序进行排队录取。公司的录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿考虑录取。
程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理。
程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组rz[]的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。
【程序】
include<stdio.h>
include<malloc.h>
define M 20
define PEMARK 5
typedef struct stu{
int no, total, z[2], sortm, zi;
struct stu *next;
}STU;
struct rzmode{
int Imt, count;
STU *next;
}rz[M];
STU *head=NULL, *over=NULL;
int all
FILE *fp;
char dataf[]="pp07.dat";
print(STU *p){
for(;p!=NULL;p=p->next)
printf("%d(%d)\t",p->no,p->total);
}
insert(STU **p, STU *u){
STU *v, *q;
for(q=*p;q!=NULL;v=q,(1))
if(q->sortm<u->sortm)break;
if(q==*p)(2);
else (3);
U->next=q;
}
main(){
int zn, i, no, total, z1, z2;
STU *p, *v, *q;
fp=fopen(dataf, "r");
if(fp==NULL){
printf("Can't open file %s.\n",dataf);
exit(0);
}
fscanf(fp, "%d",&zn);
for(all=0,i=1;i<=zn;i++){
fscanf(fp,"%d",&rz[i].Imt);
rz[i].count=0;rz[i].next=NULL;
all+=(4);
}
for(;;){
if((fscanf(fp, "%d%d%d%d",&no,&total,&z1,&z2))!=4)
break;
p=(STU*)malloc(sizeof(STU));
p->no=no;
p->total=p->sortm=total;
p->zi=0;p->z[0]=z1;p->z[1]=z2;
(5);
}
fclose(fp);
for(;all && head !=NULL;){
p=head; head=head->next;
if(rz[p->z[p->zi]].count<(6)){
rz[p->z[p->zi]].count++;
insert(&rz[p->z[p->zi]].next,p);
all--;
continue;
}
if(p->zi>=1){
p->next=over;over=p;
continue;
}
p->sortm-=DEMARK; (7);
insed(&head,p);
}
for(i=1;i<=zn;i++){
printf("%d:\n",i);
print(rz[i].next);
printf("\n");
}
printf("over:\n");print(head);
print(over);printf("\n");
}
第7题
[说明]
有两个任务(编号分别为0和1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。
[代码一]
1: int flag[2]; /* flag 数组,初始化为FALSE */
2: Enter_Critical_Section(int my_task_id, int other_task_id)
3: {
4: while (flag[other_task_id] == TRUE); /* 空循环语句 */
5: flag[my_task_id] = TRUE;
6: }
7: Exit_Critical_Section(int my_task_id, int other_task_id)
8: {
9: flag[my_task_id] = FALSE;
10: }
当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务0的一个例子。
[代码二]
Enter_Critical_Section(0,1);
…使用这个资源…
Exit_Critical_Section(0,1);
…做其他事情…
什么是临界资源(critical resource)?请用100字以内文字简要说明。
第8题
A. SQL是一种非过程化的语言,不仅要提出“做什么”,还要指明“如何做”
B. SQL集数据定义语言、数据操纵语言、数据控制语言及附加语言元素于一体
C. 一条SQL语句仅能操作一条记录
D. SQL可以作为嵌入式语言和自含式语言两种方式来使用
第9题
A.出生在中国的日本孩子同时学习汉语和日语
B.中国学生学习了英语之后又开始学习法语
C.中国学生出国后同时学习英语和法语
D.外国留学生来华学习汉语
第10题
A.出生在中国的日本孩子同时学习汉语和日语
B.中国学生学习了英语之后又开始学习法语
C.中国学生出国后同时学习英语和法语
D.外国留学生来华学习汉语
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!