私立华联学院
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
私立华联学院
《C语言程序设计》2005年期末考试试题
考试时间:90分钟(A卷)
系专业班级姓名
说明:
1)考生运行“考试系统2.2”后,正确输入本人姓名、学号,稍后进入发试卷程序,得
到考试文件在“E:\A卷”文件夹中,开始做题。
2)答题完毕,必须按屏幕右下角黄色小框“按这里”,点击”提交试卷”,待返回”提交成
功”对话框后方可离开考场。
3)请填写本试卷上面的系、专业、班级和姓名等项目。
一、选择题(本大题共20个选项,【1】~【20】每个选择项3分,共60分)
1.设有语句int x=2,y=3;,则表达式x=(y==3)的值是【1】。
【1】A)0 B)1 C)2 D)3
2. C语言中,下列的运算符中,优先级最高的运算符是【2】。
【2】A)++ B)+= C)|| D)!=
3. 已知′A′的ASCII码的十进制值为65,′0′的ASCII码的十进制值为48,则下列程序运行结果是【3】。
main()
{
char ch1,ch2;
ch1=′A′+′5′-′3′;
ch2=′A′+′6′-′3′;
printf(″%d,%c\n″,ch1,ch2);
}
【3】A)67,D B)C,D C)C,68D)67,68
4.在C程序中,设一表达式含有int,long,unsigned和char类型的常数和变量,则表达式的
最后运算结果的类型是【4】。
【4】A)int B)char C)unsigned D)long
5.下列语句中符合C语言语法的赋值语句是【5】。
【5】A)a=7+b+c=a+7; B)a=7+b++=a+7;
C)a=7+b,b++,a+7; D)a=7=b,c=a+7;
6.下列程序的运行结果是【6】。
main( )
{
int a=-1,b=4,k;
k=(a++<=0)&&(!b--<=0));
printf(″%d%d%d″,k,a,b);
}
【6】A)003 B)012 C)103 D)112
7.下列程序运行结果是【7】。
main()
{
int x=023; printf(″%d″,x);
}
【7】A)35 B)19 C)23 D)023
8.下列程序运行后,a的值是【8】。
main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{ b+=3; continue; }
b-=5;
}
}
【8】A)10 B)9 C)D)7
9.下列程序段的运行结果是【9】。
int x=3;
do{
printf( ″%3d, ″, x-=2 );
}while(!(--x));
【9】A)1 B)3 0 C)死循环D)1 -2
10.设已定义char s[]=″\″Name\\Address\023\n″;,则字符串所占的字节数是【10】。
【18】A)19 B)15 C)18 D)14
11.下列程序段的运行结果是【11】。
main()
{
int a[]={2,4,6,8,10},y=1,x;
for(x=0;x<3;x++) y+=a[x+1];
printf(″%d\n″,y);
}
【11】A)17 B)18 C)19 D)20
12.下列程序运行结果是【12】。
main()
{
char a[][5]={″ABCD″,″1234″,″abcd″,″5678″,″EFGH″};
int i;
for(i=0;i<3;i++) printf(″%s″,a[i]);
}
【12】A)A1a B)ABCD1234abcd
C)ABC D)ABCD1234abcd5678EFGH
13.若有下列程序:
main
{
char ch[]=″I am student!″,*p;
p=ch;
pr intf(″%x\n″,p);
printf(″%x\n″,p+9);
}
其中有两个printf(),如果第一个printf()运行结果是ffd6,则第二个printf()运行结果是【13】。
【13】A)ffdf B)ffe8 C)ffd6 D)ffcf
14.设有下列语句:
char str1[]=″string″,str2[8],*str3,*str4=″string″;
则【14】不是对库函数strcpy的正确调用,此函数用来复制字符串。
【14】A)strcpy(str3,″HELLO3″B)strcpy(str2,″HELLO2″);
C)strcpy(str1,″HELLO1″); D)strcpy(str4,″HELLO4″);
15. 下列程序运行结果是【15】。
fun3(int x)
{
int a=3;
a+=x;
return a;
}
main()
{
int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf(″%d\n″,n);
}
【15】A)3 B)4 C)6 D)9
16. 下列程序运行结果是【16】。
main()
{
int x=1,y=2,z;
z=x>y?++x:++y;
printf(″%d,%d,%d\n″,x,y,z);
}
【16】A)1,2,3 B)1,3,3 C)2,3,3 D)2,2,3
17. 若有下列程序段,则z的二进制值是【17】。
int x=3,y=2,z;
z=x^y<<2;
【17】A)0000000000001011 B)0000000000000100
C)0000000011110100 D)0000000000000001
18. 下列程序中的循环执行了【18】次。
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=0;i<NUM;i++)
n++;
printf(″%d\n″,n); }
}
【18】A)5 B)6 C)8 D)9
19. 若定义如下结构,则能打印出字母M的语句是【19】。
struct person{
char name[9];
int age;
};
struct person class[10]={″Wujun″,20,″Liudan″,23,″Maling″,21,″zhangming″,22}; 【19】A)printf(″%c\n″,class[3].name); B)printf(″%c\n″,class[2].name[0]);
C)printf(″%c\n″,class[2].name[1]); D)printf(″%c\n″,class[3].name[1]);
20. 下列程序的功能是【20】。
#include <stdlib.h>
main()
{
FILE *fp;
long int n;
fp=fopen(″wj.txt″,″rb″);
fseek(fp,0,SEEK_END);
n=ftell(fp);
fseek(fp,0,SEEK_SET);
n=ftell(fp);
fclose(fp);
printf(″%ld″,n);
}
【20】A)计算文件wj.txt的起始地址B)计算文件wj.txt的终止地址
C) 计算文件wj.txt的长度D)将文件指针定位到文件末尾
二、填空题(本大题共10个空,每个空4分,共40分。
)
1.下列程序的运行结果是【1】。
main()
{
float a=365.7189;
int a=12,c;
c=(int)a+b;
printf(″a=%.2f,b=%d,c=%d\n″,a,b,c);
}
2. 下列程序是模拟堆栈,堆栈是一种先进后出的数据结构。
#define N 10
main()
{
int a[N];
int i,*p=a;
while(p<【2】)
scanf(″%d ″,p++); /* 压栈*/
while(p>a)
printf(″%d″,*(--p)); /* 出栈*/
}
3. 将指定的字符串用冒泡排序法进行从大到小排序。
#include <string.h>
main()
{
char *str=″Visual Foxpro″, temp;
int n,i;
n=【3】;
while((n-->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1]) { temp=str[i]; str[i]=str[i+1]; str[i+1]=temp; } printf(″%s\n″,str);
}
4. 下列程序的功能是将用户运行程序时键入的参数作为字符串连接起来。
#include <string.h>
main(int argc,char *argv[])
{
int i;
for(i=1;i<argc-1;i++)
strcat (argv[i],【4】);
printf(″%s\n″,argv[1]);
}
5.下列程序的运行结果是【5】。
#define PR(ar) printf(″%d″,ar)
main()
{
int j,a[]={1,3,5,7,9,11,15};
for(j=3,j;j--)
{
switch(j)
{
case 1:case 2:PR(*p++);break;
case 3:PR((*p)--);
}
}
}
6.下列程序是实现从10个数中找出最大值和最小值。
int max,min;
find_max_min(int *p,int n)
{
int *q;
max=min=*p;
for(q=p;q<p+n;q++)
if(【6】) max=*q;
else if(min>*q) min=*q;
}
main()
{
int i,num[10];
printf(″Input 10 numbers:″);
for(i=0;i<10;i++) scanf(″%d″,&num[i]);
find_max_min(【7】,10);
printf(″max=%d,num=%d\n″,max,min);
}
7.下列程序是运行结果如下矩阵,给矩阵的中的每个元素形成的规律是:
正对角线和其对角线以上的元素其值为1,其它元素值为:行下标-列下标+1
1 1 1 1 1
2 1 1 1 1
3 2 1 1 1
4 3 2 1 1
5 4 3 2 1
main()
{
int i,j,a[5][5];
for(i=0;i<=4;i++)
for(j=0;j<5;j++)
if(【8】) a[i][j]=1;
else a[i][j]=i-j+1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++) printf(″%2d″,a[i][j]);
printf(″\n″);
}
8. 下列程序是通过指针连接两个字符串。
char scat(char *str1,char *str2) /* 函数返回指向str1指针 */ {
char *p=str1;
while(*p!=【9】) p++;
while(*p++=*str2++); /* 将str2连接到str1的后面*/
return str1;
}
main()
{
char a[50],b[30];
printf(″Enter string 1:″); scanf(″%s″,a);
printf(″Enter string 2:″); scanf(″%s″,b);
printf(″a+b=%s\n″,scat(【10】));
}。