c程序设计谭浩强期末考试题Word格式.docx

上传人:b****5 文档编号:16028014 上传时间:2022-11-17 格式:DOCX 页数:11 大小:25.61KB
下载 相关 举报
c程序设计谭浩强期末考试题Word格式.docx_第1页
第1页 / 共11页
c程序设计谭浩强期末考试题Word格式.docx_第2页
第2页 / 共11页
c程序设计谭浩强期末考试题Word格式.docx_第3页
第3页 / 共11页
c程序设计谭浩强期末考试题Word格式.docx_第4页
第4页 / 共11页
c程序设计谭浩强期末考试题Word格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c程序设计谭浩强期末考试题Word格式.docx

《c程序设计谭浩强期末考试题Word格式.docx》由会员分享,可在线阅读,更多相关《c程序设计谭浩强期末考试题Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

c程序设计谭浩强期末考试题Word格式.docx

%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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1