2C语言程序设计a 卷及答案1.docx
- 文档编号:3487645
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:20.42KB
2C语言程序设计a 卷及答案1.docx
《2C语言程序设计a 卷及答案1.docx》由会员分享,可在线阅读,更多相关《2C语言程序设计a 卷及答案1.docx(14页珍藏版)》请在冰豆网上搜索。
2C语言程序设计a卷及答案1
A卷
中国石油大学(北京)2013—2014学年第二学期
《C语言程序设计》期末考试试卷
考试方式(闭卷考试)
班级:
姓名:
学号:
序号:
题号
一
二
三
四
总分
得分
(试卷不得拆开,所有答案均写在题后相应位置)
一、选择题(每题2分,共30分)
下列各题的四个选项中,只有一个选项是正确的,请将正确选项填在下表中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.以下叙述中正确的是()。
A.C语言的基本组成单位是语句
B.C程序中的每一行只能写一条语句
C.C语句必须以分号结束
D.C语句必须在一行内完成
2.请选出可用作C语言用户标识符的一组标识符()。
A.voidB.a3_b3C.ForD.2a
define_123-abcDO
WORDIFCasesizeof
3.分析以下程序,下列说法正确的是。
#include
voidmain()
{
intx=0,a=0,b=0;
if(x==a+b)printf("****\n");
elseprintf("####\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出****D.输出####
4.当变量c的值不为2、4、6时,值也为"真"的表达式是
A)(c==2)||(c==4)||(c==6)B)(c>=2&&c<=6)||(c!
=3)||(c!
=5)
C)(c>=2&&c<=6)&&!
(c%2)D)(c>=2&&c<=6)&&(c%2!
=1)
5.以下程序的输出结果是
A) 9B) 10C) 11D) 12
#include
intmain()
{
intk,j,s;
for(k=3;k<7;k++,k++)
{
s=5;
for(j=k;j<6;j++)s+=j;
}
printf("%d\n",s);
}
6.下列程序执行后的输出结果是()。
voidmain()
{
inta[3][3],*p,i;
p=&a[0][1];
for(i=0;i<9;i++)p[i]=i+2;
printf("%d\n",a[1][2]);
}
A.5B.6C.7D.程序有误
7.有以下程序
#include
main()
{charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,′c′};
printf("%d%d\n",strlen(p),strlen(q));}
以下叙述中正确的是
A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3
C)由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3
D)由于p和q数组中都没有字符串结束符,故长度都不能确定
8.p有以下说明和定义语句
structstudent
{intage;charnum[8];};
structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};
structstudent*p=stu;
以下选项中引用结构体变量成员的表达式错误的是()。
A.(p++)->numB.p->numC.(*p).numD.stu[3].age
9.利用fseek函数可实现的操作是( )。
A.改变文件的位置指针B.文件的顺序读写
C.文件的随机读写D.以上答案均正确
10.
main()
{unsignedchara,b;
a=4|3;
b=4&3;
printf("%d%d\n",a,b);
}
执行后输出结果是( )。
A.70B.07
C.11D.430
11.下面程序段的运行结果是
char*s="abcde";
s+=2;printf("%d",s);
A)cdeB)字符′c′C)字符′c′的地址D)无确定的输出结果
12.有以下程序
#include
voidfun(char*a,char*b)
{while(*a=='*')a++;
while(*b=*a){b++;a++;}
}
main()
{char*s="*****a*b****",t[80];
fun(s,t);puts(t);
}
程序的运行结果是
A)*****a*bB)a*bC)a*b****D)ab
13.
设有如下程序段
chars[20]="Beijing",*p;
p=s;
则执行p=s;语句后,以下叙述正确的是
A)可以用*p表示s[0]B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量D)数组s中的内容和指针变量p中的内容相同
14.
有以下程序
#include
voidfun(int*s,intn1,intn2)
{inti,j,t;
i=n1;j=n2;
while(i } intmain() {inta[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序的运行结果是 A)0987654321B)4321098765C)5678901234D)0987651234 15. 有以下程序 #include main() {ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++)c[s[i]]++; for(i=1;i<5;i++)printf("%d",c[i]); printf("\n"); } 程序的运行结果是 A)1234B)2344C)4332D)1123 二、读程序题(1-4题每题2分,5-8题每题3分,共20分) 请把程序的运行结果写在题目右侧。 1. #include intmain() {inti,m=1; for(i=3;i>=1;i--) m=(m+1)*3; printf("%d",m); } 2. #include intmain() { intp[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%3) {k=k+p[i];i++;} printf("%d",k); } 3. #include structabc{inta,b,c;}; intmain() {structabcs[2]={{4,5,6},{1,2,3}}; intt; t=s[0].a+s[1].b; printf("%d",t); } 4. #include intx=2; voidcude() {x=x+x+x;} intmain() {x=6; cude(); printf("%d\n",x); } 5. #include main() {intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0: a++;break; case1: b++;break; } case2: a++;b++;break; case3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 6. #include voidswap(int*a,int*b) {int*t; t=a;a=b;b=t; } main() {inti=3,j=5,*p=&i,*q=&j; swap(p,q);printf("%d,%d\n",*p,*q); } 7. #include"stdio.h" main() {inta=-1,b=1,k; if((++a<0)&&! (b--<=0)) printf("%d,%d\n",a,b); elseprintf("%d,%d\n",b,a);} 8. #include intf(intx) {inty; if(x==0||x==1)return(3); y=x*x-f(x-2); returny; } main() {intz; z=f(3);printf("%d\n",z); } 三、程序填空(每空2分,共20分) 请将正确的语句直接填在下面横线上。 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) 1.找出10个字符串中的最大者。 #include #include #defineN10 voidmain() {charstr[20],s[N][20]; inti; for(i=0;i gets( (1)); strcpy(str,s[0]); for(i=1;i if( (2)>0)strcpy(str,s[i]); printf("Thebiggeststringis: \n%s\n",str); } 2.如下程序是从键盘上输入的若干个数并求出最大值。 请填空完成该程序。 #include voidmain() {inti; ints[10],max; /*Findmax()函数的声明*/ (3); printf("Input10number: \n"); /*输入10个数据到s数组中*/ (4); /*调用Findmax函数*/ (5); for(i=0;i<10;i++) printf("%4d",s[i]); printf("\nthemaxis%d",max); } intFindmax(intx[],intn) {intmax,i; max=x[0]; for(i=1;i if(max max=x[i]; returnmax; } 3.以下程序的功能是: 求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。 请填空。 main() {intx[10],a[9],i; for(i=0;i<10;i++)scanf("%d",&x[i]); for((6);i<10;i++) a[i-1]=x[i]+(7); for(i=0;i<9;i++)printf("%d",a[i]); printf(""); } 4.函数fun的功能是: 判定形参a所指的N×N(规定N为奇数)的矩阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0。 "幻方"的判定条件是: 矩阵每行、每列、主对角线及反对角线上元素之和都相等。 例如,以下3×3的矩阵就是一个"幻方": 492 357 816 #include #defineN3 intfun(inta[N][N]) { inti,j,m1,m2,row,colum; m1=m2=0; for(i=0;i {j=N-i-1;m1+=a[i][i];m2+=a[i][j];} if(m1! =m2) return0; for(i=0;i { row=colum=__(8)__; for(j=0;j {row+=a[i][j];colum+=a[j][i];} if((row! =colum)__(9)__(row! =m1))return0; } return__(10)__; } voidmain() { intx[N][N],i,j; printf("Enternumberforarray: \n"); for(i=0;i for(j=0;j scanf("%d",&x[i][j]); printf("Array: \n"); for(i=0;i { for(j=0;j printf("\n"); } if(fun(x))printf("TheArrayisamagicsquare.\n"); elseprintf("TheArrayisn'tamagicsquare.\n"); } 四、编程题(10*3=30分) 1、将某字符串中ASCII值为偶数的字符删除,使串中剩余字符形成一个新串。 2、假设某一维数组中的数已按由小到大的顺序排列。 a)请删除数组中所有相同的数,只保留一个备份。 b)请输出删除后数组中数据的个数。 c)以上功能请在一个函数内完成。 比如一维数组中的数据是: 2223445666677899101010。 删除后,数组中的内容应该是: 2345678910。 元素个数是9. 3、不经过排序,请找出一个整型数组中第二大的整数,没有也请输出相应信息。 比如说9,8,9,7,6五个数当中第二大的数应该是8。 而5,5,5,5,5这五个数中没有第二大的数。 中国石油大学(北京)2013—2014学年第二学期 C语言程序设计A卷答案 一、选择题(15*2=30分) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 C B C B B B A D A A C C A C C 二、1.662.383.64.185.a=2,b=16.3,57.1,08.6 三、 (1)s[i] (2)strcmp(s[i],str) (3)intFindmax(intx[],intn) (4)for(i=0;i<10;i++)scanf("%d",&s[i]) (5)max=Findmax(s,10) (6)i=1 (7)x[i-1] (8)0 (9)|| (10)1 四、编程题。 1. #include #include voidfun(chars[],chart[])//1分 { inti,j=0; for(i=0;i if(s[i]%2)t[j++]=s[i];//2分 t[j]=0;//1分 } intmain() { chara[20],b[20]; gets(a);//1分 fun(a,b);//1分 puts(b);//1分 } 2. #include #defineN80 intfun(inta[],intn)//1分 {inti,j=1; for(i=1;i if(a[j-1]! =a[i]) a[j++]=a[i];//3分 returnj;//1分 } main() {inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;//1分 printf("Theoriginaldata: \n"); for(i=0;i n=fun(a,n);//1分 printf("\nThereare%ddataafterdeleted: \n",n);//1分 for(i=0;i } 3. #include"stdio.h" intmain() { inta[10]={9,8,9,9,7,10,10,7,8,3}; inti,max,second; max=second=a[0];//1分 for(i=1;i<10;i++) if(a[i]>max) { second=max;max=a[i]; }//6分 if(max>second)printf("Thesecondnumberis%d",second);//1分 elseif(max==second)printf("Nosecondnumber.");//2分 return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2C语言程序设计a 卷及答案1 语言程序设计 答案