C语言经典例题和答案 .

有以下程序: void f(int v,int w) { int t; t=v;V=W;W=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d<%d\n",x,y,Z); } 执行后输出结果是( )。

A.1,2,3

B.3,1,2

C.1,3,2

D.2,3,1


正确答案:C
解析:C语言规定else总是和离它最近的if语句配对。分析可以知道,。函数f()作用是让形参v和形参w的值交换。在主函数中首先定义了3个变量x、y和z。然后再执行下面的if-else语句。由程序可以看出第一个else和第一个if搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x、y、z传给形参v和w,以后行参和实参再无联系,故通过if语句调用f()函数后,x、y和z的值并没有改变。因此最后输出的x、y和z的值为1、3和2,所以,4个选项中选项C符合题意。


若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是( )

w=2,x=3,y=4,z=5;

m=(w<x)?w:x;

m=(m<z)?m:z;

m=(m<y)?m:y;

A.2

B.3

C.5

D.4


正确答案:A
解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值;当a为假时,其值等于表达式c的值。表达式运算过程:第1个表达式:w=2x=3为真,所以返回w的值,即m=w=2:第2个表达式:m=2z=5为真,所以返回m的值,即m=2;第3个表达式:w=2y=4为真,所以返回m的值,即m=2。


下面程序段的正确输出是

int w=4,x=3,y=2,z=1;

cout<<(w<x? w:z<y? z:x)<<end1;

A.0

B.1

C.2

D.3


正确答案:B
解析:本题为表达式作为变量进行输出,而且表达式为两个三目表达式的嵌套,条件运算术的结合性为向右结合。可以正确得出答案为B。


以下程序执行后的输出结果是( )。include usingnamespacestd;void try(int,int,int,in

以下程序执行后的输出结果是( )。 #include <iostream> using namespace std; void try(int,int,int,int); int main ( ) { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<end1; return 0; } void try(int x,int y, int z,int r) { z = x+y; x = X*X; y = y*y; r = z+x+y; }

A.18

B.9

C.10

D.不确定


正确答案:D
解析:本题常见的错误解答是:把x=1,y=2代入到函数try中,逐步计算出r=8。最后得到r的输出值是8。下面是正确解答。根据程序逐步分析:①程序中定义了一个名为try的void型函数,即函数try()没有任何返回值。②而try()函数在主函数中是以一条独立语句的方式被调用的,且主函数最后输出变量r的值。③但在主函数中,并没有对变量r赋值。④在C++语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以,虽然在函数try()中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。


有如下程序:includeint func(int a,int b){return(a+b):}main(){int x=2,y=5,z=8,r; r

有如下程序: #include <stdio.h> int func(int a,int b) { return(a+b):} main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r); } 该程序的输出结果是( )。

A.12

B.13

C.14

D.15


正确答案:D
解析:在表达式r=func(func(x,y),z)中,func(x,y)是第一次调用函数,它的返回值7作为func函数第二次调用的实参,结果为15。


作业一一、 求一个任意边长的矩形面积。#include void main()int w,h,sum;scanf(%d%d,&w,&h);sum=w*h;printf(area=%dn,sum);二、 求一个任意半径的圆的面积及周长。#define PI 3.14159#include void main()float r,area,c;scanf(%f,&r);area=PI*r*r;c=2*PI*r;printf(area=%fncircle=%fn,area,c);三、 已知:w=5, y=4, z=2, 求表达式:w*y/z的值,并输出。#include void main() int w,y,z,r; w=5; y=4; z=2; r=w*y/z; printf(%5d,r);作业二一、 从键盘上输入三个数,求出其中的最大值,并输出。#include void main()int a,b,c,max;scanf(%d%d%d,&a,&b,&c);max=a;if(maxb) max=b;if(maxc) max=c;printf(max=%dn,max);二、 求sin300。+sin600+cos300+cos600之和。(注意:30*3.14159/180)#include #define PI 3.14159#include void main()float a,b,sum;a=30*PI/180;b=60*PI/180;sum=sin(a)+sin(b)+cos(a)+cos(60);printf(total=%fn,sum);三、 比较两个数的大小。如果x大于y,则输出:xy,否则输出:xy。#include void main()int x,y;scanf(%d,%d,&x,&y);if(xy) printf(xyn);else printf(xyn); 作业三一、 输入a、b、c三个值,按从小到大排序输出。#include void main()int a,b,c,t;scanf(%d%d%d,&a,&b,&c); if(ab) t=b; b=a; a=t; if(ac) t=a; a=c; c=t; if(bc) t=b;b=c;c=t; printf(%3d%3d%3dn,a,b,c);.二、 求自然数110之和。#include void main()int i,sum;i=1;sum=0;while(i=10)sum=sum+i;i+;printf(sum=%dn,sum);三、 输入10个整数,统计出正数之和以及负数之和。(求奇数之和以及偶数之和)#include void main()int sum1=0,sum2=0,i,x;i=1;while(i=10) scanf(%d,&x); if(x%2=0) sum1=sum1+x; else sum2=sum2+x; i+;printf(sum1=%dnsum2=%dn,sum1,sum2);作业四一、 输入一个06的整数,转换成星期输出。#include main() int a; scanf(%d,&a); switch(a) case 0: printf(Sunday);break; case 1: printf(Monday);break; case 2: printf(Tuesday);break; case 3: printf(Wednesday);break; case 4: printf(Thursday);break; case 5: printf(Friday);break; case 6: printf(saturday);break; default: printf(I am sorry.You are wrong.n);.二、 输入一个整数,将各位数字反转后输出。如:输入365,则输出显示为563。#include void main()int x,r;scanf(%d,&x);printf(conver is:);while(x!=0) r=x%10; printf(%d,r); x=x/10; printf(n); 三、 输入一个整数,求出它的所有因子。#include void main()int x,i;scanf(%d,&x);for(i=1;i=x;i+)if(x%i=0)printf(%3d,i);作业五一、 求100 200之间的素数。#include #include void main()int j=0,x,n,i;for(x=100;x=200;x+) n=sqrt(x); for(i=2;in) printf(%5d,x); j+; if(j%5=0)printf(n);二、 编程输出三角形的99乘法表。#include void main()int i,j;for(i=1;i10;i+)for(j=1;j=i;j+)printf(%d*%d=%d ,i,j,i*j);printf(n);三、 求任意二个数的最大公约数。#include main() int a,b,m,n,q; scanf(%d%d,&m,&n); a=m; b=n; if(ab) int z; z=a; a=b; b=z; do q=b%a; b=a;a=q; while(q!=0); printf(%dn,b);作业六一、 利用循环语句求 (直到第100项的和)。#include void main() int i,t=1; float s=1,p=0,n=1; for(i=1;i=100;i+) p=p+s; n=n+2; t=-t; s=t/n; printf(%fn,p);二、 编写求 S=。#include void main() int x,y=0,n,i; for(n=1;n=5;n+) x=1; for(i=1;i=n;i+) x=x*i; y=y+x; printf(%dn,y);三、 利用公式求 cosx 的近似值(精度为10-6):#include #include void main() float n=1,t=1,pi=0,s=1,x,i=1; scanf(%f,&x); while(fabs(t)=1e-6) pi+=t; n=n*i*(i+1); s=-s*x*x; i+; t=s/n; printf(%f,pi);作业七一、 用选择法对10个整数排序(由大到小)。#include void main(void) int a10,i,j,t; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i9;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;i10;i+) printf(%6d,ai); printf(n);二、 输入 10个学生的一门课成绩,用一维数组存放其成绩,统计并输出不及格人数及其百分比。#include void main(void) int i,count=0; float score10,percent; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) if(scorei60) count+; percent=(float)count/10; printf(%d,%5.1f,count,percent); 三、 编程实现N阶方阵转置。#include void main() int a33,b33,i,j; for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); for(i=0;i3;i+) for(j=0;j3;j+) bji=aij; printf(n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,bij); printf(n); 作业八一、 把输入的一个字符串按逆序重新排序其字符,并输出。#include #include void main() char a80,k; int i,j; gets(a); for(i=0,j=strlen(a)-1;ij;i+,j-) k=ai; ai=aj; aj=k; puts(a);

有以下程序:include void f(int v, int w){int t; t=v; v=w; w=t;}main(){int x=1,y=3

有以下程序: #include <stdio.h> void f(int v, int w) { int t; t=v; v=w; w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d\n",x,y,z); } 执行后的输出结果( )。

A.1,2,3

B.3,1,2

C.1,3,2

D.2,3,1


正确答案:C
解析:程序中if语句的条件只有y>z为真,所以执行f(y,z)。函数f的功能是交换两形参的值,但由于实参和形参都是一般变量,因此形参变量值的交换不能影响实参的值,main函数中的y和z并来互换,因此输出结果为:1,3,2。


以下程序的运行结果是include void sub(int x,int y,int *z){*z=y-x;}void main( )

以下程序的运行结果是 #include<iostream.h> void sub(int x,int y,int *z) { *z=y-x;} void main( ) { int a,b,c; sub(10,5,&a) ; sub(7,a,&b) ; sub(a,b,&c) ; cout << a <<","<< b <<"," << c << en

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7


正确答案:B
解析:在C++语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。了解了实参指针变量的改变情况,本题只剩下简单的“加减法”了。


下列程序的输出结果是_____。int func(int a,int b){ return(a+b);} main(){ int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%\d\n",r);}

A.12

B.13

C.14

D.15


正确答案:D


有如下程序:includeint func(int a, int b){return(a+b) ;}void main( ){int x=2,y

有如下程序: #include<iostream.h> int func(int a, int b) { return(a+b) ;} void main( ) { int x=2,y=5,z=8,r; r=func(func(x,y) ,z) ; cout < < r; } 该程序的输出的结果是

A.12

B.13

C.14

D.15


正确答案:D
解析:在语句r=func(func(x, y) ,z) ;中,fun(x, y) 是一次调用函数,它的值作为func另一次调用的实参。注意本题调用两次函数。


请选出以下程序的输出结果_______。includesub(x,y,z)int x,y,*z;{*z=y-x;}main(){int

请选出以下程序的输出结果_______。 #include<stdio.h> sub(x,y,z) int x,y,*z; {*z=y-x;} main(){ int a,b,c; sub(10,5,&A) ;sub(7,a,&B) ;sub(a,b,&C) ; printf("%d,%d,%d\n",a,b,C) ; }

A.5,2,3

B.-5,-12,-7

C.-5,-12,-17

D.5,-2,-7


正确答案:B
解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于她址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*2变化,所以此次函数被调用后,a的值为y-x=5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

更多 “C语言经典例题和答案 .” 相关考题
考题 已知“int w=1,x=2,y=3,z=4;”,则表达式“w>x?w:z>y?z:x”的值是()A.1B.2C.3D.4正确答案:D

考题 有以下程序 void f(int v,int w) { int t; t=v;v=w;w=t } main() {int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); pfintf("%d,%d,%d\n",x,y,2); } 执行后输出结果是A.1,2,3B.3,1,2C.1,3,2D.2,3,1正确答案:C解析:C语言规定else总是和离它最近的if语句配对。分析可以知道,函数f()作用是让形参v和形参w的值交换。在主函数中首先定义了三个变量x、y和z。 然后再执行下面的if-else语句。由程序可以看出第一个else和第一个if搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x,y,z传给形参v和w,以后形参和实参再无联系,故通过if语句调用f()函数后,x、y和x的值并没有改变。故最后输出的x、y和z的值为1、3和2。

考题 以下程序执行后的输出结果是includeusing namcspace std;void try(int,int,int,int);以下程序执行后的输出结果是 #include<iostream> using namcspace std; void try(int,int,int,int); int main() { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<end1; return 0; } void try(int x,int y, int z,int r) { z = x+y; x = x*x; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定正确答案:D解析:本题考核函数调用(参数的传递)。本题常见的错误解答是:把x=1,y=2代入到函数try中,逐步计算出r=8。最后得到r的输出值是8。以下是正确解答,根据程序逐步分析:程序中定义了一个名为try的void型函数,即函数try没有任何返回值。而try函数在main函数中是以一条独立语句的方式被调用的,且main函数最后输出变量r的值。但在main函数中,并没有对变量r赋值。在C++语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以虽然在函数try中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。

考题 以下程序执行后的输出结果是include.using namespace std;void try(int,int,int,int)以下程序执行后的输出结果是 #include<iostream>. using namespace std; void try(int,int,int,int); int main() { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<end1; return 0; } void try(int x,int y, int z,int r) { z = x+y; x = x*x; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定正确答案:D解析:本题考核函数调用(参数的传递)。本题常见的错误解答是:把x=1,y=2代入到函数try中,逐步计算出r=8。最后得到r的输出值是8。以下是正确解答,根据程序逐步分析:程序中定义了一个名为try的void型函数,即函数try没有任何返回值。而try函数在main函数中是以一条独立语句的方式被调用的,且main函数最后输出变量r的值。但在main函数中,并没有对变量r赋值。在C++语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以虽然在函数try中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。

考题 请选出以下程序的输出结果 ______。include sub(x, y, z)int x, y,*z;{*z=y-x:}main()请选出以下程序的输出结果 ______。#include <stdio. h>sub(x, y, z)int x, y,*z;{*z=y-x:}main(){ int a, b, c; sub 10,5,&a);sub(7,a,&b);sub(a, b, &c); printf("%d,% d,/%d\n", a, b, c);}A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7正确答案:B解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(0.,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

考题 以下程序执行后的输出结果是include using namespace std;void try(int,int,int,int)以下程序执行后的输出结果是 #include <iostream> using namespace std; void try(int,int,int,int); int main () { int x,y,z,r; x =1 ; y = 2; try(x,y,z,r); cout<<r<<endl; return 0; } void try(int x,int y,int z,int r) { z = x+y; x = x*x; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定正确答案:D解析:本题考核函数调用(参数的传递)。本题常见的错误解答是:把x=1,y=2代入到函数try中,逐步计算出r=8。最后得到r的输出值是8。以下是正确解答,根据程序逐步分析:程序中定义了一个名为try的void型函数,即函数try没有任何返回值。而try函数在main函数中是以一条独立语句的方式被调用的,且main函数最后输出变量r的值。但在main函数中,并没有对变量r赋值。在c++语言中,数据只能从实参单向传递给形参,称为按值传递。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。所以虽然在函数try中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。

考题 以下程序的输出结果是( )。include main() { int z,y[3]={2,3,4};Z=y[y[2]]=10; printf("%d",z);}A、10B、2C、3D、运行时出错,得不到确定值正确答案:D

考题 若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是()。 w=2,x=3,y=4,z=5; m=(w<x)w:x; m=(m<z)m:z; m=(m<y)m:y;A、2B、3C、5D、4正确答案:A

考题 以下程序执行后的输出结果是()。includeusing namespace std;void try(int,int,int,in以下程序执行后的输出结果是( )。 #include<iostream> using namespace std; void try(int,int,int,int); int main() { int x,y,z,r; x=1; y=2; try(x,y,z,r); cout<<r<<endl; return 0; } void try(int x,int y, int z,int r) { z = x+y; X = x*x; y = y*y; r = z+x+y; }A.18B.9C.10D.不确定正确答案:D

考题 有以下程序的输出结果是( ) void f(int v , int w) { int t; t=v;v=w;w=t; } main( ) { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf(“%d,%d,%d\n”,x,y,z);}A.1,2,3B.3,1,2C.1,3,2D.2,3,1正确答案:C解析:在本题中,main函数中的x,y,z在f函数调用前后不会发生值的变化。