C语言习题全集+答案_第1页
C语言习题全集+答案_第2页
C语言习题全集+答案_第3页
C语言习题全集+答案_第4页
C语言习题全集+答案_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TOC\o"1-1"\h\z\u第一单元程序设计和C语 第二单元顺序程序设 第三单元分支程序设 第四单元循环程序设 第五单元数 第六单元函 第七单元指 第八单元结构体和共用 第九单元文 附加 模拟试卷 模拟试卷 模拟试卷 第一单元C语言的基本构成单位是 A.函 B.函数和过 C.超文本过 D.子程一个C语言程序总是从 开始执行。A.主过 B.主函 C.子程 D.主程C语言的程序一行写不下时,可 A.用逗号换 B.用分号换 C.在任意一空格处换 D.用回车符换以下叙述不正确的是 C;aCa=10CC以下不正确的C语言标识符 A. B. C. D.下列字符串是标识符的是 A. B. C. D.LINE以下说法中正确的是 CCmain()Cmain()Cmain()不合法的常量是 A. B. C. D.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是: intk,a,b;unsignedlongw=5;doublex=1.422;A.x%(- B.w+=- C. D.在C语言中,字符型数据在内存中 形式存放A.原 B.BCD C.反 D.ASCII若有定义:inta=7;floatx=2.5;y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是: A. B. C. D.设有说明:charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为: A.float B.char C.int D.double B. C. D.若x为int型变量,则执行以下语句后,x的值为 x=6;x+=x-=x*x;A. B.- C. D.-字符串"\\\"ABC\"\\"的长度 A. B. C. D.一个函数由两部分组成,它们 一个C源程序至少包含一 , 设inta=12;则表达式a/=a+a的值 表达式x=(a=3,6*a)和表达式x=a=3,6*a分别是 两个表达式执行完的结果分别是 和 ,x值分别是 在C语言中,实数有两种表示形式, 在C语言中,运算符的优先级最小的 运算符第二单元若m为float型变量,则执行以下语句后的输出为 printf("%-A.B.C.D.-若x,y,z均为int型变量,则执行以下语句后的输出为 A.X=10,Y=15,Z=10 B.X=10,Y=10,Z=10 C.X=10,Y=15,Z=10 D.X=10,Y=10,Z=10 xint,yfloatscanf则为了将数据10和66.6分别赋给x和y,正确的输入应是 x=10,y=66.6<回车 B.1066.6<回车C.10<回车>66.6<回车 D.x=10<回车>y=66.6<回车已知有变量定义:inta;charc;用scanf(“%d%c”,&a,&c);语句给a和c输入数据,使30存入a,字符‘b’存入c,则正确的输入是: 30’b’<回车 B.30b<回车C.30<回车>b<回车 D.30b<回车已知有变量定义:doublex;longa;要给a和x输入数据,正确的输入语句 。若要输出a和x的值,正确的输出语句 B. C. D. 若有定义doublex=1,y;则以下的语句执行的结果是 y=x+3/2;printf(“%f”,y); 若a为整型变量,则以下语句 a=-2L;printf("%d\n",a);A.赋值不合 B.输出为不确定的 C.输出值为- D.输出值为{intx,y;执行时输入{intx=4,y=0,z;{floatx;inti;x=3.6;i=(int)x;{inta%=4-1;printf("%d,",a);a+=a*=a-=a*=3;printf("%d",a);{int{charc1=’6’,c2=’0’;{intx,y,z;x=y=1;z=++x-1;在C语言中字符型数据和整型数据之间可以通用一个字符数据既能以 "%-ms"表示如果串长小于m,则在m列范围内,字符串 靠 补空格printf函数的“格式控制”包括两部分,它们 #include<stdio.h>void floatprintf(“pleaseinputlengthandwidthoftherectangle\n”); 编写程序,输入一个数字字符(‘0’~‘9’)c,cn,如:字符‘0’0。请填空。void char printf(“pleaseinputachar:\n”); ,c,n);c=(f- (摄氏温度 f测试数据:①f=34②写一个程序把极坐标(r,θ)(θ之单位为度)转换为直角坐标(X,Y)。转换公式是:测试数据:①r=10②r=201+2+3=6第三单元若x=0,y=3,z=3,以下表达式值为0的 A. B.x<y? C. D.以下运算符中优先级最低的运算符 ,优先级最高的 A. B. C. D. E. F.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的结果为 。A. B. C. D.若w,x,z均为int型变量,则执行以下语句后的输出为 A.分析以下程序,下列说法正确的是 {intif(x=a+b)printf("****\n"); printf("####\n");A.有语法错,不能通过编 B.通过编译,但不能连C.输出*** D.输出###分析以下程序,下列说法正确的是 {intif(x=a+b)printf("****\n"); printf("####\n");A.有语法错,不能通过编 B.通过编译,但不能连C.输出*** D.输出###分析以下程序,下列说法正确的是 {intif(x=a+b)printf("****\n"); printf("####\n");A.有语法错,不能通过编 B.通过编译,但不能连C.输出*** D.输出###分析以下程序,下列说法正确的是 {intif(x==a+b)printf("****\n"); printf("####\n");A.有语法错,不能通过编 B.通过编译,但不能连C.输出**** D.输出####二、读程序写结果include{inta=-1,b=4,k;{intx=4,y=0,z;{intx,y,z;x=3;printf("%d",z>=y&&y>=x);{intx=1,y=1,z=10;if(y>0)x=3;elsex=5;if(z=y<0)x=3;elseif(y==0)x=5;elsex=7;{charx=‘B’;{case‘A’:printf(“Itiscase‘B’:printf(“Itiscase‘C’:printf(“ItisC.”);default:printf(“other.”);{intx=1,y=0,a=0,b=0;{case1:{case0:a++;break;case1:case2:case3:

若a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||!a的值 定义intx=10,y,z;执行y=z=x;x=y==z后,变量x的值为 x,yy,其中:x<0y=2x+3#include<stdio.h>intx,y; y=0; y=(x+7)/3;(2)printf("Pleaseenter3reals:\n");if((3){s=(4);printf("\nAreaofthetriangleisprintf("Itisnot有一方程ax2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的a≠0,b2-a≠0,b2-#include"math.h"{float{if((1)printf("onlyonesolutionx=%f\n",-c/b);if((2))printf("nosolution\n");elseprintf("xisanyvalue\n");{d=b*b-4*a*c;if((3)){x1=(-b+sqrt(d))/(4)x2=(-b-sqrt(d))/(5);printf("x1=%6.2f,x2=%6.2f\n",x1,x2);{pr=-b/(2*a);(6)printf("x1=%6.2f+%6.2fi\n",pr,pi);printf("x2=%6.2f-Y、y,N、n,losecharc; casecase‘y’:printf(“agree”); case‘N’:case‘n’: y(xsin(x)cos( (xy sin(x)cos(

(x a、b、c,17:Monday、Tuesdayswitch给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’,90分以上 40x

(0x(15x50y40

(x20(x

(30x(45x6010(x

(75x

yx第四单元 intk=5;k--循环执行5 B.循环是无限循C.循环体语句一次也不执 D.循环体语句执行一设i和x都是int类型,则for循环语句 for(i=0,x=0;i<=9&&x!=876;i++)scanf("%d",&x);最多执行10 B.最多执行9C.是无限循 D.循环体一次也不执下述for循环语句 inti,k;for(i=0,k=-1;k=1;i++,k++)printf("***判断循环结束的条件非 B.是无限循C.只循环一 D.一次也不循 intk=-20;while(k=0)while循环执行20 B.循环是无限循C.循环体语句一次也不执 D.循环体语句执行一下列程序段执行后k值为 intk=0,i,j;k=k+1A. B. C. D. #include<stdio.h>intk=2,;if(k%2){k=k+3;printf(“k=%d\n”,k);continue;}A.k=k+3;执行一 B.k=k+1;执行2C.执行后k值为7 D.循环体只执行一次二、读程序写结果{intnum=0;{num++;{inti=0,s=0;{s+=i*2+1;printf("i=%d,s=%d\n",i,s);i++;} #include<stdio.h>{intfor(i=5;i>=1;i--指出下面三个程序的功能,当输入为:"quert?"⑴#include<stdio.h>{charc;while(c!='?'){putchar(c);⑵#include<stdio.h>{charwhile((c=getchar())!='?')⑶#include<stdio.h>{while #include<stdio.h>{int{

{inta,b;{if(b>10)break;{b+=3;{inti=1;while(i<=15)if(++i%3!=2)continue;elseprintf("%d",i);#include<stdio.h>voidmain(){inti,j;{for(j=0;j<=i;j++){inti,j,k;charspace='';for{for(j=1;j<=i;j++)printf("%c",space);for(k=0;k<=5;k++)printf("%c",'*'); #include<stdio.h>{intfor{iffor if(!(j%i)) if(i>=j-1){break语句只能用 语句 语句中inti, 求满足下式的XY+YZ53{intx,y,z,i,result=532;for(x=1; ;x++)for(y=1; ;y++)for( {i=(5)if(i==result)printf("x=%d,y=%d,求Sn=a+aa+aaa+...+aa...aa2+22(n=4),n{inta,n,count=1,Sn=0,Tn=0;printf("an:\n");while Tn= 一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在{floatSn=100.0,hn=Sn/2;intn;for(n=2;n<= {Sn= ;hn= ;}

******************{intfor(i=0;i<= ;i++){for(j=0;j<=2-i;j++)printf("for(k=0;k<= ;k++)printf("*"); for{for(j=0;j<= printf("for(k=0;k<= 10inti,j,station,total=0;for for(j= printf("车票种类=%dn求1100用循环语句编写求20212223...263 n!(即求1!+2!+3!+...+20!)235813

,,, ,求出这个数列的前20项之和12358任意十个数,打印出它们中的最大数、最小数。测试数据:①1,-12,20,30,-5,-23,33,125,200,-100②0,10,3,1,5,6,-10,90,9,-③12,13,14,15,10,-10,-11,-12,-1-1001-100输入两个正整数mn,提示:求m,n的最大公约数:首先将m除以n(m>n)得余数R,再用余数R去除原来的除数,得新的余数,重复此过程直到余数为0mn的最大公约数。求m和n的最小公倍数:m和n的积除以m和n的最大公约数。测试数据:m=12,m=100,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方一个数恰好等于它的平方数的右端,这个数称为同构数。如525,52551~1000方,即(30+25),3025136213*62=31*26。编程序求共有多少对这种性质的两位数(个位与十位相同的不在11、22,重复出现的不在此列,如13*6262*13)。一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,612、3,6=1+2+3,61000 itsfactorsare4给出一个不多于4位的正整数,要求:①求出它是几位数②分别打印出每一 ③按逆序打印出各位数字。0.1,0.01,0.001,0.0001,0.00001(24)(46)(68)...(

2n2

2n

2n提示:本题中误差指前n+1项之积与前nsinx

(2n测试数据:①x=0.3,②x=0.5,验证歌德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。试编程序,将650用牛顿迭代法求方程在1.5(精度为105)2x34x23x6A、B、CX、YZ已知抽签决定比赛名单。有人向队员打听比赛的名单,AXC和X、Z第五单元数以下关于数组的描述正确的 在定义inta[10];之后,对a的引用正确的 A. B. C. D.a[10-以下能正确定义数组并正确赋初值的语句 int B.intC.int D.int以下不能正确赋值的 char B.charC.chars3[20]= D.chars4[4]={ chars[18]="abook!";A.a a C.a D. chars[12]="Abook";A. B. C. D.在执行inta[][3]={1,2,3,4,5,6};语句后,a[1][0]的值 A. B. C. D.#include<stdio.h>voidmain()inta[i]+=a[i-1]+a[i-2];#include<stdio.h>voidmain()floatinti;#include<stdio.h>voidmain() intwhile(i<7&&{k=k+p[i];void intintsum=0,i,j;for(i=0;i<3;i++)for{a[i][j]=i+j;if(i==j)void inta[4][4],i,j,k;for(i=0;i<4;i++)for(j=0;j<4;j++)for{for #include<stdio.h>{intcharprintf("inputstring1:\n");gets(s1);printf("inputstring2:\n");gets(s2);while((s1[i]==s2[i])&&(s1[i]!='\0'))if((s1[i]=='\0')&&(s2[i]=='\0'))s=0;elses=s1[i]-s2[i]; voidcharch[3][5]={#inlcude<stdio.h>#include<string.h>voidmain()charstr[10][80],c[80];inti;构成数组的各个元素必须具有相同 下面的程序是输出数组中最大元素的下标(pvoidmain()ints[]={1,-3,0,-9,8,5,-if(s[i]>s[p]) 20#include<stdio.h>voidfloata[20],pjz=0,s,t;inti,k; if(fabs(a[i]-pjz)<s 3{charintfor for ;y++) if 将一个数组中的元素按逆序重新存放。例如原来的顺序为:8,5,7,4,1,要求改为:1,4,7,5,8#defineN7 intfor(k=0;k<N;k++)for {s=a[k];a[k]= ; =s;for 的字符以字符形式输入(如输入aa)。#include<stdio.h>voidmain() charstr1[100],str2[100];charch;inti=0,k=0;printf(“pleaseinputansentence:\n”);for if{str2[ ]=str1[i];k++;} 10#include<stdio.h>#include<string.h>#defineN10void{charstr[20],s[N][20];inti;for(i=0;i<N;i++)gets( if( >0)strcpy(str,s[i]);printf("Thelongeststringis:\n%s\n",str);某人有四张35{staticinta[27];inti,j,k,s,n=0;for(i=0;i<=4;i++)for{ forif(s==a[k]) if( {a[k]=s;printf("%dfor #defineN10#defineM10{intintprintf("\nprintf("\nfor(i=0;i<n;i++)forscanf("%d", );for(i=0;i<n;i++){for(j=0;j<m;j++) ;for{max= for(j=1;j<m;j++)if(a[i][j]>max)max=a[i][j];for(j=0;j<m;j++){if{for(k=0,flag1=1;k<n&&flag1;k++)if( )flag1=0;if{printf("第%d行,第%d列的%d是鞍点\n", );ifprintf("\nN有NNN10用筛选法求21002223355K(N),留下的未被筛去的数就是2N求一个3×3(每个元素只加一次) 10输出前10行,从0 a0(由小到大排序,用起泡法)。a[i][0]a[i+1][0],ii+1编程序将一个字符串的前N\0'(strcpy(str1,str2,n)函数) 将字符数组A(0,2,4,6,8...)的元素值传给另一个字符数组B,然后将B 有N(用起泡排序法) 打印所有不超过n(n<256)的其平方具有对称性的数(也称回文数)N(次大值一定存在) 找出M×N数组中所有不相邻元素,并求出它们的和(相邻的数:前一个是偶数, 1001~1001,2,3,4两个数之和都是素数,即→1→2→3→4→,问1~100n1~(≤100)能满足上述要求的最大的n8135491到N2的自然数构成的魔方阵。⑴将“1”⑵从“2”开始直到n×n为止各数依次按下列规则存放:每一个数存放的行比前一个⑶如果上一个数的行数为1,则下一个数的行数为n(指最下一行⑷当一个数的列数为n,下一个数的列数应为1,行数减1n n×n(列上均无重复数。如n=55×515242345415352313412该数组的第一行1,5,2,4,31,5,2,4,3,第一行填写完毕后,即以第一行作为全方阵索引,即若第一行中的第i列的元素值为j,则j在各行中的列号即为从第一行中元素值为i的那一列开始读出的n个自然数(到行末则从行头接着读),例如第一行第2列的元素值为5,则从元素值为2的那一列(第3列)开始读出2,4,3,1,5,这就是元素5在各行中的列标号。测试数据:① ②第六单元函在C语言中,当函数调用 A. B. C. D.如果在一个函数的复合语句中定义了一个变量,则该变 C语言允许函数值类型缺省定义,此时该函数值隐含的类型 A.float B.int C.long D.doubleC语言规定,函数返回值的类型是 return在C语言程序中,以下描述正确的 以下叙述中正确的 静态(static)autostaticvoidsub(ints[],int{staticintt=3;{inta[]={1,2,3,4},i,x=0; {intw=5;fun(w);printf("\n");}fun(intk){if(k>O)fun(k-1);printf("%d",k);A)5432 B)01234 C)1234 D)54321以下所列的各函数首部中,正确的 A)voidplay(vata:Integer,var B)voidplay(intC)voidplay(inta,int D)Subplay(aasinteger,bas当调用函数时,实参是一个数组名,则向函数传送的 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式 A)地址传 B)单向值传C)由实参传给形,再由形参传回实参D) fun(floatx){floaty;return B)不确 fun1(inta,int{inta+=a;b+=b;c=fun2(a,b);returnc*c;fun2(inta,int{intc;returnc;{intprintf("Thefinalresultint{{x=x*x*x;#includelongfun(int{longs;returns;{{inti;{intx=0;staticinty=0;x++;y=y+2;{intp=func(k,m);printf("%d,p=func(k,m);func(inta,int{staticintm=0,i=2;i+=m+1;m=i+a+b;returnm;intt(intx,inty,intcp,int{cp=x*x+y*y;dp=x*x-{inta=4,b=3,c=5,d=6;fun(intx,inty,int{int inta,b;void{a=100;b=200;{inta=5,b=7; intx=3;{intfor(i=1;i<x;i++){staticintx=1;intfunc(int{return(a+b);}{intx=2,y=5,z=8,r;longfib(int{if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);{intprime(intm){intfor(i=2;(1);i++)if(m%i==0)if(m==1)(2){inta[20],i,sum=0;{scanf("%d",&a[i]);sum=(3)printf("thenumberofprimedatavoidfltj(charstr[],int{intll,i;ll=(1)for{if((2))elseif((3))elseif((4))a[2]++;elsea[3]++;{staticcharstr[60];staticinta[4]={0,0,0,0};printf("%schar:%ddigit:%dspace:%dother:%d", ((2n1)x

(x)(n1)

(x))/

(n(n(n{floatpn();floatx,lyd;intn;lyd=(1)floatpn(floatx,int{floatif(n==0)temp=(2)elseif(n==1)temp=(3)elsetemp=(4)doublefun(doublex,inty){inti;doublez:for(i=1,z=x;i<y;i++)z=z* return31100(判素数由函数实现)写一函数,使给定的一个二维数组(3×3)strcatstrlens1s2strcpy立方和等于该数本身。例如153153=1353335×6mn55第七单元指1、若有以下定义和语句,且0≤i<10则对数组元素的错误引用是 inta[10]={1,2,3,4,5,6,7,8,9,10},*p,i;A.*(a+i) B.a[p-a] C.p+i D.*(&a[i])2、若有定义:inta[3][4];, 不能表示数组元素a[1][1]。A. B. C. D.3、对如下定义,以下说法中正确的 char*a[2]={a"abcd"和aa44a’a’、’A’的地址char*s="\t\\Name\\Address\n";指针s所指字符串的长度为: A.说明不合 B. C. D.5、分析下面函数,以下说法正确的是 swap(int*p1,int*p2){int*p=*p1;*p1=*p2;交换*p1和*p2的 B.正确,但无法改变*p1和*p2的C.交换*p1和*p2的地址 D.可能造成系统故障,因为使用了空指针6、设有说明int(*ptr)[M];其中ptr是 A.MBMCMD.具有M个指针元素的一维指针数组,每个元素都只能指向整型量7、在说明语句:int*f();中,标识符代表的是: A.一个用于指向整型数据的指针变 B.一个用于指向一维数组的指C.一个用于指向函数的指针变量 D.一个返回值为指针型的函数名8、若intx,*pb;,则正确的赋值表达式是 A. B. C.*pb=&x;D.9int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值 A. B. C. D.10doubler=99,*p=&r*p=r则以下正确的叙述 A.以下两处的*p含义相同,都说明给指针变量pB.在"doubler=99,*p=&r;"中,把r的地址赋值给了pC.语句"*p=r;"把变量r的值赋给指针变量D.语句"*p=r;"取变量r的值放回r11、要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果.能正确执行 A.funa(int*x,int*y){int*p;*p=*x;*x=*y;*y=*p;B.fund(intx,inty){intt;t=x;x=y;y=t;C.func(int*x,int*y){D.fund(int*x,int*y){*x=*x+*y;*y=*x-*y;*x=*x-*y;}12、若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段 A.*p=&a;B.p=(long*)malloc(8);C.D.scanf("%ld",&a); A. B. C. D.14、若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地 A. B. C. D.15inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是 A. B. C.*p+=5 16、设P1和P2是指向同一个int型一维数组的指针变量,k为int确执行的语句 A. B. C. D.k=*P1*17inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表式是 A.p+=2, B.p+=2C.p+=3,*p++ D.p+=2,++*pinta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是 A.*p B.a[10] C.*a D.a[p-a]inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是 A.*p+9 B.*(p+8) C.*p+=9 D.p+820、下面程序输出数组中的最大值,由s指针指向该元素.void{inta[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;for(p=a,s=a;p-a<10;p++) printf("Themax:%d",*s):则在if语句中的判断表达式应该 A.p>s B.*p>*s C.a[p]>a[s] D.p-a>p-sinta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是 A.*p B.a[10] C.*a D.a[p-a]intw[2][3],(*pw)[3];pw=w;则对w数组元素非法引用是 A.*(w[0]+2) B.*(pw+1)[2]C. D.*(pw[1]+2) 是对c数组元素的正确引用。intc[4][5],(*cp)[5]cp=cA.cp+1 B.*(cp+3) C.*(cp+1)+3 D.*(*cp+2)charstr[]="Hello";char*ptr;ptr=str执行上面的程序段后,*(ptr+5)的值 A.'o' B.'\0' C.不确定的值 D.'o'的地址 sss(char*s,char*t{while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}A.求字符串的长 B.比较两个字符串的大C.将字符串s复制到字符串t中 D.将字符串s接续到字符串t中 A.char B.charC.char*S;S="ABCDE"; D.char*S;scanf("%S",S); intfun1(char*{char*y=x;while(*y++);A.求字符串的长 B.比较两个字符串的大C.将字符串X复制到字符串Y D.将字符串X连接到字符串Y后面#include<stdio.h>#include<string.h>voidmain(){char*S1="ABCDEF",*s2="aB";s1++;s2++;printf("%d\n",strcmp(上面程序的输出结果 A.正数 B.负数 C.零 D.不确定的值int(*ptr)(则以下叙述中正确的 A.ptrB.ptr是指向intC.ptr是指向函数的指针;该函数返回一个intD.ptr是一个函数名;该函数的返回值是指向int型数据的指针30、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法 A.(*p)max(a,b);B.*pmax(a,b);C.(*p)(a,b);D.*p(a A.p=max; B.*p=max; C.p=max(a,b); D.*p=max(a,b);32、已有定义int(*p)();指针p可以 A.代表函数的返回 B.指向函数的入口地C.表示函数的类型 D.表示函数返回值的类型fun(int*c){}voidmain(){int在必要的赋值之后,对fun函数的正确调用语句 A.a=a(w); C.b=*b(w); D.fun(b);char*aa[2]={"abcd","ABCD"}; A.aa数组成元素的值分别是"abcd"和B.aaC.aa数组的两个元素分别存放着含有4D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 A.C语言允许mainB.C语言允许main函数带形参,形参名只能是argc和C.当mainD.有说明:main(intargc,char*argv),则形参argc的值必须大于136、若有说明:inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是 A.i=*p; B.p*=*&j; C.i=&j; D.i=**p;1#include<stdio.h>voidmain(){int*p1,*p2,*p;inta=5,b=8;p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}2voidast(intx,inty,int*cp,int{*cp=x+y;*dp=x-y;}voidmain(){inta,b,c,d;a=4;b=3;3void{intinty=1,x,*p;for(x=0;x<3;x++)y+=*(p+x);4、void{intintm,*ptr;5voidprtv(int*{void{inta=256voidfun(int*a,int*b,int{inttemp=a;a=b;*temp=*b,*b=*c;void{inta,b,c,*p1,*p2,*p3;a=5;b=7;c=3;p1=&a;p2=&b;p3=&c;7#include<stdio.h>voidmain(){staticintint*add[2][3]={*a,*a+1,*a+2,*(a+1),*(a+1)+1,*(a+1)+2};int**p,i;{printf("%d",**p);p++;}8void{char9intfa(int{returnx*x;}intfb(intx){returnx*x*x;intf(int(*f1)(),int(*f2)(),int{returnf2(x)-f1(x);}voidmain(){inti=f(fa,fb,2);10

#include<stdio.h>#include<string.h>voidmain(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);11

charcchar(char{ifreturnch;void{chars[]="ABC+abc=defDEF",*p=s;{*p=cchar(*p);12

voidmain({inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf("%d\n",*13

funa(inta,intb){returna+b;}funb(inta,intb){returna-b;}sub(int(*t)(),intx,inty){return((*t)(x,y));}voidmain(){intx,(*p)();14

voidmain({char*s="12134211";intv[4]={0,0,0,0};intk,i;{{casecasecasecasefor(k=0;k<4;k++)15、#include"ctype.h"voidspace(char*str){inti,t;charts[81];for(i=0,t=0;str[i]!='\0'if(!isspace(*(str+i))&&(*(str+i)!='a'))ts[t++]=toupper(str[i]);ts[t]='\0';strcpy(str,ts)voidmain({chars[81]={"abcdefg"}space(s);16

sub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,ba='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);17

void{charb[char*chp=&b[7];1819

voidprtv(int*{void{inta=25intvoid{inti,*p=&aa[0][0];{if(i==1)aa[i][i+1]=*p+1;else++p;20intf(intb[],int{inti,r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;void{int21#definePR(ar)printf("%d",ar)voidmain(){intj,a[for(j=3;j;j--{{casecase2:PR(*p++);break;case3:PR(*(--p));22voidmain(){inta[]={1,2,3,4},ivoidsub(int*s,inty);intx=0;for(i=0;i<4;{sub(a,x);printf("%d",x)printf("\n")voidsub(int*s,int{staticintt=3;y=s[t];t--;23

#include<stdio.h>voidFUN(int*S){staticintdo{S[J]+=S[J+1];}while(void{intK,A[10]={1,2,3,4,5};for(K=1;K<3;K++)FUN(A);for(K=0;K<5;K++)24

fun(int*s,intn1,int{inti,j,ti=n1;j=n2;{t=*(s+i)*(s+i)=*(s+j)*(s+j)=ti++;j--void{inta[10]={1,2,3,4,5,6,7,8,9,0},ifun(p,0,3)fun(p,4,9)fun(p,0,9)for(i=0;i<10;i++)printf("%d",*(a+i));printf("\n");25

voidas(intx,inty,int*cp,int{*cp=x+y;*dp=x-y;}voidmain(){inta=4,b=3,c,das(a,b,&cprintf("%d26

voidfunc(int*a,intb[{b[0]=*a+6;{intaa=0;printf("%d\n",b[0]);27#include<stdio.h>sub(intx,inty,int*z){*z=y-x;}{inta,b,csub(10,5,&a)sub(7,a,&b)sub(a,b,&c)printf("%d,%d,%d\n",a,b,c)mainmaxmin#includevoidfind(int*a,int*max,int{int elseif(a[i]<a[*min]) ;{intintfind( );strcmpcompare(s1,s2)。s1=s2,0,s1≠s2,ASCⅡ码差值("BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14)。如果s1>s2,则s1<s2,则输出负值。compare(char*p1,char{intwhile((1))if(*(p1+i++)=='\0')(2) (3){intcharstr1[20],str2[20],*p1,*p2;printf("pleaseinputstringbyline:\n"); printf("theresult45(1)求第一门课的平均分;(2)2格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)9085{intfloatscore[4][5],aver[4],*psco,*pave;charcourse[5][10],*pcou;printf("pleaseinputthecoursenamebyline:\n");for(i=0;i<5;i++)printf("pleaseinputstunumandgrade:\n");printf("stunum:\n");{scanf("%d",pnum+i);avsco(float*psco,float{intfloatsum,average;{sum=0;sum=sum+(1); (2)avcour1(char*pcou,float{intfloatsum=0,average1;for(i=0;i<4;i++)sum=sum+(3);average1=(4);printf("thefirstcourse%s,averagefail2(char*pcou,int*pnum,float*psco,float{intprintf("stunum:");{label=0;if((5))label++;if(label>=2){printf("%- printf("%-8.2f",(6)printf("%-8.2f\n",(7)good(char*pcou,int*pnum,float*psco,float{intprintf("=======goodstudents=======\n");printf("stunum");for{for(j=0;j<5;j++) for{label=0;if(*(psco+5*i+j)>85.0)label++;{printf("%-8d",*(pnum+i));printf("%-8.2f",(8)printf("%-a123x456a,123a[0],456a[1],……。统计共有多少个整数,并输出这些数。{charinti,j,k,m,e10,digit,ndigit,a[10],*pa;printf("\npleaseinputthestring:\n");gets(str);i=0;while((1){if((*(pstr+i)>='0')&&(*(pstr+i)<='9'))j++;{{digit=*(pstr+i-1)-48;{for(m=1;m<=k;m++)e10=(2);digit=(3);{digit=*(pstr+i-1)-{for(m=1;m<=k;m++)e10=e10*10;(4)printf("thereare%dnumberdigit\n",ndigit);j=0;pa=&a[0];printf("%d",*(pa+j));12101010nn4main53×3610个等长的字符串。用另一函数对它们排序。然后在主函数输出这108s2s1910NNN第八单元1、说明一个结构体变量时系统分配给它的内存 ABCD2、C语言结构体类型变量在程序执行期 ABCD3、设有以下说明语句structstu{inta;floatb;}stutype; A.structB.structstuC.stutypeD.ab4、程序中有下面的说明和定义structabc{intx;chary;}structabcs1,s2;则会发生的情况 A.BCD5、有如下定义structperson{charname[9];intstructpersonclass[10]={"Johu",17,"Paul",19,"Mary",18,"Adam",根据上述定义,能输出字母M的语句 A.prinft("B.printf("C.prinft("D.printf("%c\n",class[2].name[0]);6、下面程序的输出是 A. B. C. D.{structcmplx{intx;inty;}cnum[2]={1,3,2,7};7structsk{inta;floatb;}data,*p若有p=&data;,则对data中的a域的正确引用是 8、当说明一个共用体变量时系统分配给它的内存 ABCD9、以下对C语言中共用体类型数据的叙述正确的 ABCD.共用体类型定义中不能出现结构体类型的成员10、C语言共用体类型变量在程序运行期 ABCD.没有成员驻留在内存中 A.enuma={one,two,three}B.enuma{one=9,two=-1,three}C.enuma={"one","two","three"}D.enuma{"one","two","three"}enumlanguage{Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举量Fortran的值为 A. B. C. D.13、下面对的叙述中不正确的 A.用typedefB.用typedefC.用typedefD.使用typedef有利于程序的通用和移植 A.typedefv1 B.typedefC.typedefv1intv3; D.typedefv4:int;typedef{intchar则下面叙述中正确的 A.PER是结构体变量 B.PER是结构体类型C.typedefstruct是结构体类型 D.struct是结构体类型名struck{inta;floatb;}data;int若要使P指向data中的a域,正确的赋值语句 A. B. C. D.#includestructabc{inta,b,c;};{structabcs[2]={{1,2,3},{4,5,6}};intt;printf("%d2#include<stdio.h>structstu{intnum;charname[10];intage;};voidfun(structstu*p){printf("%s\n",(*p).name);}voidmain(){structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19}{9803,"Zhao",18}3#include<stdio.h>voidmain(){enumteam{my,your=4,his,her=his+10};4#includestructst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};voidmain(){printf("%d,",++p-printf("%d,",(++p)-printf("%d\n",++(*p-5#include<stdio.h>unionmyun{{intx,y,z;}u;intk;}void{a.u.x=4;a.u.y=5;a.u.z=6;6#include<stdio.h>structSTU{charnum[10];floatscore[3];};voidmain(){structSTUinti;floatsum=0;7#include<stdio.h>#include<stdlib.h>structNODE{intnum;structNODE*next;};voidmain(){structNODEp=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->num=10;q->num=20;r->num=30;8#include<stdio.h>typedefunionstudent{charname[10];longsno;charfloat}void{STU在C语言中,要定义一个结构体类型的变量,可采用三种方法,即 {struct{intre;ints.re=(1);s.im=(2) p.re=(3);n(num),姓名(name[20]),性别(sex),年龄(age),三门课的成绩(score[3])mainn个学生的数据,然后调用一个函数count,在该函数中计算出每个学生的总分和平均分,然后打印出所有各项数struct{intcharname[20];charsex;intfloatscore[3];floattotal;floatave;voidcount( b[],intn){inti,j;{(2)b[i].total=(3);(4)void{inti;flaot(5)structstudenta[3];{scanf("%d%s%c%d%f%f%f",&a[i].num,a[i].name,&a[i].sex,printf("%d%s%c%d%4.1f%4.1f%4.1f\n",a[i].num,a[i].name,printf("NOnamesexagescore[0]score[1]score[2]totalave\n");printf("%d%s%c%d%5.1f%5.1f%5.1f%5.1f%5.1f\n",将上题改为用指针方法处理,即用指针变量逐次指向数组元素,然后向指针变量所指countcountmainmainstruct{intcharname[20];charsex;intfloatscore[3];floattotal;floatave;voidcount((1),int{intfor((2){(3)b->total=(4);{intfloats0,s1,s2;structstudent*p;{scanf("%d%s%c%d%f%f%f",&p->num,p->name,&p->sex,&p->age,&s0,&s1,&s2);p->score[0]=s0;p->score[1]=s1;p->score[2]=s2;printf("%d%s%c%d%4.1f%4.1f%4.1f\n",p->num,p->name,p->sex,(5)printf("NOnamesexagescore[0]score[1]score[2]totalave\n");for((6))printf("%d%s%c%d%5.1f%5.1f%5.1f%5.1f%5.1f\n",p->num,{struct{intcharname[20];floatscore;structstudentstu[4];structstudent*p;int for((2){scanf("%d%s%f",&p->num,p->name,&s0);for((3);i<4;i++)(4)printf("NO:%d\nname:%s\nscore:%4.1f\n",p->num,p->name,p-(要struct{intcharname[10];floatscore;intn=4;{(1)structstudent*p[4],*pp;inti,j;(2)printf("%4d%-10s%7.1f\n",stu[i].num,stu[i].name,stu[i].score);if((3)){pp=p[i];p[i]=p[j];p[j]=pp;}for((4))printf("%4d%-10s%7.1f\n",p[i]->num,p[i]->name,p[i]->score);天晒网”,问这个人在以后的某一天中是在“打鱼”,还是在“晒网”。199011410040055根据余数判断他是在“打鱼”还是在“晒网”;若余数为1、2、3,则他是在打鱼,否则struct{intyear;intmonth;intday;{structdatetoday,term;intyearday,year,day;{term.year=year;yearday+=days(term);}yearday+=(1);day=(2)if(day>0&&day<4)printf("hewasfishingatthat printf("hewassleepingatthatdays(structdate{staticintinti,lp; a,b个链表合并,按学号升序排列。#include"stdio.h"#defineNULL0#defineLENsizeof(structstudent)structstudent{longnum;int *next;structstudentlistA,listB;intn,sum=0;{(2)structstudent*insert();voidprint();structstudent*ahead,*bhead,*abh;intgs=0;structstudent{structstudent*p1,*p2,*head;p1=p2=(structstudent*)malloc(LEN);while(p1-{(3)elsep2->next=p1;p1=(structstudent*)malloc(LEN); *insert(structstudent*ah,structstudent*bh){structstudent*pa1,*pa2,*pb1,*pb2;{while((pb1->num>pa1->num)&&(pa1-{pa2=pa1;while(pb1->num<=pa1-{if(ah==pa1)ah=pb1;elsepa2-pb1=pb1->next;pb2->next=pa1;pa2=pb2;pb2=pb1;if(pb1==NULL&&pa1->next!=NULL){pa2=pa1;pa1=pa1-voidprint(structstudent{structstudent*p;doprintf("%ld%d\n",p->num,p->score);a,bab#defineLA#defineLB#defineNULL0struct{charnum[6];charstructstudent{structstudentstructstudentintstructstudent*p,*p1,*p2,*pt,*head1,*head2;{p1-printf("%8s%8s\n",p->num,p- {p=p2;p2->next=b+i; (3){(4)head1=p1-p->next=p1- {printf("%7s%7s\n",p1->num,p1->name);#defineNULL0structline{int(1){intstructline*p1,*p2,*head,*new,*newhead;p1=p2=head=(structline*)malloc(sizeof(structline));while(p1-{p1=(structline*)malloc(sizeof(structline));if(p1->num==0)p2->next=NULL;{(2);p2=p1;(3);do{p1=p1-{while(p1-{p2=p1;p1=p1->next;}if(i==0)newhead=new=p1;elsenew=new->next=p1;p1=(4){printf("%4d",p1->num);p1=p1->next;}型定义一个结构体数组,从键盘输入每个结构体元素所需的数据,然后逐个输出这些有一批图书,每本书有:书名(name),作者(author)(num),出版日期(date)四个131、2、3“3”者退出圈子。找80设链表中每个结点包括学号、成绩、和指针三个字段,试编程序打印出链表中第1,3,5,7...第九单元文若fp是指某文件的指针,且已读到文件的末尾,则表达式feof(fp)的返回值 A. B. C.非零 D.C语言可以处理的文件类型 文本文件和数据文 B.文本文件和二进制文C.数据文件和二进制文 D.数据代码文C语言库函数fgets(str,n,fp)的功能 fpnstrfpn-1strfpnstrstrnfp函数rewind的作用 在执行fopen函数时,若执行不成功,则函数的返回值 A. B. C. D.在C程序中,可把整型数以二进制形式存放到文件中的函数 A.fprintf函 B.fread函 C.fwrite函 D.fputc函#include<stdio.h>{FILE*fpcharch,fname[10];if {printf("connotopen\n");while((ch=getchar())!='#') ;f1.datf2.dat#include<stdio.h>{FILE*fp1,*fp2;charc;if {printf("connotopen\n");if {printf("connotopen\n");while {fputc(c,fp2); worker2.rec(即第1,3,5,...号职工的数据)#include<stdio.h>struct{intcharcharsex;intage;int}worker[10];{intFILEif {printf("connotopen\n");for { printf("%5d%-10s%-5c%5d%5d\n",worker[i].num,#includemain(intargc,char{FILE*fp;intk,m;charc;if((fp=fopen(argv[1],"r"))== ){printf("connotopen%s\n",argv[1]);while(fscanf(fp,"%c",&c)!=(2){if( )if(c==46) ;10f3.datf3.dat10worker1.rec出来(用freadfwrite)。将存放在worker1.rec中的职工数据按工资高低排序,将排好序的各记录存放在worker2.recfreadfwrite)。scanf5(包括:学生名、学号、三门课程的分数),然后求出平均分数。用fprintf函数输出所有信息到磁盘文件stud.rec中,再用fscanfstud.rec在文件worker2.rec中插入一个新职工的数据,并使插入后仍保持原来的顺序(按工资高低顺序插入到原有文件中),worker3.recworker2.rec(freadfwrite(a1.dat"abort",a2.dat中放"boy")a3.dat编程序求5X+2Y+Z=50的所有非负整数解。有一长度不大于40的字符串,已知其中包含两个字符“A”,求处于这两个字符“A”中间的字符个数,并把这些字符依次打印出来。25A、B、C、···、X、Y按如下要求打印出来:从最中间的字母M开始打印,然后一左一右依次打印出其它字母,即MLNKO,...。要求:初始化时按字母表顺序赋值。编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。用零作为终止标记。某单位排队形,开始排成3路纵队,末尾多出了2人。后改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论