C语言练习题、期末题、复试题_第1页
C语言练习题、期末题、复试题_第2页
C语言练习题、期末题、复试题_第3页
C语言练习题、期末题、复试题_第4页
C语言练习题、期末题、复试题_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言技能试题1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。 用scanf输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。2、编程序,用getchar函数读放两个字符给 cl、c2,然后分别用putchar函数和printf函数 输出这两个字符。3、有一个函数x x1J 2x 1 x10用scanf函数输入x的值(分别为x10三种情况),求y值。4、给一个百分制成绩, 要求输出成绩等级 A、B、C、D、E。90分以上为A, 8189 分为B, 7079 分为C, 6069 分为D, 60 分以下为E。5、给一个不多于5位的正整数,要求:

2、求出它是几位数;分别打印出每一位数字;按逆序 打印出各位数字,例如原数为 321,应输出123。6、输入四个整数,要求按大小顺序输出。7、输入两个正整数,求其中最大公约数和最小公倍数。8、输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。9、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第 10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少 桃子。10、用选择法对10个整数排序。10个整数用scanf函数输入。11、有15个数存放在一个数组中,

3、输入一个数,要求用折半查找法找了该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出,要找的数用 scanf函数输入。12、将两个字符串连接起来,不要用 strcat函数。13、找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可 能没有鞍点。数组元素的值用赋初值方法在程序中指定。14、写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。15、用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。16、用递归法将一个整数轮换成字符串。例如,输入 483,应输出字符串“ 483”。n的位数

4、 不确定,可以是任意的整数。17、求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一个函数根据求出的最大公约数求最小公倍数。(1)用全局变量的方法。将两个整数的最大公约数、最小公倍数都设为全局变量。(2)不用全局变量,两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。18、写一个函数,输入一个十六进制数,输出相应的十进制数。19、定义一个带参数的宏, 使两个参数的值互换。在主函数中输入两个数作为使用宏的实参, 输出已交换后的两个值。20、设计输出实数的格式,包括

5、: (1) 一行输出一个实数;(2) 一行内输出两上实数;(3)一行内输出三个实数。实数用“”格式输出。用一个文件包含以上用#3向3命令定义的格式。在自己的文件(自己命名)中用 #include命令交文件包含进 来。在程序中用 scanf函数读入三个实数给 fl、f2、f3。然后用上面定义的三种格式分别输 出(1) fl , f2; (2) fl , f2, f3。21、用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如a变成b,z变成a。其它字符不变)。用#3巾ne命令来控制是否要译成密 码。例如:#define CHANG1则输出密码

6、。若#define CHANG0则不译成密码,按原码输出。 用条件编译方法来处理。22、输入三个整数,按由小到大的顺序输出,然后交程序改为:输入三个字符串,按由小到 大顺序输出。(要求用指针处理)。素:厂1357911j 13 15 19 .23、得一个3X3的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元将数组名作为函数实参。函数调用后在主函数中输出已转置的矩 阵。(要求用指针处理)24、用一个函数实现两个字符串的比较,即自己写一个strcmp函数:strcmp(s1,s2)如果s1=s2,则函数返回值为 0;如果s1ws2,返回它们二者第一个不同字符的ASCII码差值(

7、如“ BOY与“BAD,第二个字母不同,O与A之差为79-65=14 );如果s1s2,则输出正值;如 果s1s2则输出负值。两个字符串s1、s2由main函数输入,strcmp函数的返回值也在 main 函数输出。(要求用指针处理)25、用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写一个函数。N和各整数在主函数中输入。最后在主函数中输出。26、有5个学生,每个学生装的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课 成绩、平均分数)。要求用一个input函数输入5个学生数据;用一个 averag

8、e函数求总平 均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。27、13个人围成一个圈,从第 1个人开始顺序报号1、2、3。凡报到“ 3”者退出圈子,找 出最后留在圈子中的人原来的序号。28、建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中 的结点所包含的年龄等于此年龄,则将此结点删去。29、有5个学生,每个学生有 3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三 门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。30、将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学

