《c语言练习题及答案.doc》由会员分享,可在线阅读,更多相关《c语言练习题及答案.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1题 (2分)运行以下程序时,输出结果是【1】 9 long fit(int n)if(n2) return(fit(n-1)+fit(n-2);else return(3);main()printf(%ldn,fit(4);第2题 (2分)以下程序运行后的输出结果是【1】 abcbcc#include void main() char ch=abc,x34;int i; for(i=0;i3;i+) strcpy(xi,ch); for(i=0;i3;i+)printf(%s,&xii); printf(n); 第3题 (2分)下列程序的输出结果是【1】 CDABC#include mai
2、n( ) char b30; strcpy(&b0,CH); strcpy(&b1,DEF); strcpy(&b2,ABC); printf(%s n,b); 第4题 (2分)运行以下程序时,输出结果是【1】 6 8#include int b; int fun (int a) static int c=2; return(+a)+(+b)+(+c); void main( ) int i, a=1; for(i=0;i2;i+) printf(%5d,fun(a);第5题 (2分)在函数内部声明局部变量时缺省了存储类型,则该变量存储类型是【1】 auto第6题 (2分)有以下定义和语句:s
3、truct date int day; int month; int year; union int share1; float share2; share; a; 则sizeof(a)的值是【1】 VC+环境下为16 , Turbo C环境下为10第7题 (2分)以下程序的运行结果是【1】 3 , 4, 5int *swap(int *a,int *b) int *p;p=a;a=b;b=p;return a;main( )int x=3,y=4,z=5;swap(swap(&x,&y),&z);printf(%d,%d,%d,x,y,z);第8题 (2分)以下程序的运行结果是【1】 2,
4、1 交换的是指针p,q的指向void swap(int *r,int *s) int *t; t=*r; *r=*s; *s=t;main( ) int a=1,b=2,*p,*q; p=&a; q=&b; swap(&p,&q); printf(%d,%dn,*p,*q);第9题 (4分)以下程序运行时, 输出结果的第一行是【1】, 第二行是【2】. 3 2#include void f (int *x, int y) *x=y+1 ; y=*x+2 ; main( ) int a=2, b=2 ; f(&a, b) ; printf(%d n%d,a,b);第10题 (4分)设有以下mai
5、n函数main(int argc, char *argv ) while(argc 1) +argv; printf(%sn, *argv); - -argc; 经过编译、连接后得到可执行文件名为c1.exe,若在系统的命令状态下输入命令行:c1 nanjing xiaozhuang college,则在第一行输出【1】_,第三行输出【2】_。nanjing college第11题 (4分)请填空以使程序完整。有一个m*n的矩阵,以下程序的功能是求出其中值最大的元素的值,以及相应的行号和列号。#define M 4#define N 3main( )int i,j,row=0,colum=0,
6、max;int aMN=1,23,3,4,8,6,17,6,1,0,11,17;【1】_; / max=a00;for(i=0;i=3;i+) for(j=0;j=2;j+) if(【2】_) / maxaij max=aij; row=i; colum=j; printf(max=%d,row%d,colum=%dn,max,row,colum);第12题 (4分)以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数.例如,输入的字符串为:556,则输出十进制整数366.请填空。#include main() char s6; int n,i=0; gets(s); n=【1】_
7、 -0; /si while(【2】_ !=0)n=n*8+si-0; /s+i printf(%d n,n);第13题 (6分)该程序功能是:将有10个元素的整型数组a中下标值为偶数的元素从大到小排列,其他元素不变。请填空以使程序完整。#define k 10main( ) int ak=1,2,5,7,9,3,4,6,8,10,t;int i,j;for(i=0;ik;i+)printf(%5d,ai);for(i=0;i=【1】_;i=i+2) /i=6for(j=i+2;jk;j+=2)if(【2】_) /aiajt=ai;【3】_;aj=t; /ai=ajfor(i=0;ik;i+)
8、printf(%5d,ai);printf(n);第14题 (6分)请填空以使程序完整。该程序的功能是把从键盘输入的十进制(long型)以16进制数的形式输出。#include main( ) char b16=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F; int c64,d,i=0; long n; printf(Enter a number:n);scanf(%ld,&n); do ci=【1】_; /n%16 i+; n=【2】_; /n/16 while(n!=0); printf(Transmite mew base:n); for(-i;i=0;-i) 【3】_
9、; /d=ci; printf(%c,bd); 第15题 (6分)阅读以下程序: main( ) char *str3=Fortrain ,Prolog,Pascal ; char *p; int i; p=str; for(i=0;i3;i+,p+) printf(%cn ,(*(*p+3)+1); 该程序第1行、第2行及最后一行的输出分别为【1】_ 、【2】_和【3】_。u, m, d第16题 (6分)以下程序使用递归方法求数组中的最大值及其下标值,请填空:#define M 10void findmax(int *a,int n,int i,int *pk)if(ia*pk) 【1】_;
10、 /*pk=ifindmax(a,n,i+1,【2】_); /pkmain( ) int aM,i,n=0;printf(nEnter %d data:n,M);for(i=0;iM;i+)scanf(%d,【3】); /&aifindmax (a,M,0,&n);printf(The maximum is: %dn,an);printf(its index is: %dn,n);第17题 (4分)阅读以下程序:main( ) char *str3=Basic ,Visual C+,Pascal ; char *p; int i; p=str; for(i=0; iy=2 B、zyx C、xy
11、=1 D、x=(x=0, y=1, z=2)第5题 (2分)有声明int x=2;,以下表达式中值不等于8的是_. DA、x+=2,x*2 B、x+=x*=xC、(x+7)/2*(x+1)%2+1) D、x*7.2/x+1第6题 (2分)若有数组A和B的声明static char A =ABCDEF, B = A, B, C,D,E, F; 则数组A和数组B的长度分别是_。 AA、7,6 B、6,7 C、6,6 D、7,7第7题 (2分)以下程序运行后的输出结果是_. Bmain( ) char a7= a00a00; int i,j; i=sizeof(a); j=strlen(a); pr
12、intf(%d %d,i,j);A、2 2 B、7 2 C、7 5 D、6 2第8题 (2分)以下不正确的说法为( ) AA、在函数内的复合语句中定义的变量在本函数范围内有效B、在不同函数中可以使用相同名字的变量C、在函数内定义的变量只在本函数范围内有效D、形式参数是局部变量第9题 (2分)以下程序运行结果( ) Blong fun(int n)long s;if(n=1|n=2) s=2;else s=n-fun(n-1);return s;main() printf(%dn,fun(3);A、2 B、1 C、0 D、10第10题 (2分)下面程序运行后的输出结果是_。 Amain ( )
13、char arr24; strcpy(arr0,you); strcpy(arr1,me); arr03= &; printf(%sn,arr0); A、you&me B、you C、me D、err第11题 (2分)以下叙述正确的是( )。AA、一个用C语言编写的程序在运行时总是从main函数开始逐条执行B、main函数是系统库函数C、main函数中每行只能出现一条语句D、main函数必须出现在所用其它函数之前第12题 (2分)语句printf(%d,(a=2)&(b= -2);的输出结果是( ) DA、无输出 B、结果不确定 C、-1 D、1第13题 (2分)若有函数fun的定义为:voi
14、d fun() static int a=1; 则下列叙述中不正确的是( ). BA、在每次调用fun函数时,变量a的值是上次调用结束时a的值B、在fun函数之外,可以用变量名a直接引用a的值C、在其它函数中,可以出现声明double a=2.5;D、fun函数的形式参数不能取名为a第14题 (2分)以下程序输出结果是( )。 C#includevoid main()int i,a10; for(i=9;i=0;i-) ai=10-i;printf(%d%d%d,a2,a4,a8);A、852 B、741 C、862 D、369第15题 (2分)以下程序的输出结果是( ). C#include
15、 main( ) int i; for(i=A;i=I;i+) printf(%c,i+32); printf(n); A、编译不通过,无输出 B、ABCDEFGHC、abcdefghi D、abcdefgh第16题 (2分)以下关于if语句,描述错误的是( )。BA、条件表达式可以是任意的表达式B、条件表达式只能是关系表达式或逻辑表达式C、条件表达式的括号不可以省略D、与else配对的if语句是其之前最近的未配对的if语句第17题 (2分)以下程序段循环执行的次数是( )。 Bint k=0; while(k = 1) k+; whileA、无限次 B、有语法错,不能执行C、一次也不执行 D
16、、执行1次第18题 (2分)以下正确的叙述是( )。AA、在C程序中,语句之间必须要用分号;分隔B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型C、在C程序中,无论是整数还是实数,都能准确无误地表示D、在C程序中,%是只能用于整数运算的运算符第19题 (2分)若有以下定义,则对a数组元素的正确引用是( )。Bint a5,*p=a;A、p+5 B、*(a+2) C、a+2 D、&a+1第20题 (2分)以下程序执行后的输出结果是( )。Dmain( ) int i,s=0; for(i=1;i10;i+=2) s+=i+1; printf(%dn,s);A、自然数19的累加和 B、自然数110的累加和C、自然数19中的奇数之和D、自然数110中的偶数之和