( 2007-2008学年度第2学期 2007级 )
[闭卷,试卷共 页,答题时间120分钟]
学号 姓名
专业 计算机科学与技术 班号 2007级05、06班 系 计算机 (说明:请考生将答案写在“武汉大学珞珈学院考试答题纸”纸上并标明题号,否则不得分。)
一、选择题(每小题2 分,共20 分。)
1、正确的标识符是____A__ 。
A. _a123 | B. 3z | C. “next” | D. ‘A’ |
2、表达式2.5+7%2-5/2*2的结果为____C__ 。
A. 3.5 | B. 1.5 | C. -0.5 | D. -1.5 |
3、下面的四个选项中,正确的整型常量是____B__ 。
A. x234F | B. 068 | C. 0672 | D. 07aL |
4、设有如下宏定义 #define weight 10
#define price (1+weight)
A. 41 | B. 200 | C. 201 | D. 220 |
5、设有变量定义:int m=5,n=3;则执行表达式((m+=2)>=7)||((n-=3)<10)lol符文页
后,m,n的值分别为_____ D _。
A. 5和0 | B. 5和3 | 窦智孔个人资料 C. 7和0 | D. 7和3 |
6、 B 不属于三种基本程序结构。
A. 顺序 | B. 转移 | C. 选择 | D. 循环 |
7、设long a[50],*p;执行p=a+2; 后*(p+4)等价于___C_____。
A. a[2] | B. a[4] | 生活需要阳光C. a[6] | D. 无法确定 |
8、表达式0x7586&0xff00结果为____D__ 。
A. 0x86 | B. 0x7586 | C. 7500 | D. 0x7500 |
9、采用只读模式打开二进制文件””,下面正确的打开模式是 A_ 。
A. “rb” | B. “rb+” | C. “r” | D. “r+” |
10、已知各变量的类型说明如下:
int i=8, k, a, b;
unsigned long w=5;
double x=1.42, y=5.2;
则以下符合C语言语法的表达式是 B 。
int i=8, k, a, b;
unsigned long w=5;
double x=1.42, y=5.2;
则以下符合C语言语法的表达式是 B 。
A. a=a*3=2; | B. a+=a-=(b=4)*(a=3); | C. x%(-3); | D. y=float(i); |
二、程序阅读题(每题 5 分,共 25 分)
#include <stdio.h>
int main()
{ int x=5;
while(x++<10)
{ do{
printf("%6d",x++);
}while(x<11);
x--;
}
return 0;
}
答案: 6 7 8 9 10
2、分析以下程序执行流程,写出程序执行结果。
#include <stdio.h>
int main()
{ void f1(int);
int x;
for(x=2;x<6;x++)
f1(x);
return 0;
}
void f1(int z)
{ int x=5;
static int y=10;
x++;
printf("%d+%d+%d=%d\n",x,y,z,x+y+z);
y+=10;
}
答案:6+10+2=18
6+20+3=29
6+30+4=40
6+40+5=51
3、分析以下程序的执行流程,指出程序的功能。
#include <stdio.h>
int main()
{ int a[5]={1,5,2,4,3},i,j,t;
for(j=1;j<=4;j++)
for(i=0;i<=4-j;i++)
if(a[i]<a[i+1])
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
for(i=0;i<5;i++) printf("%d",a[i]);
return 0;
}
答案:数组a按照从大到小的顺序排序。
4、分析以下程序的执行流程,指出程序的功能。
#include <stdio.h>
int prime(int number)
{ int flag=1,n;
for(n=2;n<number/2&&flag==1;n++)
立春吃什么传统食物 if(number%n==0)
flag=0;
return(flag);
}
int main()
{ int number;
printf("请输入一个正整数:\n");
scanf("%d",&number);
if(prime(number))
printf("\n %d ",number);
return 0;
}
答案:判断一个整数是否是素数。
5、以下程序计算-32768-3,执行以下程序,得到如下所示的运行结果,请分析程序执行流程,解释结果为什么不是-32771?并指出该如何修改。
#include <stdio.h>
int main()
{ short int a,b;
a=-32768;
b=a-3;
printf("a=%d,b=%d\n",a,b);
}
运行结果:
a=-32768,b=32765
答案: short int数据范围为[-32768,32767],数据溢出。
short int改long int。%d改%ld。
short int改long int。%d改%ld。
三、程序填空题(请在空白处填写正确内容,以完成程序;每空1分,共 10 分)
1、将100~200之间(包括100和200)不能被7整除的数输出。
#incude <stdio.h>
int main()
{ int (1) ;
for(n=100; (2) ; (3) )
{ if( (4) 大唐荣耀结局==0)
(5) ;
printf(“%4d”,n);
}
return 0;
}
答案:(1) n
(2) n<=200
(3) n++或者++n或者n+=1或者n=n+1
(4) n%7
(5) continue
#include <stdio.h>
int main()
{ char s1[50], (6);
(7) i=0;
scanf(“%s’, (8) );
while( (9) )
{ (10) ;
i++;
}
s2[i]=0;
printf(“%s\t%s\n”,s1,s2);
return 0;
}
答案: (6) s2[50]
(7) int或者short int或者char或者long int
(8) s1
(9) s1[i]!=’\0’或者s1[i]!=0或者s1[i]
(10) s2[i]=s1[i]
四、函数实现题(每题 15 分,共 30 分,说明: 本题写出函数即可,不必写出main函数)
1、设计一个函数count(s, t); 其中s为字符串,t为单个字符。如果t为大小写字母,则函数count统计字符串s中t对应的字母(大小写字母均统计在内)出现的次数。例如,count(“aAdgfASa”,’a’)函数调用的返回值为4。如果t为其他字符,则直接统计该字符出现的次数。
答案:
int count(char *s,char t)
{ int k=0;
while(*s)
{ if(t>=’a’&&t<=’z’)
{ if(*s==t||*s=t-32)
k++;
}
else
if(t>=’A’&&t<=’Z’)
{ if(*s==t||*s=t+32)
k++;
}
else
if(*s==t)
k++;
s++;
}
return k;
}
分析程序执行流程基本正确,流程图和程序执行流程基本一致为评分标准。
2、 设计一个函数reverse(a,n);其中a为数组,n为a的元素个数。该函数将数组a按逆序重新存储。例如,原数列为6,8,10,12,14,则调用reverse(a,5);后数组a按逆序重新排列,则为14,12,10,8,6。
答案:
void reverse(int *a,int n)
发布评论