C语言试题 四
- 格式:docx
- 大小:30.07 KB
- 文档页数:20
14、下面描述正确的是( )。
A)字符串所包含的字符个数相同时,才能比较字符串B)字符个数多的字符串比字符个数少的字符串大C)字符串"stop "与"stop"相等D)字符串“That”小于字符串"The"15、在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A、整型常量B、整型表达式C、整型常量或整型表达式D、任何类型的表达式16、函数调用结束后,形式参数( )。
A)继续占用相同大小的内存B)占用的内存减小 C)释放内存 D)不确定17、以下叙述错误的是()A)一个C程序总是从main函数开始执行的;B)C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上;C)每个语句和数据定义的最后必须有一个分号;D)C语言本身有输入输出语句。
18、条件运算符的结合方向是( )。
A)自右至左; B)自左至右; C)任意; D)前后顺序;19、下列正确定义一个文件指针pm的语句是()A)FILE pm; B)file *pm; C)FILE *pm; D)file pm;20、以下选项中属于C语言的数据类型是()A)复数型 B)逻辑型C)双精度型D)集合型二、填空题(10分)1、c语言中按函数的调用位置来分有函数语句、函数参数和。
2、请定义一个指向字符类型数据的指针变量p,3、如果被调用函数的实参列表包含多个实参,则各参数间用隔开。
4、设int a[10],*p=a;则对a[3]的引用可以是或5、定义一个整型数组a[10],则下标最大的数组元素为。
6、要使指针变量与变量之间建立联系,用运算符来建立指针变量与变量之间的联系。
7、若有以下定义和语句:int a[4]={0,1,2,3}, *p; p=&a[1]; 则++(*p)的值是8、运算符=的结合性是。
9、设有如下定义:int a[5]={0,2,4,6,8},*p1=&a[1],*p2=&a[4];则*p2-*p1的值为。
大学C语言期末考试题及答案(4)1、定义了一维int型数组a[10]后,下面错误的引用是_____正确答案是:Ba[0]=1;a[10]=2;a[0]=5*2;a[1]=a[2]*a[0];2、设有定义:int a=1, *p=&a; float b=2.0; char c='A'; ,以下不合法的运算是()正确答案是:C*p++;a--;b++;c--;3、若有定义:int x[10], *p=x;,则*(p+5)表示()正确答案是:B数组元素x[5]的地址数组元素x[5]的值数组元素x[6]的地址数组元素x[6]的值4、执行以下程序段后,y的值是()。
int a[ ]={1, 3, 5, 7, 9} int x=0, y=1, *ptr; ptr=&a[1]; while (!x) { y+=*(ptr+x); x++; }正确答案是:C124245、下面程序的运行结果是()。
# include <stdio.h> void select(char *s){ int i,j; char *t; t=s; for(i=0,j=0;*(t+i)!='\0';i++) if (*(t+i)>='0'&&*(t+i)<='9') { *(s+j)=*(t+i); j++;} *(s+j)='\0正确答案是:DHPw19 &17HPw19 &1719176、对于下面语句描述不正确的为_____ struct Student { unsigned long id; char name[30]; char class[30]; }oStu1;正确答案是:Bstruct Student为用户自定义类型Student为用户自定义类型name为结构体成员变量oStu1为结构体变量名称7、已知:char *pstr[]={"abcd","efgh"},**p=&pstr; 那么*(*(p+1)+1)的值为_____正确答案是:Cbcfg8、已知:int a[5]={0,1,2,3,4}; int *p=a; 下面的表达式不可以用来表示a[3]的是_____正确答案是:C*(a+3)*(p+3)*p+3p[3]9、 strlen("A\0B\0C")的结果为_____正确答案是:B12310、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为_____正确答案是:B2425281711、下面的描述错误的是_____正确答案是:C函数可以有多个形式参数函数可以没有返回值函数内可以嵌套定义函数函数可以被其他函数调用12、下面关于全局变量的描述中,错误的是_____正确答案是:C所有在函数体外定义的变量都是全局变量全局变量可以和局部变量同名称全局变量第一次被引用时,系统为其分配内存全局变量直到程序结束时才被释放13、以下关于循环的描述中,错误的是_____正确答案是:D可以用for语句实现的循环一定可以用while语句实现可以用while语句实现的循环一定可以用for语句实现可以用do…while语句实现的循环一定可以用while语句实现do…while语句与while语句的区别仅仅是关键字while的位置不同14、引用数组元素时,数组下标可以是_____正确答案是:D整型常量整型变量整型表达式以上均可15、已知:int a[5]={0,1,2,3,4}; int *p=a; 下面的表达式不能用来表示a[3]的是_____正确答案是:C*(a+3)*(p+3)*p+3p[3]16、已知:char str[10],*p=str; 下面的语句中正确的是_____正确答案是:Bstr="ABC";p="ABC";*str="ABC";*p="ABC";17、对于下面语句描述不正确的为_____ struct Student { unsigned long id; char name[30]; char calss[30]; }oStu1;正确答案是:Bstruct Student为用户自定义类型Student为用户自定义类型name为结构体成员变量oStu1为结构体变量名称18、一个c程序的执行是从________正确答案是:A本程序的main函数开始,到main函数结束本程序文件的第一个函数开始,到本程序文件的最后一个函数结束本程序的main函数开始,到本程序文件的最后一个函数结束本程序文件的第一个函数开始,到本程序main函数结束19、若x、i、j和k都是int型变量,则计算下面表达式后,x的值为 ________ x=(i=4,j=16,k=32)正确答案是:C416325220、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是________正确答案是:A2.5000002.7500003.5000000.00000021、以下叙述中正确的是()正确答案是:D输入项可以是一个实型常量,如scanf(“%f”,3.5);只有格式控制,没有输入项也能正确输入数据到内存,例如:scanf(“a=%d,b=%d”);当输入实型数据时,格式控制部分可以规定小数位数,例如:scanf(“%4.2f”,&f);当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);22、以下程序输出结果是()。
2017年下学期《C语言》期中试题(总分:100分时间:90分钟)一、单项选择题(每题4分,共80分)1、下列数据中,不属于字符型常量的是_________A. 'A'B. '\n'C. "B"D. '102'2、能将高级语言编写的源程序转换成目标程序的是_________A.编译程序B.编辑程序C. 链接程序D.解释程序3、若x和y为整型变量,对于scanf("a=%d,b=%d",&x,&y);语句,可使x和y的值分别为10和20的正确输入方法是_________。
A.10 20B.10, 20C.a=10 b=20D.a=10,b=204、下列标识符中,不合法的用户标识符为_________。
A.aBaB._11C.a_1D.a&b5、关于下面的程序,正确的说法是_________。
#include stdio.hvoid main(){ float a=b=2, result;result=a/b;printf("result=%f\n", result); }A. 程序可正常编译,结果为result=1.000000B. 共有1处语法错误C. 共有2处语法错误D. 共有3处语法错误6、若已定义char c='\010',则变量c所占的字节数为__________。
A.1B.2C.3D.47、下列整型常量,错误的是__________。
A.025B.285LC.-285uD.285lu8、以下程序运行后的输出结果是______。
#include <stdio.h>main(){ int m=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m); }A.12353514B.12353513C.12343514D.123435139、以下程序运行后的输出结果是______。
《C语言程序设计》试题四一.单项选择题1.运算符___________的优先级最高。
A.[ ]B.+= C.?: D.++2.main( ){ int n;( n=6*4,n+6),n*2;printf(―n=%d\n‖,n); }此程序的输出结果是______________.A.30 B. 24 C.60 D. 483.若有如下定义,则__________是对数组元素的正确的引用。
.int a[10] , *p ;p=a ;A. *&a[10]B.a[11] C. *(p+11) D. *p *p *p4.设整型变量n的值为2,执行语句―n+=n-=n*n;‖后,n的值是__________A. 0B. 4C. - 4D. 25.各种基本数据类型的存贮空间正确的长度排列为__________。
A.Char<long<int<float<do ubleB.Double<float<long<int< charC.Char<int<long<float<do ubleD.Float<int<long<char<do uble 6.下面的变量说明中_____________是正确的。
A.char:a, b, c;B.char a; b; c; C.chara, b, c; D.char a, b, c7.表达式y=(13>12?15:6>7?8:9)的值为____________ 。
A9 B 8C 15 D. 18.若x=5,y=3 则y*=x+5; y的值为_______________.A. 10B. 20C. 15D. 309.能正确表示a和b同时为正或同时为负的逻辑表达式是_________。
A.a>=0||b>=0)&&(a<0||b<0) B.(a>=0 &&b>=0)&&(a<0 && b<0)C.(a+b>0) &&(a+b<=0)D.a*b>010.C语言中,合法的字符型常数是_________。
《程序设计基础》考试试卷四班级姓名学号一、选择题(每题1分,共20分)题号一二三四五总得分评卷人审核人得分1.以下叙述中正确的是( )A. C程序中注释部分可以出现在程序中任意合适的地方B. 花括号"{"和"}"只能作为函数体的定界符C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名D. 分号是C语句之间的分隔符,不是语句的一部分2.判断下面标识符中哪个是C语言中合法的用户定义标识符()A. 2a1bB. a%bdC. _123D. char3.设有以下定义int a=0; double b=1.25; char c=’A’; #define M 2则下面语句中错误的是( )A. a--;B. b--;C. c--;D. M--;4.有两条语句:static char x[]=”abcde”;static char y[]={‘a’,’b’,’c’,’d’,’e’};则下列说法中正确的是( )A. 数组x和数组y长度相同B.数组x长度大于数组y长度C. 数组x长度小于数组y长度D. 以上三种说法均错误;5.设整型变量a=13,则经运算a+= a/=a%=5后,a的值为()A. 17.333B. 17C. 0D. 26. 已知:int n,i=1,j=2;执行语句n=i<j?i++:++j;后,i和j的值是( ).A. 1,2B. 1,3C. 2,2D. 2,37.有函数定义如下:当自变量x<0时y=-1;当x=0时y=0;当x>0时y=1;以下程序片段能实现该函数功能的是( ):A. if(x>=0)B. y=-1;C. if(x>=0)D. y=0;if(x>0) y=1; if(x!=0) if(x>0) y=1; if(x>=0) else y=-1; if(x>0) y=1 ; else y=0; if(x>0) y=1;else y= 0; else y=0; else y= -1; else y=-1;8.当a=2,b=1,c=3,d=4,m和n值为1时,(m=a>b)||(n=c>d)的值是( )A. TRUEB. FALSEC. 1D.09.在C语言程序中,以下说法正确的是( )A. main函数内部可嵌套定义子函数B. main函数必须出现在所有函数之前C. main函数必须出现在所有函数之后D. main函数是程序执行的入口10.关于局部变量和全局变量说法正确的是():A. 在main函数中定义的变量都为全局变量B. 当全局变量与局部变量同名时,全局变量起作用C. 当全局变量与局部变量同名时,局部变量起作用D. 以上说法都不正确11.下列关于switch和break语句的讨论中,只有()是正确的。
c语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言具有跨平台的特性答案:B2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于取模运算?A. %B. /C. *D. -答案:A4. 下列关于数组的描述中,正确的是:A. 数组必须在程序开始时初始化B. 数组的元素可以是不同的数据类型C. 数组的索引从1开始D. 数组的声明必须指定数组的大小答案:D5. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. define答案:B6. C语言中,用于表示逻辑“与”操作的运算符是:A. &&B. ||C. !D. &答案:A7. 下列哪个选项是C语言中合法的注释?A. // 这是一个注释B. /* 这是一个注释 */C. // 这是一个注释/* 这是一个注释 */D. /* 这是一个注释 */答案:A8. C语言中,用于定义一个空指针的值是:A. NULLB. 0C. falseD. none答案:A9. 下列关于指针的描述中,错误的是:A. 指针可以存储变量的地址B. 指针可以存储函数的地址C. 指针可以存储数组的索引D. 指针可以存储指针的地址答案:C10. 在C语言中,用于定义一个字符型指针的声明是:A. char *ptr;B. int *ptr;C. float *ptr;D. double *ptr;答案:A二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型数组的语法是:______ int array[10];。
答案:int2. 如果一个变量的值是10,那么表达式sizeof(&var)的结果是:______。
2023年9月青少年软件编程C语言等级考试试卷四级(含答案)分数:100题数:4一、编程题(共4题,共100分)第1题.酒鬼Santo刚刚与房东打赌赢得了一间在New Clondike的大客厅。
今天,他来到这个大客厅欣赏他的奖品。
房东摆出了一行瓶子在酒吧上。
瓶子里都装有不同体积的酒。
令Santo高兴的是,瓶子中的酒都有不同的味道。
房东说道:“你可以喝尽可能多的酒,但是一旦打开酒盖你就必须把它喝完,喝完一瓶后把它放回原处。
还有一件最重要的事,你必须从左至右依次喝,并且不能连续超过三瓶,不然会给你带来坏运气。
”现在可怜的Santo站在酒吧前努力的想着,他到底应该喝哪几瓶才能使喝的酒最多呢?请帮助他找出他应该喝的酒瓶号,因为思考让他感到不安。
时间限制:2000内存限制:131072输入:第一行一个整数N,有N个酒瓶,N<=700接下有N行,第I+1行的数字代表酒瓶I中酒的体积。
输出:一个数字,喝的酒的最大总体积,遵守以上规则,使得三个连续瓶子中至少一个瓶子是满的。
样例输入:661013981样例输出:33参考答案:#include<bits/stdc++.h>using namespace std;int f[701][5];int main(){int n;int a[1000];cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){f[i][0]=f[i-1][3];int mx=f[i][0];for(int j=1;j<=2;j++){f[i][j]=f[i-1][j-1]+a[i];mx=max(mx,f[i][j]);}f[i][3]=mx;}cout<<f[n][3];}第2题.大盗阿福阿福是一名经验丰富的大盗,趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。
第四套试题一、选择题(20个小题,每小题2分,共40分):1、以下不正确的C语言标识符是____。
A.ABC B.abc C.a_bc D.ab。
c2、设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是____。
A.‘a’&&‘b’ B.a<=b C.a||b+c&&b—c D.!((a〈b)&&!c||1)3、若有以下定义和语句:char c1=‘b',c2=‘e';printf(“%d,%c\n”,c2—c1,c2-‘a’+‘A’);则输出结果是____。
A.2,M B.3,EC.2,e D.输入项与对应的格式控制不一致,输出结果不确定4、当运行以下程序时,在键盘上从第一列开始输入9876543210<CR>(此处〈CR>代表Enter),则程序的输出结果是____.main( ){ int a;float b,c;scanf(“%2d%3f%4f",&a,&b,&c);printf(“\na=%d,b=%f,c=%f\n",a,b,c);}A.a=98,b=765,c=4321 B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000000 D.a=98,b=765.0,c=4321.05、设有如下函数定义:int f(char *s){ char *p=s;while(*p!=‘\0’) p++;return (p-s);}如果在主程序中用下面的语句调用上述函数,则输出结果为____。
printf(“%d\n",f(“goodbye!"));A.3 B.6 C.8 D.06、以下程序的输出结果是____。
main( ){ int w=4,x=3,y=2,z=1;printf(“%d\n”,(w<x?w:z<y?z:x));}A.1 B.2 C.3 D.47、以下程序段的输出结果是____。
C语言试题四6.9 巧分橘子一家农户以果园为生,一天,父亲拿出一堆橘子,共2520个,准备分给他的6个儿子。
父亲按事先写在一张纸上的数字把这堆橘子分完,每个人分到的橘子的个数都不相同。
然后他说:“老大,把你分到的橘子分1/8给老二,老二拿到后,连同原来的橘子分1/7给老三,老三拿到后,连同原来的橘子分1/6给老四,以此类推,最后老六拿到后,连同原来的橘子分1/3给老大,这样,你们每个人分到的橘子就一样多了。
”问兄弟6人原先各分到多少只橘子。
请将兄弟6人的橘子数存储到一维数组中,并按照下列各式输出(下面只提供格式,数据不准确):x[1]=111x[2]=222x[3]=333x[4]=444x[5]=555x[6]=666#include<stdio.h>void main(){int a[6],b[6],i;for(i=0;i<6;i++){a[i]=2520/6;b[i]=8-i;}a[0]=a[0]-(a[5]/(b[5]-1));for(i=5;i>=1;i--){a[i]=a[i]+(a[i]/(b[i]-1))-(a[i-1]/(b[i-1]-1));}a[0]=a[0]*b[0]/(b[0]-1);for(i=0;i<6;i++)printf("x[%d]=%d\n",i+1,a[i]);}选做题6.1 大家一起做游戏幼儿园的小朋友们刚学习了如何数数,阿姨在下课时组织大家一起玩游戏。
规则如下:所有的小朋友绕成一圈,顺序排号,从第一个小朋友开始报数,凡是报到固定数字(例如5)的,都退出该游戏,直到只剩下一位小朋友游戏才中止。
每个小朋友都希望自己能有更多的练习数数的机会,所以都希望成为最终被留下的那位。
现在,请大家帮小朋友们计算一下,在第一次排号的时候排到第几位才能成为最终被留下的小朋友。
输入:小朋友的个数(<=50),要被练习的数字输出:最终被留下的小朋友的序号说明:如“要被练习的数字”是5,则每次数到5的同学要退出该游戏#include<stdio.h>void main(){int N,n,i,s=0,a;scanf("%d%d",&N,&n);for(i=2;i<=N;i++)s=(s+n)%i;a=s+1;printf("The left child is NO %d.\n",a);}选做题6.2 猜数字有如下一组数字,其中每个数字都在 1 ~ 63 之间,1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 632 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 634 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 638 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 6316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6332 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。
输入:程序的输入是一串以空白符分开的数字,当输入0 时表示输入结束。
输出:输出猜到的数字。
#include<stdio.h>#include<math.h>void main(){int i,sum=0;do{scanf("%d",&i);sum=sum+pow(2,i-1);}while(i!=0);printf("%d\n",sum);}选做题6.3 小蜜蜂一只小蜜蜂在如下图所示的蜂窝上爬行。
它爬行时,只能从一个格爬到相邻的大号格子中。
例如,从1 号格子可以爬到 2 号或者3 号格子,从2 号则可以爬到 3 号或者 4 号格子。
请问从一个格子a 爬到一个格子 b 一共有多少种可行的路线。
输入:分别是起始点 a 和终止点 b 的编号。
( a 和 b 在1~100 之间,且a<b 。
)输出:可行的路线数目#include<stdio.h>void main(){int a,b,x,i;int f[100];f[1]=1;f[2]=2;scanf("%d%d",&a,&b);x=b-a;if(x==1)printf("%d\n",f[1]);if(x==2)printf("%d\n",f[2]);if(x>=3){for(i=3;i<=x;i++)f[i]=f[i-1]+f[i-2];printf("%d\n",f[x]);}}选做题6.4 数制转换我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。
这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。
譬如12 和 5 ,在十进制下它们是不等的,但若12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。
因此只要选择合适的进制,12 和 5 就可以是相等的。
程序的输入是两个数字M 和N( 其十进制的值不超过1000000000) ,它们的进制在2~36 之间。
对于十以下的数字,用0~9 表示,而十以上的数字,则使用大写的A~Z 表示。
求出分别在2~36 哪种进制下M 和N 相等。
若相等则输出相应的进制,若不等则输出错误信息。
信息的格式见测试用例。
#define N 50#include"string.h"#include"stdio.h"int main(){char a[N],b[N],d[N],e[N],d0[N];int i,j,o,r,g,h,w,t,l,k,max1,max2;double p[N],q[N]={0},u[N],v[N]={0},c[N],f[N],m,n;for(i=0;i<N;i++){scanf("%c",&a[i]);if(a[i]=='\x20'){l=i; break;}}gets(d);if(d[0]!='\x20'){k=strlen(d);goto C;}if(d[0]=='\x20'){strcpy(d0,d);g=strlen(d0);for(i=0;d0[i]=='\x20';i++);j=i;for(i=0;i<g-j;i++)d[i]=d0[i+j];k=g-j;}C:for(i=0;i<l;i++){b[i]=a[l-i-1];if(b[i]<='\x39'&&b[i]>='\x30')c[i]=b[i]-'0';if(b[i]<='\x5A'&&b[i]>='\x41')c[i]=b[i]-'7'; }for(i=0;i<k;i++){e[i]=d[k-i-1];if(e[i]<='\x39'&&e[i]>='\x30') f[i]=e[i]-'0';if(e[i]<='\x5A'&&e[i]>='\x41') f[i]=e[i]-'7'; }max1=c[0];for(i=1;i<l;i++){if(max1<c[i]) max1=c[i];}if(max1==0) max1=1;max2=f[0];for(i=1;i<k;i++){if(max2<f[i]) max2=f[i];}if(max2==0) max2=1;for(i=max1+1;i<=36;i++){for(j=0;j<l;j++){m=c[j];for(g=0;g<j;g++){m=m*i;}q[i]=q[i]+m;}}for(i=max2+1;i<=36;i++){for(j=0;j<k;j++){n=f[j];for(g=0;g<j;g++){n=n*i;}v[i]=v[i]+n;}}for(g=max1+1;g<=36;g++)for(h=max2+1;h<=36;h++){if(q[g]==v[h]){w=g,t=h;goto out;}}for(i=0;i<l;i++)printf("%c",a[i]);printf(" is not equal to ");for(i=0;i<k;i++)printf("%c",d[i]);printf(" in any base 2..36\n");goto outs;out:for(i=0;i<l;i++)printf("%c",a[i]);printf(" (base %d) = ",w);for(i=0;i<k;i++)printf("%c",d[i]);printf(" (base %d)\n",t);outs:;}选做题6.5 等值数列段如果一个数列中的某一段(至少有两个元素)的各元素值均相同,则称之为等值数列段。