9、生数据存入一个新文件stu_sort 中。单项选择题:1 . ( A )是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例程2 . C语言程序从C开始执行。A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数 D)包含文件中的第一个函数3、以下说法中正确的是( C )。A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的 main()函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )A) C程序的工作过程是编辑、编译、连接、运行 B

10、) C语言不区分大小写。C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5 .下列正确的标识符是(C )。A.-a1B.aiC.a2_iD.int t6 .下列C语言用户标识符中合法的是( B )。A)3axB)x C)case D)-e2 E)union7 .下列四组选项中,正确的 C语言标识符是(C )。A) %xB)a+b C)a123D)1238、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。A、print _3ddb8aBcC、str_1Cpp pow while9.C语言中的简单数据类型包括(DA、整型、实型、逻辑型C、整型、字符型、逻

11、辑型B、Iam one_half start$it 3paiD、)B、整型、实型、逻辑型、字符型D、整型、实型、字符型10.在C语言程序中,表达式A)2.5B)25%2的结果是 CC)1D)311.如果int a=3,b=4 ;则条件表达式ab? a:b的值是 AA) 3B) 4C) 0 D) 112 .若 int x=2,y=3,z=4则表达式 xage D) (*p).age33 .设有如下定义:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正确的赋值语句是 CA) p=&a;B) p=data.a; C) p=&data.a; D)

12、*p=data.a;34 .设有以下说明语句:typedef struct stu int a;float b; stutype;则下面叙述中错误的是(D )。A、struct是结构类型的关键字B、struct stu是用户定义的结构类型C、a和b都是结构成员名D、stutype是用户定义的结构体变量名35 . 语句int *p;说明了 C 。A)p是指向一维数组的指针B)p是指向函数的指针,该函数返回一 int型数据C)p是指向int型数据的指针D)p是函数名,该函数返回一指向int型数据的指针36 .下列不正确的定义是( A )。A. int *p=&i,i;B.int *p,i;C. i

13、nt i,*p=&i;D.int i,*p;37 .若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D )A) p=qB) *p=*q C) n=*q D) p=n38 .有语句:int a10,;则 B是对指针变量p的正确定义和初始化。A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;39 .若有说明语句“int a5,*p=a; ,则对数组元素的正确引用是(C )。A.apB.paC.*(p+2)D.p+240 .有如下程序int a10=1,2,3,4,5,6,7,8,9,10,*P=a;则数值为9的表达式是 BA)

14、 *P+9B) *(P+8)C) *P+=9D) P+841 .在C语言中,以 D作为字符串结束标志A)nB) C) 0D)042 .下列数据中属于“字符串常量”的是( A )。A. aB.ABCC. abc0 D. a43 .已知char x尸hello, y=h,e,a,b,e;,则关于两个数组长度的正确描述是B .A)相同 B)x大于y C)x小于y D)以上答案都不对44 .下面各函数中能实现打开文件功能的是 AA) fopenB) fgetcC) fputc D) fclose45 .下列语句中,把变量 fp说明为一个文件型指针的是(A )。A) FILE *fp;B) FILE f

15、p;C) file *fp;D) file fp;46 .以读写方式打开一个已有的文本文件file1,并且FILE *fp ,下面fopen函数正确的调用方式是(B )。A.fp=fopen( file1 , r)B.fp=fopen( file1 , r+)C.fp=fopen( file1 , rb)D.fp=fopen( file1 , w)读程序基本输入输出及流程控制1.#include main() int a=1,b=3,c=5;if (c=a+b)printf(yesn);elseprintf(non);运行结果为: no2.#include main() int a=12, b

16、= -34, c=56, min=0;min=a;if(minb)min=b;if(minc)min=c;printf(min=%d, min);运行结果为: min=-343.#include main() int x=2,y= -1,z=5;if(xy)if(y0)z=0;elsez=z+1;printf( “ %nd” ,z);运行结果为: 5 4.#include main() float a,b,c,t;a=3;b=7;c=1;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,

