C语言上机考试复习题keyWord格式.docx
- 文档编号:22880319
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:28
- 大小:234.50KB
C语言上机考试复习题keyWord格式.docx
《C语言上机考试复习题keyWord格式.docx》由会员分享,可在线阅读,更多相关《C语言上机考试复习题keyWord格式.docx(28页珍藏版)》请在冰豆网上搜索。
原数组为{2,3,5,7,9},输入4,则新数组为{2,3,4,5,7,9}
13、定义函数,判断某数是否是水仙花数,调用该函数找出100-999之间的水仙花数
14、用行指针法寻找3*4矩阵中的最大值
15、任意输入10个数,定义函数,找出其中的最大值和最小值,并在主调函数中输出这两个值(利用指针实现)
16、输入两个整数,将他们互换,用带参数的宏来实现。
17、输入两个整数,求他们的最大值,定义外部函数来实现。
(类比15题)
18、通过指针变量来输出九九乘法表。
19、通过指针变量实现1+2+3+……+n,在程序中输出改结果。
20、将n个数按输入时顺序的逆序排列,用函数实现。
21、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:
(1)输入10个数;
(2)进行处理;
(3)输出10个数。
22、编程实现输入n(n<
1000)个整数到指定数组,求该数组中最大元素的值和此元素的下标,最大元素值以函数值返回,此元素的下标通过指针形参返回调用处。
23、已知节点结构如下:
structstudent
{
Charno[7];
Charname[9];
Structstudent*next;
}
(1)定义函数creat,从无到有地创建一个新链表,保存若干节点信息,节点个数不限
(2)定义函数show,,输出链表中所有节点信息
24、用字符数组存储任意输入的10个字符,在子函数中把该字符数组的小写字母转换成大写字母。
(类比6)
25、输入一串字符,以‘?
’结束,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次数相同的按字母表顺序输出,不出现的字母不输出)。
例:
输入:
5b3a+4-hdeh5dh?
输出:
h3
d2
a1
b1
e1
26、编写函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
(要求利用指针完成,不使用全局变量)
27、写一函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
(要求利用指针完成,不使用strlen函数)
28、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中,不用strcpy函数。
注意,复制时,’\0’也要复制过去。
‘\0’后面的字符不复制。
(要求用指针实现)
29、输入三个数,用指针变量的方式按由小到大的顺序输
30、链表头插,尾插,反序,插入,删除,浏览,存盘,读取。
#include<
stdlib.h>
typedefintelemtype;
typedefstructnode
{elemtypedata;
structnode*next;
}NODE;
NODE*h_creat()
{NODE*p,*head;
intlen;
printf("
请问要创建几个节点?
:
"
);
scanf("
%d"
&
len);
head=(NODE*)malloc(sizeof(NODE));
head->
next=NULL;
while(len)
{
p=(NODE*)malloc(sizeof(NODE));
printf("
请输入该节点数据:
scanf("
p->
data);
p->
next=head->
next;
head->
next=p;
len--;
}
returnhead;
voidreverse(NODE*head)
NODEstack[1024],*p=head->
inti=0;
while(p)
stack[i].data=p->
data;
i++;
p=p->
p=head->
while(i>
0)
data=stack[--i].data;
NODE*t_creat()
{NODE*head,*tail,*p;
:
tail=head=(NODE*)malloc(sizeof(NODE));
{p=(NODE*)malloc(sizeof(NODE));
tail->
tail=p;
voidview(NODE*head)
{NODE*p=head->
链表数据如下:
\n"
{printf("
%d"
p->
NODE*search(NODE*head,intkey)
{NODE*p;
{if(p->
data==key)
{returnp;
returnNULL;
voiddestroylist(NODE*head)
next,*q;
{q=p->
free(p);
p=q;
free(head);
intinsert(NODE*head,NODE*p,intpos)
{NODE*q=head->
if(pos==0)
插入位置不合理!
return0;
pos--;
while(pos)
{pos--;
q=q->
p->
next=q->
q->
return1;
voiddele(NODE*head,NODE*p)
next,*r=head;
while(q!
=p)
{q=q->
r=r->
//r晚走一步,循环结束,获得的是待删除节点的首地址
r->
next=p->
voidmain()
{NODE*head1,*head2;
NODE*p;
intdata,pos;
开始创建第一条链表:
head1=h_creat();
view(head1);
destroylist(head1);
\n开始创建第二条链表:
head2=t_creat();
view(head2);
\n请输入待查找的键值,查找将在第2条链上进行:
if(search(head2,data)==NULL)
没有找到该结点!
else
找到该结点!
reverse(head2);
//反序
\n准备插入新结点:
p=(NODE*)malloc(sizeof(NODE));
请输入待插入结点的键值:
请输入待插入的位置:
pos);
if(insert(head2,p,pos))
view(head2);
\n准备删除结点:
请输入待删除结点的键值:
if((p=search(head2,data))==NULL)
没有找到该结点,不能删除!
else
{dele(head2,p);
删除后"
destroylist(head2);
voidsave(NODE*head)
{FILE*fp;
NODE*p=head->
fp=fopen("
line.dat"
"
w"
if(fp==NULL)
{…}
{fwrite(p,sizeof(NODE),1,fp);
fclose(fp);
NODE*load()
FILE*fp;
r"
while(!
feof(fp))
fread(p,sizeof(NODE),1,fp);
if(feof(fp))
{free(p);
break;
31、堆栈的思想解决计算某数的二进制问题
#defineN1024
typedefstructstack
{intdata[N];
inttop;
}STACK;
STACKs;
voidinit_stack()
{s.top=0;
voidpush(intn)
{s.data[s.top]=n;
s.top++;
voidconvert(intn)
{while(n)
{push(n%2);
n/=2;
n);
intpop()
{intk;
k=s.data[--s.top];
returnk;
voidprn()
{while(s.top)
pop());
{intn;
请输入待转换的整数:
n);
init_stack();
convert(n);
转换后的数为:
prn();
综合应用三题
//门诊
string.h>
{intno;
structnode*link;
NODE*front;
NODE*rear;
voidinitqueue()
front=rear=p;
intemptyqueue()
{if(front==rear)
return1;
return0;
voidenqueue(intno)
no=no;
link=NULL;
front->
link=p;
rear=p;
intdelqueue()
NODE*p=front->
link;
if(!
emptyqueue())
{no=p->
no;
front->
link=p->
if(p->
link==NULL)
front=rear;
returnno;
return-1;
{intno=1;
intdno;
initqueue();
intsel;
while
(1)
--------------------\n"
1新病人排队\n"
2报号\n"
3退出\n"
请选择:
sel);
switch(sel)
{
case1:
enqueue(no);
no++;
break;
case2:
dno=delqueue();
if(dno==-1)
printf("
无排队病人!
else
{
printf("
请第%d号病人速到诊室......\n"
dno);
}
break;
}
if(sel==3)break;
//一元多项式求和
{floatcoef;
//系数
intexp;
//次数
多项式如下(系数为0时不输出):
coef==0)//系数为0不输出
p=p->
(%.2f)x^%d"
coef,p->
exp);
if(p)printf("
+"
NODE*creat()
请问要创建几项?
请输入该项的系数和次数,以空格隔开:
%f%d"
coef,&
{q=p->
free(p);
p=q;
NODE*add(NODE*h1,NODE*h2)
{NODE*h,*r,*p,*q,*k;
h=r=h1;
p=h1->
q=h2->
while(p&
&
q)
exp>
exp)
{r->
next=q;
r=q;
q=q->
else
if(p->
exp<
exp)
{r->
r=p;
p=p->
else
{p->
coef+=q->
coef;
r->
r=p;
k=q;
p=p->
q=q->
free(k);
}
if(p==NULL)
r->
returnh;
{NODE*a,*b,*c;
请输入第一个多项式:
a=creat();
view(a);
\n请输入第二个多项式:
b=creat();
view(b);
c=add(a,b);
view(c);
destroylist(c);
//约瑟夫问题:
30人留15,逢9倍跳
stdio.h>
intn=30;
next=head;
while(n>
=1)
data=n;
n--;
while(p!
=head)
NODE*q;
voidjosphy(NODE*head)
NODE*q=head;
intpeople=0;
intpos=1;
while(people!
=15)
{q=p;
pos++;
if(p==head)pos--;
if(pos%9==0&
p!
{people++;
q->
一人跳入海中,他是%d号.\n"
free(p);
p=q->
pos++;
view(head);
{NODE*head;
开始创建链表:
head=h_creat();
view(head);
josphy(head);
destroylist(head);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 考试 复习题 key