c程序设计谭浩强期末考试题Word格式.docx
- 文档编号:16028014
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:11
- 大小:25.61KB
c程序设计谭浩强期末考试题Word格式.docx
《c程序设计谭浩强期末考试题Word格式.docx》由会员分享,可在线阅读,更多相关《c程序设计谭浩强期末考试题Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
%s\n”,s);
2.输入1个长整数,求各位数字的平方和。
例如:
输入123,输出14。
voidmain()
{intdigit;
longin,s;
scanf("
%ld"
&
in);
;
while(in>
0){
s=s+digit*digit;
printf("
sum=%ld\n"
s);
二、程序阅读题
1.写出下面程序运行结果(5分)
#defineMSIZE8
charim[MSIZE][MSIZE+1]={“********”,
“########”,
“#**#***#”,
“####***#”,
“********”,
“#*******”,
“########”
};
inti,j;
for(j=MSIZE-1;
j>
=0;
j--)
for(i=0;
i<
MSIZE;
i++)
printf(“%c”,im[i][j]);
printf(“\n”);
2.写出下面程序运行的输出结果(5分)
voidmain()
char*str1="
"
*str2=”123424315”;
intx=0,i;
str1[i]!
='
\0'
&
str2[i]!
;
if(str1[i]==str2[i])x++;
%d\n"
x);
3.写出下列程序的输出结果(4分)
main()
{inta=4,b=6;
a=%d\n"
a<
<
1);
b=%d\n"
b>
4.写出调用函数f(-123)的输出结果是多少。
(6分)
voidf(intn)
if(n<
0)
{
printf(“-”);
f(-n);
elseif(n<
2)
printf(“%d”,n);
else
f(n/2);
printf(“%d”,n%2);
三、读程序,找出其中存在的10个错误并修改。
#defineNUM3
structproblems{
charproblem[20];
intanswer;
}mypros[NUM]={{”2+3=”,5},{”2*3-13=”,-7},{“(2*31*5)%3=”,1}};
intmain(void)
{
inti=0,a,score;
printf(“testbegin:
\n”)
for(i=0,i<
num;
printf(“problem%d:
\n”,i+1);
printf(“%c\n”,problems[i].problem);
scanf(“%d”,a);
if(a=problems[i].answer)score++;
score=10×
score;
printf(“yourscore:
%d\n”,score);
return0;
/*indicatessuccessfultermination*/
}/*endmain*/
错误的语句:
修改为:
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
四、编程。
1、首先按要求生成两个有序链表p和q如下图所示:
p……
q……
然后将这两个链表合并生成一个新的链表head,使得head仍然从大到小有序,并且不允许有重复的元素。
最后将新的链表输出。
(本题25分)
比如,p、q链表中节点data的值若分别为:
p:
12,11,10,9,8,7,6,5,4,3
q:
15,13,11,9,7
则生成的head链表中节点data的值为:
15,13,12,11,10,9,8,7,6,5,4,3
structnode
{intdata;
structnode*next;
{inta[]={12,11,10,9,8,7,6,5,4,3};
intb[]={15,13,11,9,7};
structnode*p,*q,*head;
/*以下程序实现生成链表p和q,使得p链表中节点data的值依次为a数组,
q链表中节点data的值依次为b数组*/
/*按题意要求合并生成新的链表head*/
/*输出链表head*/
2.把一英文文章中的字母全部转换成密文字母输出到另一个文件中,文中其他字符以及换行不变。
字母转换规则为:
A->
E,B->
F,…,V->
Z,W->
A,…Z->
D,a->
e,b->
f,…,v->
z,w->
a,…z->
d,即变成其后面第四个字母。
文件名用命令行参数给出。
假设源程序名,命令行写法如下:
encrypt
其中为原始的英文文章,为完成加密后的新文件。
(本题15分)
二
1.输入10个点的坐标(设坐标为整数值),输出距原点最远的点(设唯一)的坐标及该点距原点的距离.
struct{
intx,y;
floatlength;
}point[10];
intk,sub=0;
for(k=0;
k<
10;
k++){
%d%d"
point[k].x,&
point[k].y);
point[k].length=
for(k=1;
k<
k++)
if()
(%d,%d)%f\n"
point[sub].x,point[sub].y,point[sub].length);
2.以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.
{intnum[26]={0},i;
charc;
while((________)!
#'
)
if(isupper(c))num[c-‘A’]+=________;
26;
大写字母%c的个数是%d\n"
);
3.函数main()的功能是:
在带头结点的单链表中查找数据域中值最小的结点.请填空
{intdata;
structnode*next;
intmin(structnode*first)/*指针first为链表头指针*/
{strctnode*p;
intm;
p=;
m=;
p=p->
next;
for(;
p!
=NULL;
p=________)
if(p->
data<
m);
returnm;
1.写出下面程序运行的输出结果(6分)
inti,j;
for(i=3;
i>
=1;
i--)
{for(j=1;
j<
=2;
j++)
%d"
i+j);
\n"
);
}
2.写出下面程序的输出结果(3分)
#include<
intfun(inta,intb)
{if(b==0)
returna;
else
return(fun(--a,--b));
{printf("
fun(4,2));
3.写出输出结果是多少。
(5分)
{intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;
j;
switch(j)
{case1:
case2:
(*p)++);
break;
case3:
*(p--));
4.写出输出结果是多少。
(6分)
voidfun1(char*p)
{char*q;
q=p;
while(*q!
{(*q)++;
q++;
{chara[]="
Program"
*p;
p=&
a[3];
fun1(p);
%s\n"
a);
三、改错题(20分)
include<
intisprime()
inti;
for(i=2,i<
=n;
i++)
if(n%i=0)return0;
return1;
primesfrom1to100:
for(i=2;
j=0;
=100;
i++);
if(isprime(i))
{
printf("
%d,i"
j++;
IF(j%5==0)printf("
四、编程(共40分)。
1.编写一个程序,将主函数给出的一个有序数组,利用编写的二分法(折半法)查找函数,查找主函数给出的数,如找到,返回数组的下标。
主程序的框架以及部分代码给出,二分法的函数原型也已给出。
(本题20分)
#defineSIZE10
/*functionprototypes*/
intbinarySearch(int*p,intsearchKey,intlow,inthigh);
………
/*functionmainbeginsprogramexecution*/
inta[SIZE]={88,77,66,55,44,33,22,11,8,2};
/*createarraya*/
intkey;
/*valuetolocateinarraya*/
…………
printf("
Enteranumberbetween0and
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 谭浩强 期末 考试题