c语言练习题
- 格式:doc
- 大小:106.00 KB
- 文档页数:20
C语言习题1、写出以下程序的运行结果:main(){ int i=1,j=2,k=3;int n1,n2,n3;float x=3.0,y=0.85;n1=x&&j<i;n2=x+y||i+j-k;printf(“%d,%d\n”,n1,n2);}答案:0,1分析:&&是只要有一边为0 , 表达式为0||是只要有一边为1 , 表达式为12、写出以下程序的运行结果:#include <stdio.h>main(){ int x,y=7;float z=4;x=(y=y+6,y/z);printf("x=%d\n",x);}答案:3分析:逗号表达式的求解过程为:先求表达式1,再求表达式2,……最后求表达式n,表达式n也就是整个表达式的值。
在本题中先求解y=y+6,得到y的值为13,再求解y/z,其值为3,也就是整个表达式的值。
3、分析以下程序的结果。
main( ){int a,y;a=10,y=0;do{ a+=2;y+=a;if (y>50) break;} while (a=14);printf("a=%d,y=%d\n",a,y);}答案:a=16,y=60分析:用变量跟踪法表示为:a y10 012 1214+2 16+12=2814+2 16+28=4414+2 16+44=604、若有说明:int a[10];则对a数组元素的正确引用是:A)a[10] B)a[3.5] C)a(5) D)a[10-10]答案:D分析:数组元素引用的一般形式是:数组名[下标]。
下标可以用整型常量、整型变量或整型表过式,其范围从0开始,小于等于“元素个数-1”。
5、在C语言中,引用数组元素时,其数组下标的数据类型允许是:A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式答案:C分析:详见第4题分析。
6、以下对二维数组a的正确说明是:A)int a[3][]; B)float a(3,4);C)double a[1][4]; D)float a(3)(4);答案:C分析:定义数组时元素个数1(最左边的元素个数)可以省略,元素个数2不能省略,故A 错误。
数据用[]来表示,故B和D是错误的。
7、以下正确的函数定义形式是:A)double fun(int x,int y)B)double fun(int x;int y)C)double fun(int x,int y);D)double fun(int x,y);答案:A分析:定义有参函数的一般形式为:类型标识符函数名(形式参数表列),注意圆括号后没有分号。
8、以下不正确的说法是。
C语言规定:A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致答案:B分析:形参只能是变量,实参可以是常量、变量或表达式。
9、以下正确的函数形式是:A)double fun(int x,int y){ z=x+y; return z; }B)fun(int x,y){ int z; return z; }C)fun(x,y){ int x,y; double z; z=x+y; return z; }D)double fun(int x,int y){ double z; z=x+y; return z; }答案:D分析:定义有参函数的一般形式为:类型标识符函数名(形式参数表列){声明部分语句部分}10、C语言规定,函数返回值的类型是由:A)return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定答案:D11、下面函数调用语句含有实参的个数为:func((exp1,exp2),(exp3,exp4,exp5))A)1 B)2 C)4 D)5答案:B分析:exp1,exp2和exp3,exp4,exp5是两个逗号表达式,其值是最后一个表达式的值。
13、写出以下程序的运行结果:#define M 3#define N (M+1)#define NN N*N/2main(){ printf("NN=%d,",NN);printf("5*NN=%d\n",5*NN);}答案:NN=8,5*NN=40注意:若将第二行改为#define N M+1,即去掉(M+1)的括号,则结果为NN=6,5*NN=18。
14、指针运算的程序举例:把a,b按大小顺序输出。
main(){ int *p1,*p2,*p,a,b;a=45;b=76;p1=&a; p2=&b;if(*p1<*p2) {p=p1;p1=p2;p2=p;}printf("a=%d,b=%d,max=%d,min=%d",a,b,*p1,*p2);}则输出结果为:a=45,b=76,max=76,min=4515、表达式“c=*p++”的执行过程是:A、复制p的值给c后再执行p++B、复制*p的值给c后再执行p++C、复制*p的值给c后再执行*p++D、执行p++后将*p的值复制给c答案:B16、执行以下程序后,a和b的值分别是:main(){int a,b,k=4,m=6,*p1=&k,*p2=&m;a=p2= =&k;b=(--*p1)/(*p2)+7;printf("%d",a);printf("%d",b);}答案:0 7分析:int a,b,k=4,m=6,*p1=&k,*p2=&m;声明整型变量a,b,k,m和指针p1,p2,并分别将4和6赋给k和m,将k和m的地址赋给p1和p2;a=p2= =&k;等价于a=(p2= =&k);将p2是否等于地址k的值(此处为不等于,所以为0,若等于,则为1)赋给变量a,b=(--*p1)/(*p2)+7;该句的含义是将后面表达式的值0.5+7的值赋给变量b,因b是int型,所以b 的值为7。
17、答案:B18、答案:B19、答案:C20、答案:D21、答案:C22、编程题:题目:输入两个实数,按代数值由小到大的顺序输出这两个数。
答案:main(){float a,b,t;scanf(″%f,%f″,&a,&b);if(a>b){t=a;a=b;b=t;}printf(″%5.2f,%5.2f\n″,a,b);}23、编程题:题目:输入三个数a,b,c,要求按由小到大的顺序输出。
答案:main ( ){ float a,b,c,t;scanf(″%f,%f,%f″,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}24、编程题:题目:用for语句求1-100的和。
main(){ int i,sum=0;for(i=1; i<=100; i++){sum=sum+i; }printf("%d\n",sum);}25、编程题:题目:有1,2,3,4 这4 个数字,能组成多少个互不相同且无重复数字的3 位数?编写程序并打印这些3 位数。
答案:main(){int i,j,k,t=0;for(i=1; i<5; i++)for(j=1; j<5; j++)for(k=1; k<5;k++)if((i!=k)&&(i!=j)&&(j!=k)){ t++;if(t%10= =0)printf("%d%d%d \n",i,j,k);elseprintf("%d%d%d ",i,j,k);}printf("\nt = %d\n",t) ;}以下为输出后的结果样式:26、编程题:题目:将数字0~4放入一个整型数组,并逆序输出数组。
答案:main(){int i,a[5];for(i=0;i<5;i++)a=i;for(i=4;i>=0;i--)printf(“%3d”,a);}运行结果为:4 3 2 1 027、编程题:题目:输入10个整数,输出最大数。
答案:main(){int i,array[10],big;for(i=0;i<10;i++)scanf(“%d”,&array);big=array[0];for(i=1;i<10;i++)if(array>big) big=array;printf(“%3d”,big);}28、编程题:题目:给出10个儿童的体重,要求计算平均体重并打印出低于平均体重的数值。
答案:main(){int w[10];int t, i;for( i=0; i<10; i++ ) scanf( "%d", &w );for( t=0, i=0; i<10; i++ ) t = t + w;t = t/10;for( i=0; i<10; i++ )if( w < t )printf( "%d\n", w );}29、编程题:题目:用函数求两个整数的和。
从键盘输入两个整数a,b,求a+b 的和,然后输出结果。
int sum(int x1, int x2){int x;x=x1+x2;return (x);}main( ){int a, b, s;scanf("%d%d", &a, &b);s=sum(a, b);printf("the sum=%d\n", s);}30、编程题:题目:有5个人坐在一起, 问第5个人多少岁? 答,比第4个人大2岁。
第4个人说他比第3个人大2岁, 第3个人比第2个人大2岁, 第2个人比第1个人大2岁,问第1个人时回答是10岁。
第5个人到底多大?答案:#include <stdio.h>int age ( int n ){int c ;if ( n = = 1 ) c = 10 ;else c = age ( n - 1 ) + 2;return c ;}main ( ){printf ( " %d" , age ( 5 ));}31、编程题:题目:求圆的周长、面积和体积。