17、a,b,c);运行结果为: 1.00,2.00,5.#include main ( ) float c=3.0 , d=4.0;if ( cd ) c=5.0;elseif ( c=d ) c=6.0;else c=7.0;printf (“ %n.1” f ,c ) ;运行结果为:6.#include main() int m;scanf(%d, &m);if (m = 0) if (m%2 = 0) printf(%d is a positive evenn, m);else printf(%d is a positive oddn, m);else if (m % 2 = 0) prin

18、tf(%d is a negative evenn, m); else printf(%d is a negative oddn, m); 若键入 9 ,则运行结果为 :-9 is a negative odd7.#include main() int num=0 ;while(num=2) num+ ; printf(%dn,num) ; 运行结果为:1238.#include main( ) int sum=10,n=1;while(n3) sum=sum-n; n+; printf(“ %d,%d” ,n,sum);运行结果为: 3,79.#include main() int num,

19、c;scanf(%d,&num);do c=num%10; printf(%d,c); while(num/=10)0); printf(n);从键盘输入 23 ,则运行结果为: 3210#include main() int s=0,a=5,n;scanf(%d,&n);do s+=1;a=a-2; while(a!=n);printf(%d , %dn,s,a);若输入的值1 ,运行结果为: 2,111.#include stdio.hmain()char c;c=getchar();while(c!=?) putchar(c); c=getchar(); 如果从键盘输入 abcde ?

20、fgh (回车)运行结果为: abcde12.#include main() char c;while(c=getchar()!= $) if( A =c&c=Z)putchar(c);else if( a =c&c= z ) putchar(c-32); 当输入为 ab*AB%cd#CD$ 时,运行结果为: ABABCDCD13.#include main() int x, y =0;for(x=1;x=10) break;y=y+x;printf( “ %d %d” ,y,x);运行结果为: 10514.#includemain( ) char ch;ch=getchar( );switc

21、h(ch) case A: printf(“ %c”, A);case B: printf(“ %c”, B); break;default: printf(“n%”s, ” other ” ); 当从键盘输入字母A 时,运行结果为: AB15.#include main( ) int a=1,b=0 ;scanf(“ %d” ,&a);switch(a) case 1: b=1 ; break ; case 2: b=2 ; break ; default : b=10 ; printf(%d , b) ;若键盘输入5 ,运行结果为:1016.#include main()_ char gr

22、ade= C;switch(grade) case A: printf(“ 9n0” );case B: printf(“ 8n”0 );case C: printf(“ 7n0” );case D: printf(“ 6n0” ); break;case E: printf(“n”6);0default : printf(“ errno” r! );运行结果为:70-8060-7017.#include main() int y=9;for(;y0;y- -)if(y%3=0) printf(%d”,- -y);continue;运行结果为:85218.#include main() int

23、 i,sum=0; i=1;do sum=sum+i; i+; while(i=10);printf(“ %d” ,sum);运行结果为: 5519.#include #define N 4main() int i;int x1=1,x2=2;printf(n);for(i=1;i=N;i+) printf(%4d%4d,x1,x2);if(i%2=0)printf(n);x1=x1+x2;x2=x2+x1;运行结果为:1235813 213420#include main( ) int x, y;for(x=30, y=0; x=10, y10; x-, y+) x/=2, y+=2;pri

24、ntf(“ x=%d,y=%dn” ,x,y);运行结果为:x=0,y=1221.#include #define N 4 main( ) int i,j;for(i=1;i=N;i+) for(j=1;ji;j+) printf( );printf(*);printf(n);运行结果为:*数组1.#include main() int i, a10;for(i=9;i=0;i-)ai=10-i;printf( “ %d%d%d ” ,a2,a5,a8);运行结果为:8522.#include main() int i,a6;for (i=0; i=0 ; i-)printf(%3d,ai);

25、运行结果为:5 4 3 2 1 03.#include main( ) int i,k,a10,p3;k=5 ;for(i=0 ; i10 ; i+) ai=i ;for(i=0 ; i3 ; i+)pi=ai*(i+1) ;for(i=0 ; i3 ; i+)k+=pi*2 ;printf(%dn,k) ;运行结果为: 214.#include int m33=1,2,3;int n33=1,2 ,3;main( ) printf(“%d, ”, m10+n00);printf(“%dn ”,m01+n10);运行结果为:3,05.#include main() int i;int x33=

