江苏省高等学校非计算机专业学生.docx
- 文档编号:9855788
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:25
- 大小:25.40KB
江苏省高等学校非计算机专业学生.docx
《江苏省高等学校非计算机专业学生.docx》由会员分享,可在线阅读,更多相关《江苏省高等学校非计算机专业学生.docx(25页珍藏版)》请在冰点文库上搜索。
江苏省高等学校非计算机专业学生
第二部分C语言程序设计
一、选择题(用答题卡答题,答案依次填在2130答题号内)
21.以下选项中,不能正确赋值的是 A 。
(A)chars1[10];s1="Ctest";(B)chars2[]={'C','t','e','s','t'};
(C)chars3[20]="Ctest";(D)char*s4="Ctest\n"
22.以下程序的输出结果是 A 。
amovep(int*p,inta[3][3],intn)
{inti,j;
for(i=0;i for(j=0;j } main() {int*p,a[3][3]={{10,30,50},{20,40,60}}; p=(int*)malloc(100); amovep(p,a,3); printf("%d%d\n",p[2],p[5]);free(p); } (A)5060(B)2050(C)3040(D)程序错误 23.下列程序段的输出结果是 C 。 voidfun(int*x,int*y) {printf("%d%d",*x,*y);*x=3;*y=4;} main() {intx=1,y=2; fun(&y,&x); printf("%d%d",x,y); } (A)1234(B)1212(C)2143(D)2112 24.下列程序的输出结果是 D 。 main() {chara[10]={9,8,7,6,5,0,1,2,3,4},*p=a+5; printf("%d",*--p); } (A)a[4]的地址(B)非法(C)3(D)5 25.设有以下说明语句 structst {intx;floaty;charz;}stu; 则下面的叙述中不正确的是 D 。 (A)x,y,z都是结构体成员名(B)structst是结构体类型 (C)struct结构体类型的关键字(D)stu是结构体类型名 26.以下程序的输出结果是 C 。 longfun(intn) {longs; if(n==1||n==2)s=2; elses=n+fun(n-1); returns; } main() {printf("%ld\n",fun(3));} (A)1(B)3(C)5(D)6 27.已知A盘根目录下的一个文本数据文件data.dat中存储了10个int型数据,若需要修改该文件中已经存在的若干个数据的值,只能调用一次fopen函数,已有声明语句FILE*fp;,则fopen函数的正确调用形式是 A 。 (A)fp=fopen("a: \\data.dar","r+");(B)fp=fopen("a: \\data.dat","w+"); (C)fp=fopen("a: \\data.dar","a+");(D)fp=fopen("a: \\data.dat","w"); 28.在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中 D 不能用作该变量的名字。 #include inty; main() {inta=1; fun(a) } intfun(intx) {int;/*int型变量声明语句位置*/ ……/*若干执行语句*/ )。 (A)x(B)y(C)fabs(D)fun 29.设有定义如下: typedefstruct{intx,y;}POINT; typedefenum{RED,YELLOW,BLUE,GREEN}COLOR; struct {POINTxy;COLORc;}pixel,*p=&pixel; 以下对变量pixel的赋值操作中正确的是 B 。 (A)pixel={1,2,BLUE}; (B)p->xy.x=10;p->xy.y=20;p->c=BLUE; (C)scanf("%d%d%d",p->xy.x,p->xy.y,&pixel.c); (D)scan{("%d%d",&pixel.xy);pixel.color=2; 30.执行了以下程序段后x,w的值为 D 。 intx=0,y=2,z=3,w; if(x++)w=x; elseif(x++&&y>=1)w=y; elseif(x++&&z>1)w=z; (A)0,1(B)1,2(C)3,2(D)2,2 二、填空题(请将答案填写在答题纸的相应答题号内,每个答案: 只占一行) ●基本概念题,共5分 1.在C语言中,如果不对函数作类型说明,则函数的隐含类型为 外部函数 。 2.在程序中需要调用库函数abs时必须包含头文件 3.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。 st=(char*) malloc(11) ; 4.当调用函数时,实参是一个数组名,则向函数传送的是 实参数组的首地址 。 5.将字符串常量“NewYear”存储于内存中时,占用 9 个字节。 ●阅读程序段写出运行结果题(共10分) 6.以下程序的输出结果是 36 。 voidfun(int*a,int*b) {int*k; k=a;a=b;b=k; } main() {inta=3,b=6,*x=&a,*y=&b; fun(x,y); printf("%d%d",a,b); } 7.以下程序的输出结果是 57 。 inta,b; voidfun() {a=100;b=200;} main() {inta=5,b=7; fun(); printf("%d%d\n",a,b); } 8.以下程序的输出结果是 70 。 #defineMAX(x,y)(x)>(y)? (x): (y) main() {inta=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(“%d\n”,t); } 9.以下程序的输出结果是 369 。 voidfun() {staticinta=0; a+=3;printf(“%d”,a); } main() {intc; for(c=1;c<4;c++)fun(); printf(“\n”); } 10.以下程序运行时输出第一行为 15,45 第二行为 10,145 。 [程序] intm=10,n=5,a[10]={10,15,20}; voidf1(void); voidf2(intm); main() {inti; for(i=0;i<7;i++)f1(); f2 (1);printf("\n%d,%d",a[m],a[n]); } voidf1(void) {staticintn=3; a[n]=a[n-1]+a[n-2]+a[n-3];n++; } voidf2(intm) {for(;m<3;m+=2) {intm; for(m=1;m<4;m++) printf("%d,",a[m++]); } } 11.以下程序运行后输出第一行为 1,4,7.10.22 ,第二行为 1,3,9,27,40 。 [程序] externintm1,m2; voidfun(intn,int*p1,int*p2) {inti; *p1=1;*p2=1; for(i=1;i<=n;i++){*p1+=3;*p2*=3;} m1+=*p1;m2+=*p2; } intm1,m2; main() {inti,k1[4],k2[4]; for(i=0;i<4;i++) fun(i,&k1[i],&k2[i]); for(i=0;i<4;i++)printf("%d,",k1[i]); printf("%d\n",m1); for(i=0;i<4;i++)printf("%d,",k2[i]); printf("%d",m2); } 12.[程序] main() {inta[3][3],i,j; numlist(&a[0][0],9); for(i=0;i<3;i++) {for(j=0;j<3;j++)printf("%d,",a[i][j]); printf("\n"); } } numlist(int*p,intn) {inti; for(i=0;i } num(intn) {if(n==0)return1; returnnum(n-1)+1; } 程序执行时输出的第一行是 1,2,3 第二行是 4,5,6 。 ●完善程序题(共15分) 13.以下程序用来输出结构体变量stu所占存储单元的字节数,请填空。 structst {charname[20];doublescore;}; main() {structststu; printf("stusize: %d\n",sizeof( structst )); } 14.以下程序中函数code完成一个字符串的解密功能,将密文sl字符串中的字符经过变换后保存到s2指向的字符数组中。 二维数组mi保存了一个明码密码对照表,第一行是明码字符,第二行是对应的密码字符。 解密方法: 从密文s1字符串中每取一个字符,均在mi表第二行中查找有无该字符,若找到则将对应的第一行明文中的字符放入s2中,否则将s1中原来的字符放入s2中。 [程序] #include #include charmi[2][10]={"abcdefjhi","123456789"}; voidcode(char*s1,char*s2) {intn,i,j; for(n=0;s1[n]! ='\0';n++) {for(i=0;i<10&&s1[n]! = mi[1][i] ;i++); if(i<10)s2[n]= mi[0][i] ; elses2[n]=s1[n]; } s2[n]= '\0' ; } main() {chars1[80]="85llo,6r95n4! ",s2[80]; code(s1,s2); puts(s2); } 15.以下程序段打开文件test.dat后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。 FILE*myf;longlen; f1= fopen ("test.dat","r+"); fseek(f1,0,SEEK_END);len=ftell(f1); fclose(f1); printf("%ld\n",len); 16.以下程序先建立一个带有头节点的单向链表然后输出链表,链表结点中的数据通过键盘输入,当输入数据为小于0时结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL)。 #include structlist {intdata;structlist*next;}; structlist*creatlist() { structlist*p,*q,*temp; inta; temp=(structlist*)malloc(sizeof(structlist)); p=q=temp; printf("输入一列整数,以0结束: \n"); scanf("%d",&a); while(a>0) { p=(structlist*)malloc(sizeof(structlist)); p->data=a; q->next=p; q=p ; scanf("%d",&a); } p->next =NULL; return(temp); } main() { structlist*head,*p; head=creatlist(); p=head; printf("\n"); while( p->next ! =NULL) { p=p->next; printf("%5d--",p->data); } printf("\n"); } 17.完整以下程序,该程序功能为: (1)读入5个字符串(每串不多于9个字符),依次存放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始位置; (2)从这些字符串中选出最大的那个串输出。 #include #include main() {chara[100],*str[5],*sp; inti,k; sp=a ; for(i=0;i<5;i++) {scanf("%s",sp); str[i]=sp; k= strlen(sp) ; sp+=k+1; } for(i=0;i<5;i++) if( strcmp(str[i],str[k]) >0)k=i; printf("%s\n",str[k]); } 18.程序功能: 在一行文本中查找给定的单词,输出其位置和出现的次数。 一行文本由字母和分隔符组成,分隔符包括若干空格、逗号、句号和换行符。 一个单词由若干个连续字母组成。 程序说明: main函数中word数组存放欲查找的单词。 find函数完成在t字符串中查找s指向的字母字符串的功能,找到后输出所在字串中的位置,函数返回s串在t串中出现的次数。 #include #include #include intfind(char*,char*); main() {charsource[80]="Iwillpasstheexaminationinthesummerholiday.",word[20]; intt; puts("enterawordtobefound: "); gets(word); t=find(source,word) ; if(t>0) printf("Findword'%s'intext.Itappears%dtimes\n",word,t); elseprintf("notfind"); } intfind(char*t,char*s) {charw[20]; inti,j,k=0; for(i=0; t[i] ! ='\0';i++) {if(isalpha(t[i])) {for(j=0;isalpha(t[i+j]);j++) w[j]=t[i+j]; w[j]='\0'; puts(w); if(strcmp(s,w)==0) {k++; printf("Findword'%s'intext.Itlocateintext[%d]\n",s,i); } i= i+j ; } } returnk ; } 第二部分C语言程序设计 一、选择题(用答题卡答题,答案依次填在2130答题号内) 21.当需要定义一个函数时,以下标识符中 B 不能用作函数名。 (A)max(B)while(C)_sum(D)F2 22.已有声明语句charch;与表达式ch='C'的值不相同的表达式是 D 。 (字符A的ASCII码以十进制表示为65) (A)ch=0x43(B)ch=0103(C)ch='\103'(D)ch=067 23.若要对a进行++运算,则a应具有以下说明 C 。 (A)inta[5][4];(B)char*a[]={"12","ab"}; (C)intb[8],*a=b;(D)char(*a)(char); 24.若有声明语句intx=10,y=8,z=6,*p=&x;则下列的 C 表达式语句是正确的。 (A)(*p)++=z; (B)*(*p)++; (C)printf(x%4==0? "%3d\n": "%3d",*p); (D)x>20? return*p-20: return*p-1; 25.设intx=2,y=3,z=(++x<=y--)? ((--y==1)? y--: --y): y--;则x,y,z的值为 B 。 (A)3,1,1(B)3,0,1(C)2,0,0(D)2,2,1 26.设有函数f的定义如下,若在main函数中欲调用f函数,则正确的调用语句是 C 。 voidf(intx,int*y) {*y=x*x*x;} main() {inti,c[4]={l,2,3,4},s[4]={0}; for(i=0;i<4;i++) { /*调用f函数。 */ printf("%d",s[i];) } (A)f(c,s);(B)f(c[i],s[i]); (C)f(*(c+i),&s[i]);(D)f(c+i,s+i); 27.如有语句: intx=1,y=2,z=3,*p[3];p[0]=&x;p[1]=&y;p[2]=&z;,以下表达式中有语法错误的是 D 。 (A)y++(B)(*p[0])++(C)*++p[0](D)p++ 28.设有声明语句: inta[3][3]={1,2,3,4,5,6,7,8,9};以下语句中除 D 外均能输出a[1][2]的值。 (A)printf("%d",*(*(a+1)+2));(B)printf("%d",*(&a[2][0]-1)); (C)print(("%d",*(a[1]+2));(D)printf("%d",*(a+1)[2]); 29.若定义了以下函数: voidf(......) {...... *p=(double*)malloc(10*sizeof(double)); ...... } p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是 A 。 (A)double**p(B)float**p(C)double*p(D)float*p 30.以下程序的输出是 D 。 structst {intx;int*y;}*p; intdt[4]={1,3,13,23}; structstarr[4]={6,&dt[0],8,&dt[1],10,&dt[2],12,&dt[3]}; main() {p=arr; printf("%d\n",*++(p->y)); } (A)1(B)13(C)2(D)3 二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行) ●基本概念题,共5分 1.将一维数组x的第i个元素的地址赋给指针变量p的语句是__p=&x[i]。 2.表示“整数x的绝对值大于0小于100”时值为“真”的C语言表达式是abs(x)>0&&abs(x)<100。 3.若有定义: inta=10,b=9,c=8;接着顺序执行下列语句后,变量c中的值是5。 c=(a-=(b-5)); c=(a%2)+(b=5); 4.指针变量的值是地址值。 5.若有定义: intk=0;执行语句while(k++<=7);后k的值为8。 ●阅读程序写出运行结果题(共10分) 6.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是38。 structstud {charnum[10]; ints[10]; doublef; }a; 7.[程序] intx=10; main() {inty,k; y=f(3);printf("%d\n%d",x,y); } intf(intx) {if(x==3) {intx=20; returnx; } elsereturnx; } 该程序运行后,输出x的值是10,y的值是20。 8.以下程序输出的最后一个值是24。 intfun(intn) {staticintf=1; f=f*n; returnf; } main() {inti; for(i=1;i<5;i++)printf("%d\n",fun(i)); } 9.设有以下程序: main() {inta,b,k=2,m=3,*p1=&k,*p2=&m; a=p1==&m; b=(*p1)%(*p2)*2; printf("a=%d\n",a); printf("b=%d\n",b); } 执行该程序后,a的值为0,b的值为4。 10.执行下面的程序,共输出3行,最后一行有4个数。 voidprnt(intn,intaa[]) {inti; for(i=0;i<=n;i++) {printf("%6d",aa[i]); if(! (i%5))printf("\n"); } printf("\n"); } main() {inta[10]={1,2,3,4,5,6,7,8,9,0}; prnt(9,a); } 11.程序 #include intconvert(chars1[],chars2[],int*n1) {inti=0,j=0,k,s=0,len; intvalue=0; chartab[16]="0l23456789ABCDEF"; len=strlen(s1); if(len%4) {for(i=0;i s=s*2+s1[i]-'0'; s2[j++]=tab[s];value=value*16+s; } while(i {s=0; for(k=0;k<4;k++)s=s*2+s1[i+k]-'0'; s2[j++]=tab[s]; value=value*16+s; i=i+4; } s2[j]='\0';*n1=strlen(s2); ret
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏省 高等学校 计算机专业 学生
![提示](https://static.bingdoc.com/images/bang_tan.gif)