C语言复习资料.docx
- 文档编号:29930243
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:19
- 大小:26.08KB
C语言复习资料.docx
《C语言复习资料.docx》由会员分享,可在线阅读,更多相关《C语言复习资料.docx(19页珍藏版)》请在冰豆网上搜索。
C语言复习资料
《C语言》课程综合复习资料
一、单选题
1.在C语言中,字符型数据在内存中的存储形式是
A)原码B)补码C)反码D)ASCII码
2.在C语言中,十进制数47可等价地表示为
A)2fB)02fC)57D)057
3.设有定义:
intx=12,n=5;则表达式x%=(n%2)的值为
A)0B)1C)2D)3
4.设有定义语句:
charstr[][20]={,"Beijing","中国石油大学"},*p=str;
则printf("%d\n",strlen(p+20));输出结果是
A)10B)6C)0D)20
5.已定义以下函数:
fun(int*p)
{return*p;}
该函数的返回值是
A)不确定的值B)形参p所指存储单元中的值
C)形参p中存放的值D)形参p的地址值
6.C语言中,函数返回值的类型是由
A)return语句中的表达式类型决定
B)调用函数的主调函数类型决定
C)调用函数时的临时类型决定
D)定义函数时所指定的函数类型决定
7.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是
A)fun(inty,doublem);B)k=fun(10,12.5);
C)fun(10,12.5);D)voidfun(10,12.5);
8.以下选项中不能正确赋值的是
A)charb[]={′H′,′e′,′l′,′l′,′o′,′!
′};
B)charb[10];b="Hello!
";
C)charb[10]="Hello!
";
D)char*str="Hello!
";
9.若有以下定义:
chars[20]="programming",*ps=s;则不能代表字符g的表达式是
A)ps+3B)s[3]C)ps[3]D)ps+=3,*ps
10.当对两个字符串进行比较时,应该使用的函数是
A)strcatB)strcmpC)strcpyD)strlen
11.若i为整型变量,则以下循环的次数是
for(i=2;i==0;)printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
12.以下关于数组的描述正确的是
A)数组大小固定,但是可以有不同类型的数组元素
B)数组大小可变,但是所有数组元素的类型必须相同
C)数组大小固定,所有元素的类型必须相同
D)数组大小可变,可以有不同类型的数组元素
13.以下能正确定义数组并正确赋初值的语句是
A)intN=5,b[N][N];B)inta[1][2]={{1},{3}};
C)intc[2][]={{1,2},{3,4}};D)intd[3][2]={{1,2},{34}};
14.设有定义inta[]={1,5,7,9,11,13},*p=a+3;则*(p-2),*(a+4)的值是
A)511B)19C)59D)有错误
15.已知charb[5],*p=b;,则正确的赋值语句是
A)b=“abcd”;B)*b=“abcd”;C)p=“abcd”;D)*p=“abcd”;
16.用数组名作为函数调用时的实参,则实际传递给形参的是
A)数组的第一个元素值B)数组中全部元素值
C)数组的首地址D)数组的元素个数
17.以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
18.当对两个字符串进行比较时,应该使用的函数是
A)strcatB)strcmpC)strcpyD)strlen
19.有如下定义:
longm;charc;floatx;doubley;则表达式c+m*x/y的值的类型是
A)longB)charC)floatD)double
20.假设已定义charc[8]="test";inti;则下面的输出函数调用中错误的是
A)printf("%s",c);B)for(i=0;i<8;i++)printf("%c",c[i]);
C)puts(c)D)for(i=0;i<8;i++)puts(c[i]);
21.若有以下定义:
chars[20]="programming",*ps=s;则不能代表字符g的表达式是
A)ps+3B)s[3]C)ps[3]D)ps+=3,*ps
22.以下选项中不能正确赋值的是
A)charb[]={′H′,′e′,′l′,′l′,′o′,′!
′};
B)charb[10];b="Hello!
";
C)charb[10]="Hello!
";
D)char*str="Hello!
";
23.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_________。
A)fun(inty,doublem);B)k=fun(10,12.5);
C)fun(10,12.5);D)voidfun(10,12.5);
24.从变量的作用域来分,可分为全局变量和局部变量,形参是
A)局部变量B)全局变量C)静态变量D)动态变量
二、读程序,写出程序的执行结果
1.#include
voidmain()
{intx[]={1,2,3};
ints,i,*p=x;
s=1;
for(i=0;i<3;i++)
s*=*(p+i);
printf(“%d\n”,s);
}1、6
2.#include
charfun(char*s)
{if(*s>=a&&*s<=z)
*s=*s-32;
return*s;
}
voidmain()
{chara[20]="Welcome",*p,ch;
for(p=a;*p!
=\0;p++)
{ch=fun(p);
putchar(ch);
}
}2、WELCOME
3.#include
voidmain()
{intx=26587,x1,r,sum=0;
x1=x;
while(x>0)
{r=x%10;
sum+=r;
x/=10;
}
printf("Sumofthedigitsin%dis%d",x1,sum);
}3、Sumofthedigitsin26587is28
4.#include
intfun(intx)
{inty=1;
staticintz=4;
z+=1;++y;
return(x+y+z);
}
voidmain()
{inti;
for(i=1;i<=3;i++)
printf("%3d",fun(i));
}4、81012
5.#include
voidmain()
{intx=3,y=4;
intj;
for(j=1;y>0;y--)j=j*x;
printf(“j=%d\n”,j);
}5、j=81
运行结果:
6.#include
voidmain()
{intx,y;
for(y=1,x=1;y<=20;y++)
{if(x>=8)break;
if(x%2==1){x+=5;continue;}
x-=3;
}
printf("x=%d,y=%d\n",x,y);
}
运行结果:
6、x=8,y=4
7.#include
voidmain()
{charx[]="language";
char*ptr=x;
while(*ptr)
{printf("%c\n",*ptr-32);
ptr++;
}
}
运行结果:
7、L
A
N
G
U
A
G
E
8.#include
voidmain()
{intx[]={5,6,7};
ints=1,i,*p=x;
for(i=0;i<3;i++)
s*=*(p+i);
printf(“%d\n”,s);
}
运行结果:
8、210
9.#include
intfun(intx)
{return(x>0?
x:
-x);
}
voidmain()
{inta=12;
printf(“%d,%d\n”,a,fun(a));
}
运行结果:
9、12,12
10.#include
voidex()
{staticintx=3;
--x;
printf(“%d”,x);
}
voidmain()
{ex();
ex();
}
运行结果:
10、21
11.#include
voidmain()
{inti=0,a=0;
while(i<20)
{for(;;)
if((i%10)==0)break;
elsei--;
i+=11;
a+=i;
}
printf("%d\n",a);
}11、32
12.#include
voidmain()
{inta[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}};
inti,j,row=0,colum=0,max;
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d",max,row,colum);
}12、max=10,row=1,colum=2
13.#include
intf(intb[],intm,intn)
{inti,s=0;
for(i=m;i returns; } voidmain() {intx,a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,3,8); printf("%d\n",x); }13、18 14.#include voidswap(intb[]) {int*p,*p1,*p2; p1=&b[0];p2=&b[1]; p=p1;p1=p1+1;p2=p; } voidmain() {inta[]={5,9}; printf("%d,%d\n",*a,*(a+1)); swap(a); printf("%d,%d\n",a[0],a[1]); }14、5,9 15.#include intb=3; intfun(int*a) {b+=*a; return(b); } voidmain() {inta=2,b=2; b+=fun(&a); printf(“%d\n”,b); }15、7 16.#include voidmain() {inta[10],*p,*s,i; for(i=0;i<10;i++)scanf(%d”,a+i); for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p; printf(“max=%d,index=%d\n”,*s,s-a); } 简述上列程序完成的功能: 16、查找数组中最大值并记录元素下标 17.#include voidmain() {intx,y; for(y=1,x=1;y<=20;y++) {if(x>=8)break; if(x%2==1){x+=5;continue;} x-=3; } printf(“x=%d,y=%d\n”,x,y); }17、x=8,y=4 18.#include #defineN3 voidzz(intx[N][N]) {inti,j,t; for(i=0;i for(j=0;j {t=x[i][j];x[i][j]=x[j][i];x[j][i]=t;} } voidmain() {intstr[N][N]={1,2,3,4,5,6,7,8,9},i,j; zz(str); for(i=0;i {for(j=0;j printf("\n"); } }18、147 258 369 19.#include voidmain() {chara[20]="abcXYZ",c; inti,j; j=strlen(a)-1; for(i=0;j>i;i++,j--) {c=*(a+i);*(a+i)=*(a+j);*(a+j)=c;} puts(a); }19、ZYXcba 20.#include inta=100,b=200; voidf() {printf(“%d,%d\n”,a,b); a=1;b=2; } voidmain() {inta=5,b=7; f(); printf(“%d,%d\n”,a,b); }20、5,7 21.#include intd=1; intfun(intp) {staticintd=3; d+=p; printf("%3d",d); return(d); } voidmain() {printf("%3d\n",fun(2+fun(d))); }21、5,12,12 22.#include voidmain() {charx[]="123456789",*p=x; inti=0; while(*p) {if(i%2==0)*p='*’; p++;i++; } puts(x); }22、*2*4*6*8* 三、编程题 1.编程输入实数x,计算下面函数的值,并输出y值。 x2x<1 y=3x-11x10 x>10 2.编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,并输出统计结果。 3.编写打印如下图形的程序(必须用循环语句实现) * ** *** **** ***** 4.编写程序,从键盘上任意输入20个整数,存入一个数组中,然后输出这些数中最大数及其下标以及最小数及其下标 5.编程打印下列的杨辉三角形。 (设8行) 1 11 121 1331 14641 15101051 6.求分段函数的值 7.编程打印以下图形(要求用循环控制语句实现) & && &&& &&&& &&&&& &&&&&& 《C语言》课程综合复习资料答案 一、单选题: 二、读程序写出程序执行结果: 三、编程题 1、#include voidmain() { intx,y; scanf(“%d”,&x); if(x<1) y=x*x; else if(x>=1&&x<=10)y=3*x-1; elsey=x/5; printf(“x=%d,y=%d\n”,x,y); } 2.#include #include voidmain() /*主函数*/ { charc; /*定义变量*/ intm=0,n=0,a=0,b=0; printf("请输入任意字符串.\n"); /*输入提示部分,提示输入*/ while((c=getchar())! ='\n') /*循环语句,将由键盘输入的非'\n'字符赋值给c*/ { if((c>=65&&c<=90)||(c>=97&&c<=122)) /*第一个选择语句,统计英文字符个数*/ { m=m+1; } elseif(c==32) /*第二个选择语句,统计空格字符的个数*/ { n=n+1; } elseif(c>=48&&c<=57) /*第三个选择语句,统计数字字符的个数*/ { a=a+1; } else /*统计其他字符的个数*/ b=b+1; } printf("%d%d%d%d",m,a,n,b); /*输出最后统计结果*/ getch(); /*输出结果后屏幕停留*/ } 3.#include main() { intn,i,j; printf(“n=%d\n”); scanf(“%d”,&n); for(i=0;i { for(j=0;j for(j=0;j printf(“\n”); } 4.#include voidmain() { inta[20],i,max,min,num1,num2; for(i=0;i<20;i++) {printf(“inputthenumber%d: ”,i); scanf(“%d”,&a[i]); printf(“\n”); } for(i=0;i<20;i++) { If(a[i]<=a[0]) {min=a[i]; Num1=i; } Else {max=a[i]; num2=i; } } printf(“min=%d,num1=%d\n”,min,num1); printf(“max=%d,num2=%d\n”,max,num2);} 5.#include #defineN11 voidmain() { inti,j,a[N][N];/*数组为11行11列,0行0列不用*/ for(i=1;i { a[i][1]=1;/*使第1列元素的值为1*/ a[i][i]=1;/*使对角线元素的值为1*/ } for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i {for(j=1;j<=i;j++) printf(“%6d”,a[i][j]); printf(“\n”); } printf(“\n”); } 6. main(){ floatx,y; switch(x){ casex>0: y=1+pow(2.178,x);break; casex=0: y=0;break; casex<0: y=ln(x*x); } } 7.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习资料