26、1,2,3,4,5,6,7,8,9;for (i=1; i3; i+)printf(%d ,xi3-i);运行结果为:6. 86.#include main( ) int n33, i, j ;for(i=0 ; i3 ; i+ )for(j=0 ; j3 ; j+ )nij=i+j ;printf(“%d”, nij) ;printf(“n ” );运行结果为:0 1 21 232 347#include main()char diamond5=_,_, *, _ ,*,_,*, *,_, _ ,_ ,*, _,*,_,* , _,_,*;int i,j;for(i=0;i5;i+)for(

27、j=0;j5;j+)printf(“%c ”,diamondij);printf(“n ”); 注: “ _”代表一个空格。运行结果为:* * * *8.#include main( ) int i, f10;f0=f1=1;for(i=2;i10;i+)fi=fi-2+fi-1;for(i=0;i10;i+) if(i%4=0)printf(“n ”);printf(“%d” ,fi);运行结果为:11235813 2134 559.#include “ stdio.hfunc(int b ) int j;for(j=0;j4;j+) bj=j;main( ) int a4, i;func(

28、a);for(i=0; i4; i+)printf( “%2d” ,ai);运行结果为:0 1 2 310.#include m ain ()float fun(float x);float ave,a3=4.5, 2 , 4 ;ave=fun ( a ) ;print f( “ ave=%f” ,ave);float fun ( float x )int j;float aver=1 ;for (j=0;j3;j+) aver=xj*aver;return ( aver ) ;运行结果为:11.#include main()int a23=1,2,3,4,5,6;int b32,i,j;fo

29、r(i=0;i=1;i+)for(j=0;j=2;j+) bji=aij;for(i=0;i=2;i+)for(j=0;j=1;j+)printf(%5d,bij);运行结果为:14253612.#include f(int b,int n)int i,r;r=1;for (i=0;i=n;i+) r=r*bi;return (r);main()int x,a=1,2,3,4,5,6,7,8,9;x=f(a,3);printf(“ %nd” ,x);运行结果为:2413.#includestdio.hmain()int j,k;static int x44,y44;for(j=0;j4;j+)

30、for(k=j;k4;k+) xjk=j+k;for(j=0;j4;j+)for(k=j;k4;k+) ykj=xjk;for(j=0;j4;j+)for(k=0;k4;k+) printf(%d,yjk);运行结果为:0,0,0,0,1,2,0,0,2,3,4,0,3,4,5,6函数1.#include int Sub(int a, int b)return (a- b);main()int x, y, result = 0;scanf(%d,%d, &x,&y );result = Sub(x,y ) ;printf(result = %dn,result);当从键盘输入 :6,3 运行结

31、果为:result =32.#include int min( int x, int y ) int m ;if ( x y ) m = x ;elsem = y ;return(m) ;main() int a=3,b=5,abmin ;abmin = min(a,b) ;printf( “ minis%d” , abmin) ;运行结果为:min is 53.#includefunc(int x) x=10;printf( “%d, ”,x);main( ) int x=20;func(x);printf( “%d ” , x);运行结果为:10, 204.#include int m=4

32、;int func(int x,int y) int m=1;return(x*y-m);main()int a=2,b=3;printf(%dn,m);printf(%dn,func(a,b)/m);运行结果为:415.#include int fun(int a, int b) if(ab) return(a);else return(b);main() int x=15, y=8, r;r= fun(x,y);printf(r=%dn, r);运行结果为: r=156.#include int fac(int n) int f=1,i;for(i=1;i=n;i+)f=f * i;ret

33、urn(f);main() int j,s;scanf( “ %d” ,&j);s=fac(j);printf(%d!=%dn,j,s);3!=6如果从键盘输入 3 , 运行结果为:7.#include unsigned fun6(unsigned num) unsigned k=1;do k*=num%10;num/=10;while(num);return k;main() unsigned n=26;printf(“%dn ” ,fun6(n);运行结果为: 128.#include int max(int x, int y);main() int a,b,ca=7;b=8;c=max(

