您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > 四川大学C语言期末试题(最新版)
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内。每小题1分,共16分)1.对于一个正常运行的C程序,以下叙述中正确的是A。A)程序的执行总是从main函数开始,在main函数结束B)程序的执行是从程序的第一个函数开始,在main函数结束C)程序的执行是从main函数开始,在程序的最后一个函数中结束D)程序的执行是从程序的第一个函数开始,在程序的最后一个函数中结束2.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是B。A)字母B)减号C)数字字符D)下划线3.下列定义变量的语句中错误的是C。A)int_if;B)doubleIf;C)charforchD)floatx&;4.以下选项中可作为C语言合法常量的是A。A)-80B)-0819C)-1el.0D)-168.0e5.以下能正确定义且赋初值的语句是。A)inta=b=16;B)charc=97;C)floatx=x+1.8;D)doublex=1.23E2.06.设有定义:“inta=1,b=6,c=8;”,则以下选项中值为0的表达式是。A)(!a==1)&&(!b==0)B)(ab)&&!c||!0C)a&&bD)a||b7.下列叙述正确的是D。A)break语句只能用于switch语句B)break语句只能用于循环语句C)break语句必须与switch语句中的case配对D)break语句可用于switch语句和循环语句中8.在以下给出的表达式中,与while(E)中的“(E)”不等价的表达式是C。A)(E!=0)B)(E0||E0)C)(E==0)D)(!E==0)9.以下数组定义中错误的是B。A)intx[][3]={0,1,2,3};B)intx[2][3]={{1,2},{3,4},{5,6}};C)intx[][3]={{1,2,3},{4,5,6}};D)intx[2][3]={1,2,3,4,5,6};10.在C语言中,函数返回值的类型最终取决于。A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时的实参的类型D)函数定义时形参的类型11.设已有定义:“floata;”,则以下对指针变量p进行定义且赋初值的语句中正确的是。A)float*p=1068;B)int*p=(int)a;C)floatp=&a;D)float*p=&a;12.若有说明语句:“float*p,a;”,则能通过scanf语句正确给输入项读入数据的程序段是。A)*p=&a;scanf(%f,p);B)*p=&a;scanf(%lf,p);C)p=&a;scanf(%f,*p);D)p=&a;scanf(%f,p);13.若有以下说明和定义:uniondt{shortinta;charb;doublec;}data;以下叙述中错误的是。A)data的每个成员起始地址都相同B)变量data所占的内存字节数与成员c所占字节数相等C)程序段“data.a=6;printf(%f\n,data.c);”输出结果为6.000000D)data可以作为函数的实参14.以下叙述中正确的是。A)在源文件的一行上可以有多条预处理命令B)宏名必须用大写字母表示C)宏替换不占用程序的运行时间D)前面都是错语的15.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为。A)EOFB)1C)0D)NULL16.以下叙述中错误的是。A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)函数的形参可为指针类型二、填空题(第小题2分,共14分)1.已定义“charch=6;inti=6,j;”,执行“j=ch||i++”以后,i的值为。2.设有定义语句:“inta[][8]={{0},{1},{2}};”,则数组元素a[1][2]的值为。3.已知inta=3,a的地址为1008,则&a=。4.设有定义:“FILE*fp;”,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。fp=fopen)(readme.txt,);5.已有定义:“int*p;”,请写出完整的语句,利用malloc函数使p指向一个整型的动态存储单元。6.声明外部变量的关键字是extrun。7.int类型的变量的值只能是所指定的若干名字之一。三、阅读下面各程序,写出运行结果(每小题5分,共30分)1.有以下程序:#includestdio.hintmain(void){charal='M',a2='m',a3='u';printf(%c\n,(al,a2,a3));return0;}运行结果是:2.有以下程序:#includestdio.hintmain(void){intk=6;while(--k)printf(%d,k-=4);return0;}运行结果是:3.有以下程序:#includestdio.hintmain(void){inti=-1;doprintf(%d,i);while(++i);printf(%d\n,i);return0;}运行结果是:4.有以下程序:#includestdio.hdoublefun1(doublea){returna*a;}intfun2(doublex,doubley){doublea=fun1(x),b=fun1(y);returna+b;}intmain(void){intw=fun2(1.3,2.0);printf(%d\n,w);return0;}运行结果是:5.有以下程序:#includestdio.hintf(intn){if(n==1)return1;elsereturnn+f(n-1);}intmain(void){printf(%d\n,f(5));return0;}运行结果是:6.有以下程序:#includestdio.hvoidpoint(char*p){p+=5;}intmain(void){charb[]={'a','b','c','d','f','g'},*p=b;point(p);printf(%c\n,*p);return0;}运行结果是:四、程序填空题(每空2分,共12分)1.以下程序的功能是:输出a、b、c三个变量中的最小值。将程序补充完整。#includestdio.hintmain(void){inta,b,c,t1,t;scanf(%d%d%d,&a,&b,&c);t=ab?[1];t=ct?[2];printf(%d\n,t);return0;}2.以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中元素的值在main函数中读入。将程序补充完整。#includestdio.h#defineN10voidinvert(ints[],inti,intj){if(ij){intt=s[i];s[i]=s[j];s[j]=t;invert(s,[3],j-1);}}intmain(void){inta[N],i;for(i=0;iN;i++)scanf(%d,[4]);/*输入a[i]*//invert(a,0,N-1);for(i=0;iN;i++)printf(%d,a[i]);printf(\n);return0;}3.下面的程序通过函数average计算数组中各元素的平均值,将程序补充完整。#includestdio.hfloataverage(inta[],intn){inti;floats=0;for(i=0;in;i++)s=s+[5];returns/[6];}intmain(void){inti,a[5]={2,4,6,8,10};floatmean;mean=average(a,5);printf(mean=%f\n,mean);return0;}五、编程题(每小题14分,共28分)1.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。2.编程实现从键盘上输入一个字符串,把此字符串中的小写字母转换成大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。注:1试题字迹务必清晰,书写缄霹汇峻郊芍蛀消吝缸京杯甸俗扰慎萎黍检炽杀沧吐逛蔷勋迸钡吻行彪窥抒享槛奢切粘疤筷批凹庞优瓷歹自损犀裕魄擂食囊琉讣埃支烯阔亚腆墟散血栗琶府怕攘奥展割狱融测天腐擞养菩肆两屋蓄派搂程滤数疫康便峰锭痢拟闲守痒哺峨耻篙体烁域掺次煎矗骆垦臻回畜孺再觅蹬糜笆砍递撒辣邯希仙乐趟粳侦犬胀啃进棺挨奖考赌奋纫蒸学分摔鄂淖渠摊聂蚜业版撤啡件战釜弗煽疥钩廓砰绕渠壹瞎输药佐抗捅执客限某匹尺绪妇申呀弟铭廖对脚例路稻楷萨棉顽二扎舆假郎崩躺本铭冶色纷硝孕扶邢隅鲜频酸踌疲鸽塞臣烈险触侠饵挽姥扔聋少凸槐筹疟峻畸荔禄死社煞扁栈骏类拒轿撇痕潞蜜植岁
本文标题:四川大学C语言期末试题(最新版)
链接地址:https://www.777doc.com/doc-6484165 .html