资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
03级计算机科学与技术专业专业(本科)
《高级语言程序设计》课程期末试卷( B)
班级 姓名 学号
题号
一
二
三
四
附加题
总分
得分
【注意】1、 考试时间120分钟
2、 考试结束本试卷连同答题纸须全部上交, 供讲评和存档用, 不交者按缺考计
3、 所有答题结果均应写在答题纸上, 写在试卷上无效
一、 单项选择题( 1~10每题1分, 11~20每题2分, 共30分)
1、 在C语言中, 用户能使用的正确标识符是【1】 。
A) 学生 B) int C) 8stu D) Int
2、 以下【2】是正确的C语言常量。
A) 543210L B) 05078 C) -0x41 D) 12345
3、 以下程序的运行结果是什么【3】 。
main( )
{
int x,a;
x=(a=3*5,a*4),a+5;
printf(”x=%d,a=%d\n”,x,a);
}
A) x=20,a=15 B) x=60,a=15 C) x=20,a=25 D) x=25,a=25
4、 下面关于C语言变量的叙述中, 错误的描述是【4】 。
A) 变量名必须由字母或下划线开头
B) 变量按所定义的类型存放数据
C) 不同基本类型的变量之间不能混合运算
D) 变量的类型确定了变量的取值范围
5、 判断char型变量c1是否小写字母的正确表示式为 【5】 。
A) 'a'<=c1<='z' B) (c1>='a')&&(c1<='z')
C) (c1>=a)&&(c1<=z) D) ('a'<=c1)||('z'>=c1)
6、 以下程序的运行结果是 【6】 。
main()
{ int x=1,y=2,z;
z=x>y?++x:++y;
printf("%d,%d,%d\n",x,y,z);
}
A) 1,2,2 B) 1,3,3 C) 2,3,3 D) 2,2,3
7、 下列程序段的运行结果为 【7】 。
char a[]="continue", *p;
p=a;
while(*p!='i')
{printf("%c", *p-32); p++;}
A) continue B) CONTINUE C) CONT D) contINUE
8、 下列对一维数组a的正确说明语句为 【8】 。
A) int a(10); B) int n=10, a[n];
C) int n; D) #define SIZE 10
scanf("%d", &n); int a[SIZE];
int a[n];
9、 以下叙述中不正确的是 【9】 。
A) 在不同的函数中能够使用相同名字的变量
B) 程序中有调用关系的函数必须放在同一个源文件中
C) 在一个函数内定义的变量, 其变量名只在本函数范围内有效
D) 函数中的形式参数是局部变量
10、 以下程序段的运行结果是 【10】 。
main()
{ char val[ ]="01234",*p=val;
int sum=0;
while (*p)
{ sum+=*p-'0';
p++;
}
printf("%d\n",sum);
}
A) 10 B) 11 C) 12 D) 13
11、 以下程序的运行结果是 【11】 。
main()
{ struct st_type
{ char name[10];
float score[3];
};
union u_type
{ int i;
unsigned char ch;
struct st_type student;
}t;
printf("%d\n",sizeof(t));
}
A) 25 B) 12 C) 3 D) 22
12、 下列程序的输出结果为 【12】 。
void fun(int *x)
{ static int a=5;
*x=++a;
}
main()
{ int t;
fun(&t);
fun(&t);
printf("%d\n",t);
}A) 8 B) 7 C) 10 D) 11
13、 以下程序的输出结果是 【13】 。
float fun(int n)
{ static float f=1.0;
f*=n;
return f;
}
main()
{ int i;
float s;
for (i=1;i<=5;i++) s=fun(i);
printf("%-8.2f\n",s);
}
A) 120.00 B) 24.00 C) 5.00 D) 720.00
14、 以下程序经过编译连接后得到的可执行文件名为teacher.exe, 在dos提示符下输入【14】 , 则在屏幕上将显示My name is Jianhui。
#include <stdio.h>
main(int argc,char *argv[])
{ int i;
for (i=1;i<argc;i++)
printf("%s%c",argv[i],(i<argc-1)?' ':'\n');
}
A) My name is Jianhuir B) teacher My name is Jianhui
C) teacher Jianhuir is My name D) Jianhuir is My name
15、 以下程序的运行结果是 【15】 。
#define A 3
#define B A+5
#define C B*B/A
main()
{ printf("C=%d,",C);
printf("3*C=%d\n",3*C);
}
A) C=8,3*C=24 B) C=12,3*C=36 C) C=19, 3*C=25 D) C=11, 3*C=23
16、 执行语句printf(”%d\n”,strlen(”abc\x41\n”));输出结果是 【16】 。
A) 5 B) 7 C) abcA D) abc\x41
17、 下列程序的输出结果为 【17】 。
main()
{ int a[3][4]={1,2,3,4,5,6,7};
int *pa=*a;
printf(”%d,%d\n”,*(pa),pa[6]);
}
A) 1,7 B) 5,6 C) 2,7 D) 2,6
18、 若定义int i; 则以下循环语句的循环执行次数是 【18】 。
for(i=2; i==0;)
printf("%d", i--);
A) 无限次 B) 0次 C) 1次 D) 2次
19、 若有下列定义:
int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int (*p)[3]=x;
则能够正确表示数组元素a[1][2]的表示式为 【19】 。
A) *(*(p+1)+2) B) *((*p+1)[2])
C) *(*(p+5)) D) *((*p+1)+2)
20、 以下程序运行结果是 【20】 。
int i;
main()
{ int i=1, j=2;
fun(fun(i, &j), &j);
}
fun(int a, int *b)
{ static int m=2;
i+=m+a;
m=++(*b);
printf("%d,%d\n", i, m);
return (m);
}
A) 3,3 B) 3,3 C) 3,3 D) 3,3
9,4 6,3 9,3 6,4
二、 程序分析题( 每题4分, 共24分)
1、 执行以下程序时, 如果从键盘输入0, 输出的结果是 【1】 。
main()
{ enum color{red,green,blue,white};
enum color fc;
printf("请输入色号:");
scanf("%d",&fc);
switch (fc)
{
case red:printf("这是红旗的颜色!");break;
case green:printf("这是森林的颜色!");break;
case blue:printf("这是大海的颜色!");break;
case white:printf("这是云彩的颜色!");break;
default:printf("其它的颜色!");
}
}
2、 以下程序的运行结果是 【2】 。
#include <stdio.h>
main()
{ char *s="0123214";
int v1=0,v2=0,v3=0;
while (*s)
{ switch(*s)
{ default:v3++;
case '1':v1++;break;
case '2':v2++;
}
s++;
}
printf("%d,%d,%d\n",v1,v2,v3);
}
3、 以下程序的运行结果是 【3】 。
main()
{ static char str[]="P#tian X#ey#an";
void fun();
fun(str);
printf("%s\n", str);
}
void fun(char s[])
{ int a, b;
for(a=b=0; s[a]!='\0'; a++)
if(s[a]!='#') s[b++]=s[a];
else s[b++]='u';
s[b]='\0';
}
4、 以下程序的输出结果是 。
#define FUN(x,y) (x)>(y)?(x):(y)
main()
{ int a=1,b=2,t;
t=10*FUN(a,b);
printf("%d\n",t);
}
5、 以下程序的输出结果是 【5】 。
main()
{ int bj();
printf("%d\n",bj("abGxyz","abg"));
}
bj(char *s1,char *s2)
{ while (*s1&&*s2&&s1!=s2)
{ s1++,s2++; }
if (*s1-*s2) return 1;
else return 0;
}
6、 以下程序运行时, 输出结果分别是 【6】 。
struct stu
{ int x;
int *y;
} *p;
int dt[4]={10,20,30,40};
struct stu a[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=a;
printf("%d,",++p->x);
printf("%d,",(++p)->x);
printf("%d\n",++(*p->y));
}
三、 程序填空题( 每空2分, 共20分)
请正确填充下面的划线部分, 使其完成所要求的功能。
1、 以下程序用于求下式的前 n 项之和S值。( n和x由键盘输入) :
1x 2x 3x 4x 5x 6x
S = ── - ── + ── - ── + ── - ── + ...
1! 2! 3! 4! 5! 6!
#include <math.h>
main()
{
int i, n ;
float s,s1;
printf ( "请输入n=") ;
scanf ( "%d",&n);
s=0, s1=1;
for (i=1;i<=n;i++)
{
【1】 ;
【2】 ;
}
printf ( "Sum=%.0f\n",s) ;
}
2、 以下程序经过简单选择排序方法, 由小到大输出各字符串。
#include <string.h>
main()
{ char *name[]={"China","Japen","America","Korea","Canada","Germany"};
char *temp;
int i,j,k,n=6;
clrscr();
for(i=0;i< 【3】 ;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k], 【4】 )>0) k=j;
if(k!=i)
{ temp=name[i];
name[i]= ;
name[k]=temp;
}
}
for (i=0;i<n;i++)
printf("%s\n",name[i]);
}
3、 invert( )函数的功能是将一个字符串str的内容倒序存放。
例如: 字符串str原内容为: abcde, 函数调用后变为: edcba。
void invert(char str[])
{ int i,j,k;
j= 【6】 ;
for (i=0; 【7】 ;i++,j--)
{ k=str[i];
str[i]=str[j];
str[j]= 【8】 ;
}
}
main()
{ char test[]="abcde";
invert(test);
printf("%s\n",test);
}
4、 下列程序的功能是显示如下形式的数字:
1 0 0 0 0 0
2 1 0 0 0 0
3 2 1 0 0 0
4 3 2 1 0 0
5 4 3 2 1 0
6 5 4 3 2 1
main()
{ int a[6][6], i, j;
for(i=0; i<6; i++)
{ for(j=0; j<6; j++)
if( 【9】 ) a[i][j]=0;
else 【10】 ;
}
for(i=0; i<6; i++)
{ for(j=0; j<6; j++)
printf("%3d", a[i][j]);
printf('\n');
}
}
四、 编程题( 第三题10分, 其余8分, 共26分)
编写的程序请写在另发的答题白纸上。答题白纸上必须写上考生姓名、 班级和学号。
1、 编写一个程序, 求3~100之间的全部非素数之和。
2、 有15个数按从小到大顺序存放在一个数组中, 当输入一个数值时, 要求用折半查找法找出该数是数组中第几个元素的值; 如果该数不在数组中, 则显示相应的提示。
define N 15
main()
{ int i, num, a[N];
printf("请按从小到大顺序输入15个数(a[i]>a[i-1])\n");
scanf("%d", &a[0]);
i=1;
while(i<N)
{ scanf("%d\n", &a[i]);
if (a[i]>a[i-1]) i++;
else
{ printf("请重新输入a[i]");
printf("必须大于%d\n", a[i-1]);
}
}
printf("Input searched data: ");
scanf("%d", &num);
search(a,num);
}
search(int *a,int num)
{
/*请将此处编写的程序段写在答题白纸上*/
}
3、 有一个班4个学生, 5门课。①求第一门课的平均分; ②找出有2门以上课程不及格的学生, 输出她们的学号和全部课程成绩和平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编三个函数实现以上要求。
附加题( 每空2分, 共10分)
已知head指向一个带头结点的单向链表, 链表中每个结点包含一整型数据成员(data)和指针成员(next)。写一个函数删除数据成员data值为num的结点。请填空。
struct node
{ int data;
struct node *next;
};
struct node *del ( 【1】 *head, int num)
{ struct node *p1,*p2;
if ( 【2】 ) {printf(”\n这是个空表! \n”); goto end;}
p1=head;
while(num!=p1->num&&p1->next!=NULL)
{ p2=p1; p1= 【3】 }
if(num==p1->num)
{ if(p1==head) head= 【4】 ;
else p2->next= 【5】 ;
printf(”删除:%d\n”,num);
n=n-1;
}
else printf(”%d 结点未找到! \n”,num);
end:
return (head);
}03级计算机科学与技术专业
高级语言程序设计期末考试卷( B)
答题纸
【注意】1、 考试时间120分钟
2、 考试结束本试卷连同答题纸须全部上交, 供讲评和存档用, 不交者按缺考计
3、 所有答题结果均应写在答题纸上, 写在试卷上无效
班级 学号 姓名 成绩
一、 单项选择题( 1~10每题1分, 11~20每题2分, 共30分)
【1】 【2】 【3】 【4】 【5】
【6】 【7】 【8】 【9】 【10】
【11】 【12】 【13】 【14】 【15】
【16】 【17】 【18】 【19】 【20】
二、 程序分析题( 每题4分, 共24分)
【1】
【2】
【3】
【4】
【5】
【6】
三、 程序填空题( 每空2分, 共20分)
【1】 【2】
【3】 【4】
【5】 【6】
【7】 【8】
【9】 【10】
四、 编程题( 第三题10分, 其余8分, 共26分)
请做在另发的白纸上( 白纸上请写明姓名、 班级和学号)
附加题( 每空2分, 共10分)
【1】 【2】 【3】 【4】 【5】03级计算机科学与技术专业
高级语言程序设计期末考试卷( B)
标准答案
一、 单项选择题( 1~10每题1分, 11~20每题2分, 共30分)
【1】 D 【2】 A 【3】 B 【4】 C 【5】 B
【6】 B 【7】 C 【8】 D 【9】 B 【10】 A
【11】 D 【12】 B 【13】 A 【14】 B 【15】 C
【16】 A 【17】 C 【18】 B 【19】 A 【20】 A
二、 程序分析题( 每题4分, 共24分)
【1】这是红旗的颜色
【2】5,2,3
【3】Putian Xueyuan
【4】1
【5】1
【6】51,60,21
三、 程序填空题( 每空2分, 共20分)
【1】s1=s1* i 【2】 s+=pow(-1,i+1)*i*x/s1
【3】n-1 【4】name[j]
【5】name[k] 【6】strlen(str)-1
【7】i<strlen(str)/2 【8】 k
【9】i<j 【10】a[i][j]=i-j+1
四、 编程题( 第三题10分, 其余8分, 共26分)
参考程序/程序段
1、 #include <stdio.h>
main()
{ int a,i,s=0;
for (a=3;a<=100;a++)
{ for(i=2;i<a;i++)
if(a%i==0) break;
if(i<a) s+=a;
}
printf("s=%d\n",s);
}
2、 int top, bott, mid;
for(top=0, bott=N-1; top<=bott;)
{ mid= (top+bott)/2 ;
if(num==a[mid])
{ printf("%d位于表中第%d个数\n", num, mid+1);
break;
}
else if(num<a[mid]) bott= mid-1 ;
else top= mid+1 ;
}
if(top>bott)
printf("%d不在表中\n", num);
3、 评分原则
每个函数各3分。
其余1分。
五、 附加题( 每空2分, 共10分)
【1】struct node
【2】head==NULL
【3】p1->next
【4】p1->next
【5】p1->next( )
展开阅读全文