34、a,b);printf(Max is %d,c);max(int x, int y) int z;z=xy? x : y;return(z) ;运行结果为:Max is 8指针1.# include main () int x = 10, 20, 30, 40, 50 ; int *p ;p=x;%d” , *(p+2 ) );printf ( 运行结果为:302.#include main( ) char s= ” abcdefg ”;char *p;p=s;printf( “ ch=%cn” ,*(p+5);运行结果为:ch=f3.#includemain ( ) int a=1, 2,

35、3, 4, 5;int x, y, *p ;p=a ;x=*(p+2) ;printf(%d : %d n, *p, x) ;运行结果为 :1:34.#include main() int arr =30,25,20,15,10,5, *p=arr; p+;printf(“ %nd” ,*(p+3);运行结果为: 105.#include main( ) int a =1, 2, 3, 4, 5, 6;int x, y, *p;p = &a0;x = *(p+2);y = *(p+4);printf( “*p=%d, x=%d, y=%dn”, *p, x, y);运行结果为:*p=1, x=

36、3, y=56.#includemain( ) static char a =” Program ”, *ptr;for(ptr=a, ptra+7; ptr+=2)putchar(*ptr);运行结果为:Prom7.#include char s= ” ABCD ”;main() char *p;for(p=s;ps+4;p+)printf( “%c %sn ” ,*p,p);运行结果为:A ABCDB BCDC CDD D结构体1.#includestruct st int x;int y; a2=5, 7, 2, 9 ;main()printf(%dn,a0.y*a 1.x);运行结果是

37、:142.#includemain( )struct stuint num;char a5;float score;m=1234, ” wang” ,89.5;printf( “ %d,%s,%f” ,m.num,m.a,m.score);运行结果是:3.#includestruct cmplx int x;int y; cnum2=1, 3, 2, 7;main( )printf(“%dn ” , cnum0.y * cnum1.x );运行结果是: 64.#include struct abc int a, b, c; ;main() struct abc s2=1,2,3,4,5,6;i

38、nt t;t=s0.a+s1.b;printf(%d n,t);运行结果是: 6程序填空1 输入一个字符,判断该字符是数字、字母、空格还是其他字符。main( ) char ch; ch=getchar();if( ch=a&ch= A&ch= 0&ch0) i= i+1;else j=j+1; printf( i=%4d,j=%4dn ”,i,j);3 .编程计算1+3+5+101的值#include void main() int i, sum = 0;for (i = 1;i=101;i+)sum = sum + i;printf(sum=%dn, sum); 4 .编程计算1+3+5-

39、+99的值main() int i, sum = 0;i=1;while (i100) sum = sum + i;i+;printf(sum=%dn, sum);5 .从键盘输入一个字符,判断它是否是英文字母。#include void main()char c;printf(input a character:);c=getchar();if(c= A &c=a &c = z ) printf(Yes n);else printf(No);6 .下面程序的功能是在a数组中查找与x值相同的元素所在位置,请填空。#include void main() int a10,i,x;printf(

40、input 10 integers :);for(i=0;i10;i+)scanf( %d”,&ai);printf( input the number you want to find x :);scanf( %d: &x );for(i=0;i10;i+)if( x=ai)break;if( i10)printf( the pos of x is : %dn ”,i);else printf( can not find x ! n);7 .程序读入20个整数,统计非负数个数,并计算非负数之和。#include main() int i, a20, s, count;s=count=0;fo

41、r(i=0; i20 ; i+)scanf( %d ”, &ai);for(i=0; i20; i+) if( ai0 ) continue ;s+=ai ;count+;printf( S=%dt count=%dn ”, s, count );8 .输入一个正整数n (1nwi0),再输入n个整数,用选择法将它们从小到大排序后输出。#include int main(void)int i, index, k, n, temp;/*定义1个数组a,它有10个整型元素*/printf(Enter n:);printf( Enter %d integers: , n);for(i = 0; i n; i+)scanf(%d”, &ai);for(k = 0; k n-1; k+)/* 对 n 个数排序

温馨提示

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

评论

0/150

提交评论