C程序设计试题及题解(3.24修改)

更新时间:2024-04-30 01:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

一.选择题····························································· 1. C语言概述·························································· 2. 数据类型,运算符与表达式··········································· 3. 选择结构程序设计······················································· 4. 循环控制······························································· 5. 数组······································································ 6. 函数··································································· 7. 预处理命令······························································ 8. 指针··································································· 9. 结构体与共用体····················································· 10. 位运算································································· 11. 文件······································································ 二.改错题····································································· 1. 统计字符串中大小写字母的个数·········································· 2. 逆序输出································································· 3. 计算大于10的最小n个能被3整除的正整数之和······························ 4. 输入两个整数及一个运算符进行运算······························· 5. 输出201~300之间的所有素数,统计总个数··································· 6. 统计输入字符串中大写类英文字母的个数····································· 7. 输入M个整数,输出其中所有的偶数······························ 8. 输出三角形······························································ 9. 百元买百鸡····························································· 10、将‘0~8’的数字字符变成比它大1的数字字符将‘9’变为‘0’········ 11、连接字符串······························································ 12、取出ASCII码值为偶数且下标为偶数的字符·································· 13. 求三角形面积····························································· 14. 百马百担问题····························································· 15. 求一堆零件的总数(100至200之间)········································ 16. 交换两个变量的值························································ 17. 计算1至100之间的奇数之和,偶数之和····································· 18. 求满足给定等式的未知数的值··································· 三.填空题···································································· 1. 计算给定的公式········································· 2. 计算圆周率······························································· 3. 从10个数中找出最大值和最小值············································ 4. 计算满足一定条件的一位整数的值···································· 5. 输入若干个整数,统计其中大于0和小于0的个数····························· 6. 歌德巴赫猜想···························································· 7、牛顿迭代法求方程的根···················································· 8、大写变小写,小写变大写················································· 9、计算平均值·····························································

10、输入姓名,输出信息···················································· 11、冒泡排序法····························································· 12、判断三角形是否为直角三角形············································ 13、输入一个整数,输出该数的平方·········································· 14、选择排序法···························································· 15、用所给公式计算三角形面积·············································· 16. 输入一个4×4阶矩阵,并计算第1列元素之和······························· 17. 二分法查找元素······················································· 18. 判断点是否在已知的圆内················································ 19、求函数值······························································ 20. 计算已知公式的值······················································· 21. 求数组中的最大元素····················································· 22. 计算前m个整数的和···················································· 23. 字符串反向存储························································ 24. 将学生信息按其学号的升序排列··········································· 25. 输入一个3行3列的整型数组,求其最大值和最小值························ 26、计算给定的公式的值··········································· 27、输出Fibonacci数列的前15项··········································· 四.编程题································································· 1.输入数字,求已知公式的值··············································· 2. 统计输入字符串中空格的个数············································· 3. 函数求值······························································· 4. 求已知函数的值························································· 5. 将三个字符串从小到大排序后输出································· 6. 求已知函数f( )的值···················································· 7. 四则运算······························································ 8. 判断一个矩阵是否为对称矩阵············································ 9. 打印出Fibonacci,数列的前20个数······································· 10. 计算fun( )函数值······················································ 11. 按要求实现函数功能··················································· 12、函数fun1( )求值······················································ 13. 输入的一个月工资数额,求应交税款······································ 14. 按要求处理一个4阶矩阵··············································· 15. 求已知f(x)函数的值···················································· 16. 将以指针数组形式存放的n个字符串升序排序····························· 17. 求方程中的较大的根··················································· 18. 判别两个字符串的大小·················································

一、选择题

(1)C语言概述

1、C程序中main函数的位置(B C)

A、必须在最开始 B、必须在系统库函数后面 C、可以在自定义函数后面 D、必须在最后

2、下面关于C语言用户标识符的描述,正确的是(D)

A、不能区分大小写 B、用户标识符不能描述常量 C、类型名也是用户标识 D、用户标识符可以作为变量名 3.关于C语言的叙述中,不正确的是(D)

A. C程序可由一个或多个函数组成 B. C程序必须包含一个main()函数 C. C程序的基本组成单位是函数

D. 注释说明只能位于一条语句的后面

4.若有说明语句:char C=‘\\95’;则变量C包含(D)个字符

A.1 B.2 C.3 D.语法错误 5.结构化程序设计不包括(A)

A.最优化 B自顶而下,逐步细化 C 模拟化设计 D结构化编码 6.结构化程序设计的三种基本语句是(C)

A.函数结构, 分支结构 判断结构 B.函数结构 嵌套结构 平行结构 C.顺序结构 分支结构 循环结构 D.分支结构 循环结构 嵌套结构

7.关于C语言数据类型的叙述,正确的是(C)

A.枚举类型不是基本类型 B.数组不是构造类型 C.变量必须先定义后使用 D.不允许使用空类型 8.关于C语言的源程序的叙述中,错误的是(C)

A.C语言的源程序由函数构成 B.main函数可以书写在自定义函数之后 C.必须包含有输入语句 D.一行可以书写多个语句 9.下面叙述中,(A)不是结构化程序设计中的三种基本结构之一 A.数据结构 .B.选择结构 C.循环结构 D.顺序结构 10.char 型变量存放的是(A)

A.ASCⅡ码值 B.字符本身 . C十进制代码值 . D十六进制代码值 11.已有如下定义和输入语句 int a; char c1,c2;

scanf(“%d,%c,%c”, &a, &c1, &c2);

若要求a、c1、c2的值分别为10、A和B,正确的数据输入是( B ) A.10AB B.10,A,B C.10A B D.10 AB 12.以下叙述不正确的是( D )

A、C程序的执行总是从main函数开始 B、一个C源程序必须包含一个main函数 C、C语言程序的基本组成单位是函数

D、在编译C程序源程序时,可发现注释中的拼写

13.已知如下定义和输入语句: int a, b;

scanf (“%d, %d”,&a, &b);

若要求a、b的值分别为10和20,正确的数据输入是(A)

A、10 20 B、10,20 C、a=10, b=20 D、10;20 14、在C语言源程序中,以下叙述正确的是(C) A、main函数必须位于文件的开头 B、每行只能写一条语句

C、程序中的每一语句可以写成的行 D、每个语句的最后必须有点号

15.对于C语言源程序,以下叙述错误的是( C )

A. 可以有空语句

B. 函数之间是平等的,在一个函数内部不能定义其它函数 C. 程序调试时如果没有提示错误,就能得到正确结果 D. 注释可以出现在在语句的前面 16.下面叙述中,(A)不是结构化程序设计三种基本结构的共同特点

A.先判断后执行 B.单入口,单出口, C.程序中没有执行不到的语句 D.无死循环

17.若有定义:int x=1234,y=123,z=12;则语句printf(“M+=+-”,x,y,z);运行后的输出结果为(D)

A.123412312 B. 12341234123412341231231231212 C.1234+1234+1234 D.1234+123+12

(2)数据类型,运算符和表达式

1、若定义:int x=2; y=3; float i; 则以下符合C语言语法的表达式是(B)

A、x=x* 3=2 B、x=(y= = 1) C、i=float(x) D、i%(-3)

2、若有定义:int a=5, b=2, c=1;则表达式a-b

A、0 B、1 C、2 D、-1

3、若有定义:float x=3.5; int z=8; 则表达式x+z%3/4的值是(B)

A、3.75 B、3.5 C、3 D、4

4.若有定义:int a=1,b=2,c=3;语句++a||++b&&++a运行后b 的值为(c)

A.1 B.0 C.2 D.3

5.设单精度型变量+,g的值均为2.0,使+为4.0的表达式为(A)

A.1 B.0 C.2 D.3

9.对于整型变量x,下述计语句(B)与赋值句:x=x%2= =0?1:0;不等价

A .if(x%2!=0)x=0;else x=1; B if(x%2)x=1;else x=0;

C.if(x%2= =0)x=1;else x=0; D .if(x%2==1) x=0;else x=1; 12.下面语句正确的是( B C )

A int*P;*P=20; B char*s=“abcdef”;printf(“%s\\n”,s); C char str[]=“abcdf”;printf(“%s”,str); D char str[]={?a?,?b?,?c?};printf(“%s”,str); 13.若有定义:inta=2;则正确的赋值表达式是(A)

A.a- =(a*3) B.double(-a) C.a* D.a*4=3 14.若有定义:int m=5. n=3则表达式(m+1,n+1,(- -m)+(n--))的值是(B)

A.6 B.7 C.8 D.9

15.对于基类型相同的两个指针变量之间,不能进行的运算是(C)

A.< B.= C.﹢ D.﹣

16.若有定义:int a;则语句a=(3*4)+2%3;运行后a的值为(B)

A. 12 B.14 C.11 D.17 17.下面叙述中,错误的是(A)

A.其算术运算对象不包含函数 B.%(模拟运算符)的运算对象只能为整型量 C.算术运算的结合方向是“自左向右” D.自加和自减运算符的结合方向是“自右向左” 18.已知int a=‘R’;则正确的表达式是(A)

A.a B.a=int(3e2) C .2*a=a++ D.a=a+a=a+3 19.已知double a=5.2;则正确的赋值表达式是(A)

A.a+=a-=(a=4)*(a=3) B a=a*3=2 C a%3 D a=double(-3) 20.以下的计语句中,x的值一定被重新赋值的是(B)

A.if(x==y) x+=y; B if(x>y&&x!=y);x+=y; C.if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y); D.if(x<y) {x++;y++} 21.设有double型变量a,b,c,e均有值,对代数式(3ae)/(bc),不正确的语言表达式是(C)

A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3 22.以下运算符中优先级最高的是(D)

A.> B.|| C.&& D.+

23.若有自定义:int a,b;double x.,则以下不符合C语言的表达是(A) A.x%(-3) B.a+=-2 C.a=b=2 D.x=a+b 24.若有定义:int a[3] [3];则表达式&a[2][1]-a的值为(B) A.7 B.8 C.6 D.9 25.以下(D)是正确的变量名

A.a.bee B.-P11 C.int D.P_11

26.若有定义:int a=1,b=2 ,c=3,d=4,x=5,y=6 则表达式(x=a>b)&&(y=c>b)的值为(A)

A.0 B.1 C. 5 D.6 27.以下(D)是正确变量名

A.5f B.if C.f.5 D._f5

28.若有定义:int x=3,y=4,z=5 则值为0的表达式是(D)

A.‘x’&&‘y’ B. x<=y C. x||y=z&&y-z D. !((x<y)&&!z||1) 29.若有定义:int x,a;则语句x=(a=3,a+1);运行后x、a的值依次为( C ) A.3,3 B.4,4 C.4,3 D.3,4

30.若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是( B ) A.7 B.8 C.9 D.10

31.若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是(A)

A.3.5 B.3.0 C.2.5 D.2.0 32. 以下(B)是错误的整型常量

A、-0xcdf B、018 C、0xe D、011 33.语句a=(3/4)+3%2; 运行后,a的值为(B) A、0 B、1 C、2 D、3

34.设整形变量a为5, 使b不为2的表达式是(C)

A、b=(++a)/3 B、b=6-(--a) C、b=a%2 D、b=a/2 35、已知char a=’R’;则正确的赋值表达式是(D);

A、a=(a++)% 4 B、a+2=3 C、c a+=256-- D、a=‘\\078’ 36.下面叙述正确的是(B)

A、2/3与2.0/3.0等价 B、(int)2.0/3与2.3等价 C、++5与6等价 D、‘A’与“A”等价 37、getchar( )函数的功能是从终端输入(D)

A、一个整型量值 B、一个实型变量值 C、多个字符 D、一个字符 38、若有定义:int i=7, j=8; 则表达式 i >j||i

39、若有定义:int i ,j;则表达式(i=2, j=5, i++, i+j++)的值是(B) A、7 B、8 C、9 D、10

40.若希望当a的值为奇数时,表达式的值为”真”,a的值为偶数时,表达式的值为”假”.则不能满足要求的表达式是( C )

A.a%2==1 B.!(a%2==0) C.!(a%2) D.a%2 41.下面叙述正确的是( A )

A.强制类型转换运算的优先级高于算术运算 B.若a和b是整型变量,(a+b)++是合法的 C.'A'*'B'是合法的 D."A"+"B"是合法的

42.以下程序段运行后变量a的值为(D)

int x=6,y=5; int a;

a=(--x=y++)?x:y+1;

A.0 B.1 C.6 D.5 43.下面程序段的运行结果是( D ) int a =5 b=6;printf (“%d”,a/b);

A. 5 B. 6 C. 7 D. 0 44.以下程序的运行结果是( D ) void main() {

int a=65; char c=’A’;

printf(“%x,%d”,a,c); }

A.65,a B.41, a C.65,65 D.41,65

(3)选择结构程序设计

1.C语言对于计嵌套语句的规定:else总是与(B)配对

A.第一个if B.之前最近且尚未配对 C.缩进位置相同的if D.之前最近的if 2.以下的语句中,无内嵌的if语句是(D)

A.if(x==y)x+=y; B.if(x>y&&x!=y)x+=y;

C.if(x!=y)scanf(“%d”,&x);else scanf (“%d”,&y); D.if(x<y) {x++;y++} 3、以下程序运行结果是(D) void main( ) { int n=5; if ( n++7=6 )

printf( “% d\\n” , n); else

printf ( “%d\\n” , ++n ); }

A、4 B、5 C、6 D、7 4.以下程序段运行后x的值为( B )

int a[]={1,2,3},b[]={4,2,5}; int *p,*q; int i,x; p=a;q=b;

for(i=0;i<3;i++)

if(*(p+i)==*(q+i)) x=*(p+i)*2;

A.2 B.4 C.6 D.不确定

5.若有定义:int a=1,b=2,c=3;则执行以下程序后a,b,c的值分别为( D ) if(a<b) {c=a,a=b,b=c;}

A.a=1 b=2, c=3 B.a=2 b=3 c=1 C.a=2 b=3 c=3 D.a=1 b=1,c=1 6.以下程序的运行结果是(C) void main ( ) { int n=‘e’; switch (n- -)

{default: printf (“error”); case‘a’:

case‘b’: printf(“good”); break; case‘c’: printf(“pass”); case‘d’: printf(“warn”); }

A、error B、good C、error good D、warn

(4)循环控制

1.对于整型变量x,与while(!x)等价的是(B)

A.while(x!=0) B.while(x==0) C.while(x!=1) D.while(~x) 2.以下程序运行后,循环体运行的次数为( B ) int i=10,x; for( ;i<10;i++) x=x+i;

A.10 B.0 C.1 D.无限 3.设有整型变量x,下述语句( B )不会出现死循环

A、for( ; ; x+=1); B、for(; (x=gether( ))!=‘1n’; ); C、while (1) {x++;} D、for(x=10; ; x--);

4、在C语言中while循环和do—while循环的主要区别是( B )

A、do—while 循环体内可以使用break语句, while循环体内不能使用break语句 B、do—while的循环至少无条件执行一次,while的循环体不是

C、do—while 循环体内可以使用continue语句,while循环体内不能使用continue语句

D、while的循环体至少无条件执行一次,do—while的循环体不是 5、对于整型变量x和y,语句for (x=0, y=0 ; (y!=123) &&(x<4); x++) y++;中的“y++;”被执行( A )

A、4次 B、0次 C、123次 D、3次 6.以下程序段运行后变量n的值为( D )

int i=1,n=1; for( ; i<3;i++) {

continue; n=n+i; }

A.4 B.3 C.2 D.1 7.设有如下程序段:

int a[3][3]={1,0,2,1,0,2,1,0,1},i,j,s=0; for(i=0;i<3;i++) for(j=0;j

则执行该程序段后,s的值是( C )

A.0 B.1 C.2 D.3 8. 以下程序运行结果(C) void main() {

int sum=0,item=0; while(item<5)

{

item++; sum+=item;

if(sum>=6) break; }

printf(“%d\\n”,sum) ; }

A.10 B.15 C.6 D.7 9.下面程序运行结果是( A ) int i=0,a[] ={1,2,3,4,5}; do{

a[i]+=10;

}while(a[++i]>2); for(i=0;i<5;i++)

printf(“%d”,a[i]);

A.11 2 3 4 5 B.1 2 3 4 5 C.11 12 13 14 15 D.11 12 3 4 5 10.若有定义:int i=0,x=0; int a[3][3]={1,2,3,4,5,6,7,8,9}则以下程序段运行后x的值为( C )

for( ;i<3;i++) x+=a[i][2-i];

A.0 B.12 C.15 D.18 11.以下程序的运行结果是( B ) void main() {

int sum=0,item=0; while (item<5) {

item++; sum+=item; if(sum==5) break; }

printf(“%d\\n”,sum); }

A. 10 B.15 C.5 D.6 12.下面程序段的运行结果是( D ) int i=O, a[]={3,4,5,4,3}; do{

a[i]++;

}while(a[++i]<5); for(i=0;i<5;i++)

printf(“%d”,a[i]) ;

A. 45654 B.34543 C.45554 D.45543 13.下面程序段的运行结果是( C ) int i=0,a[]={7,5,7,3,8,3}; do{

a[i]+=2;

}while(a[++i]>5); for(i=0;i<6;i++)

printf(“%d ”,a[i]);

A. 9 7 9 5 10 5 B.9 5 9 3 10 3 C. 9 5 7 3 8 3 D.7 5 7 3 8 3

(5)数组

1、有如下定义 int a[ ][3]={1,2,3,4,5,6,7,8,};则数组a的行数( B )

A、 2 B、 3 C、 4 D、无法确定 2.以下数组定义中,正确的是( B )

A.int a[2] [3]={1,2,3,4,5,6,7};

B.int a[] []={{1,2,3},{4,5,6},{7,8,9}}; C.int a[2] []={1,2,3,4,5,6}; D.int a[] [4]={6};

3.若有定义:int a=6,b=2;char C1=‘a’,C2=‘b’;则表达式a+b%5+C2-C1的值是( C )

A .7 B.8 C.9 D表达式错误 4.若有定义:char str[6]=“abcdm”,*ps,*str2=“abcdef”;正确的是( B )

A.stycpy(str1,str2); B.表达式strcmp(str1,str2)的值>0 C.str1=str2; D.表达式strlen(str1)的值为6 5.以下能对一维数组a进行正确初始化的语句是( D )

A.int a[5]=(0,0,0,0,0,) B.int a[5]=[0] C.int a[5]={1,2,3,4,5,6,7} D.int a[]={0} 6.以下( A )是不正确的字符串常量

A.‘abc’ B.“12′12” C.“O” D“ ”

7.设有如下定义:char str[8]={“Fujian”};则分配给数组str的存储空间是(C)字节 A.6 B.7 C.8 D.9 8.下列数组定义中,正确的是( A )

A.int a[10] B.int n=10 a[n]; C.int N=10;int a[N]; D.int n; scant(“%d”,&n);int a[n]

9.若有定义int a[2][3];则对数组元素的非法引用是( D )

A.a[0][1/2] B.a[1][1] C.a[4-4][0] D.a[0][3] 10.若有int a=2 则a=strcmp(“miss”,“miss”)运行后a的值为(B) A.1 B.0 C.-1. D.2 11.以下程序结束后屏幕输出(B)

char str[]=“ab\\\\cd”;printf(“%d”,strlen(str)); A.4. B.5 C.6 D.7

12.已知int a[10];则对a数组元素引用不正确的是( A ) A.a[10] B.a[3+5] C.a[10-10] D.a[5] 13.设有以下变量定义:

char str1[]=”string”,str2[8],*str3,*str4=”string”; 则( A )是正确的

A.strcpy(str1,”china”); B.str2=”china”;

C.strcpy(*str3,”china”); D.strcpy(str4[0],”china”); 14、以下能对一维数组a进行正确初始化的语句是( D )

A、int a[5]=(0, 0, 0, 0, 0); B、int a [s]=[0]; C、int a[5]={1, 2, 3, 4, 5, 6, 7 }; D、int a [ ] = {0};

15. 若有定义int a [ ] [ 3 ]={1,2,3,4,5,6,7,8,9};则表达式sizeof(a)/sizeof(a[0])

的值为( A )

A、3 B、4 C、5 D、9 16、下列数组定义中,正确的是( A )

A. int a[5]={0}; B、int a[ ]={0 1 2}; C、int a[5]=0 D、int a [ ] 17、以下数组定义中,正确的是( B ) A、int a[2][3]={1,2,3,4,5,6,7};

B、int a[ ][ ]={{1,2,3},{4,5,6}, {7,8,9}}; C、int a[2][ ]={1,2,3,4,5,6};

4、以下程序段运行后*(++p)的值为(C) char a[6]=“work”; char *p; p=a; A、‘w’ B、存放‘w’的地址 C、‘O’ D、存放的‘O’地址 5.在16位编译系统上,若有定义int a[]={10,20,30},*p=&a;当执行p++;后下列叙述错误的是( A )

A.p向高地址移了一个字节 B.p与a+1等价

C.语句printf(“%d”,*p);输出20; D.p指向数组元素a[1] 6.以下程序运行后*(P+3)的值为( A ) char a[]=“good”; char *P;P=a;

A.‘d’ B.‘\\0’ C.存放‘d’的地址 . D.7.以下程序运行后x的值为(D) int a[9]={1,2,3,4,5,6,7,8,9}; int *p,*q; int i,x; p=&a[0]; q=&a[8];

for (i=O;i<3;i++)

if(*(p+i)==*(q-i) )

x=*(p+i)*2;

A. 2 B. 4 C. 6 D.不确定 8.以下程序运行段运行后x的值为( D ) int a[]={1,2,3,4,5,6,7,8}; int i,x *p; x=1;

p=&a[2];

for(i=0,i<3,i++)

x*=(p+i);

A. 不确定 B. 24 C. 120 D. 60 9、下面程序的输出结果是(A) #include void main ( ) {

int i;

char *s= “ abc ”; for ( i=0 ; i<3; i++)

printf ( “% s\\n ” , s+i ); }

a b c a b c a A B C D b c c c a b c b c a b c b c a b c 10.执行以下程序段的输出结果是( B ) int a=10,*p=&a;

‘0’

printf(“%d”,++*p);

A.10 B.11 C.变量a的地址 D.变量a的地址加1

(9)结构体与共用体 1.设有以下定义语句: struct student{

int num;

char name[10]; float score;

}wang,zhang;的变量wang所占的内存字节是( B ) A.14 B.16. C.18 D.9 2.设有以下定义语句: struct student{

int num ;

char name[10];

float score;}wang,zhang; 则不正确的叙述是( C )

A.struct 是结构体类型的关键字 B.zhang是结构体变量名

C.wang是结构体类型名 D.num,name,score都是结构体类型student的成员名 3.若struct teacher{

int num;

char name[10]; char sex; int age;

float score;}teacher1;

则变量teacher1所占用的内存字节是( C ) A.5 B.14 C.19. D.20 4.、假定已有如下落不明变量说明和枚举定义:

char ch; int j,k;

enum day{sum,mon,tue,wed,thu,fri,sat}; int a[sat];

判定下列语句是否符合语法规则,结果是( C )

char a; /*语句1*/ j+k=j; /*语句2*/ if(a[mon]>0) j++; /*语句3*/

A.语句2错误,其它正确 B.语句1正确,其它错误 C.语句3正确,其它错误 D.语句错误,其它正确

5、以下C语言共用体类型数据的描述中,不正确的是( D )

A、共用体变量占的内存大小等于所需内在最大的成员所占的内存 B、共用体类型可以出现在结构体类型定义中

C、在定义共用体变量的同时允许对另一个成员的值进行初始化 D、同一共用体中各成员的首地址不相同 6、若有以下类型说明,叙述正确的是( A )

typedef sturct{

int num; char *name; int score; } STU, *PSTU

A、STU 是变量名 B、PSTU是变量名 C、PSTU是指向结构体类型STU的指针类型名 D、类型说明语句有错误 7、设有如下定义语句: union u-type{

int i; double x; float f; };

struct str-type{ char str[100]; union u_type u[2]; };

则语句“printf(“%d”, sizeof(struct str-type) );”的输出结果是( B ) A、100 B、116 C、120 D、200 8.下列对结构体类型变量定义不正确的是( C )

A.

struct teacher{

int num; int age; }teacher1;

B.

struct{ int num; int age;

}teacher1,teacher2; C.

struct{

int num; int age; }teacher, D.

struct teacher{

int num; int age; }

9.若有定义 struct node{

int date;

struct node *next; } 函数:

void fun(struct node *head) {

struct node *p=head; while(p) {

struct node *q=p->next; free(p);

p=q; } }

则该函数的功能是( A )

A. 删除整个单向链表 B. 删除单向链表中的一个结点 C.显示单向链表中的所有数据 D. 创建单向链表 10.对枚举类型进行定义,不正确的是( A ) A. enum b{1,2,3}; B. enum a{A,B,C}; C. enum c{3,E,F};

D. enum d{x=0,y=5,z=9}; 11.下面程序的输出结果为(B) #include void main() {

enum Weekday {sum=7 ,mon=1 ,tue thu ,fri,sat}; enum Weekday day=sat; print(“%d\\n”,day); }

A.7 B.6 C.5 D.4 12.以下程序的运行结果(D) #include union utype{ int i; float f }U[2]; void main() {

printf(“sizeof(u):%d\\n”,sizeof(u)) ; }

A. 2 B. 4 C.6 D. 8 13.若有以定义

struct link{

int data;

struct link *next; }*head,*p;

并已建立如下图示所示的链表结构

head ?data next?data next???data null

则能保留链表其它结点,而删除P所指向结点的程序段是( A ) A.head->next=p->next;free(p);

B.head->next=p; p->next=head->next;free(p); C.free(p);head->next=p;p->next=head->next; D.free(p);head->next=p->next; 14.若有定义

struct node{

int data;

struct node *next; };

及函数: void fun(struct node *head) {

struct node *p=head; while(p) {

printf(“%d”,p->data); p=p->next; break; } }

则函数 fun( )的功能是( C )

A. 删除单向链表 B. 显示单向链表中的所有数据 C. 显示单向链表中的第一个数据 D. 创建单向链表

15..若有如下定义,函数 fun的功能是( B ),其中head指向链表着结点整个链表结构如下图:

head ? data ? data ?? data null

struct node{ int data;

struct node *next; };

int fun(struct node *head) {

int n=0;

struct node *t=head; while(t!=NULL) {

scanf(\

/**/ switch ch /**/ /* switch (ch)*/ { case '+': result=m+n; break; case '-': result=m-n; break; case '*': result=m*n; break; case '%': result=m%n; break; case '/': result=m/n; break;

default: { printf(\ }

if (!flag) printf(\ getch(); }

5. 输出201~300之间的所有素数,统计总个数

程序cmody032.C的功能是:输出201~300之间的所有素数,统计总个数。 答案:

#include #include void main() { int num; printf(\ num=fun();

printf(\ getch(); }

int fun()

{ int m,i,k,n=0;

for(m=201; m<=300;m+=2) { k=sqrt(m+1); for(i=2;i<=k;i++)

/**/ if(m/i==0) /**/ /* if(m%i==0)*/ break;

/**/ if(i==k) /**/ /* if(i>k)*/ { printf(\ n++;;

if(n==0) printf(\ } }

return n; }

6. 统计输入字符串中大写类英文字母的个数

程序cmody051.c,其功能是统计输入字符串中大写类英文字母的个数。

如输入:abcDEFGH123,输出:5 答案:

#include #include main() {

/**/ char str1 /**/; /* char str1[255]*/ int i,len, sum=0;

printf(\ scanf(\ len = strlen(str1); for(i=0; i

if( str1[i] >= 'A' && str1[i] <= 'Z')

/**/ sum--; /**/ /* sum++;*/ }

printf(\ getch(); }

7. 从键盘依次输入M个整数,输出其中所有的偶数

程序cmody052.c,其功能是实现从键盘依次输入M个整数,输出其中所有的偶数。

如输入:23 62 38 45 26 输出:62 38 26 答案:

#include #include

/**/ #include M 5 /**/ /*#define M 5*/ main() {

int a[M],i;

printf(\ for(i=0; i

/**/ if( a[i]/2 ==0) /**/ /* if( a[i]%2 ==0)*/ printf(\ \ printf(\ getch(); }

8. 输出三角形

程序cmody 021.c输出如下所示图形

*************************答案:

#include void main() {

/**/ int i;j; /**/ /* int i,j;*/ for (i=1;i<=5;i++) {

for (j=1;j<=10-2*i;j++)

printf(\

/**/ for (j=1;j<=5;j++) /**/ /* for (j=1;j<=2*i-1;j++)*/ printf(\ printf(\ } }

9. 百元买百鸡

程序cmody 022.c的功能是求解百元买百鸡问题:

设一只公鸡2元,一只母鸡1元,一只小鸡0.5元。问一百元买一百只鸡、公鸡、母鸡、小鸡数可分别为多少?有多少种分配方案? 答案:

#include #include

/**/int fun();/**/ /* int fun()*/ { int hen,cock,chicken,n=0;

for(cock=0;cock<=50;cock+=1) for(hen=0;hen<=100;hen=hen+1) { chicken=2*(100-hen-2*cock);

/**/ if(cock+hen+chicken=100) /**/ /* if(cock+hen+chicken==100)*/ { n++;

printf(\ if(n==20) getch(); } } return n; }

void main() { int num; num=fun();

printf(\ getch(); }

10、输入字符串‘0~8’的数字字符变成比它大1的数字字符将‘9’变为‘0’

程序cmody061.c功能输入字符串‘0~8’的数字字符变成比它大1的数字字符将‘9’变为‘0’。

如输入:a b 1 2 c d 5 6 E F 8 9 G H 4 a b 2 3 c d 6 7 E F 9 0 G H 5 答案:

#include #include main() {

char str1[128], str2[128]; int i,len; gets(str1);

len = strlen(str1);

/**/ for(i=0; i>len; i++) /**/ /* for(i=0; i

if( str1[i] >= '0' && str1[i] <= '8') str2[i] = str1[i] + 1; else if(str1[i] == '9') str2[i] = '0'; else

str2[i] = str1[i]; }

/**/ str2[i] = '\\n'; /**/ /* str2[i] = '\\0';*/ puts(str2); getch(); }

11、连接字符串

程序cmody062.c功能将程序中两个字符串“ABC”、“xyz”连接在一起并输出ABCxyz 答案:

#include #include void main() {

char s1[12]=\ char * ps1=s1,*ps2;

/**/ ps2 = NULL; /**/ /* ps2 = s2;*/

/**/ while(*ps1 == NULL) /**/ /* while(*ps1 != '\\0')*/ ps1++;

while(*ps2) *(ps1++) = *(ps2++);

printf(\ getch(); }

12、取出ASCII码值为偶数且下标为偶数的字符

程序cmody011.c的功能是:从字符串数组str1中取出ASCII码值为偶数且下标为偶数的字符依次存放到字符串中。

eg:若str1所指的字符串为:4AZ18C?Ge9a0z! 则t所指的字符串为:4ZBZ 答案:

#include #include #include #include void main()

{ char str1[100], t[200]; int i, j;

/**/ i = 0; /**/ /* j = 0;*/ clrscr();

strcpy(str1, \ for (i = 0; i

/**/ if ((str1[i] %2== 0) && (i%2!=0)) /**/ /* if ((str1[i] %2== 0) && (i%2==0))*/ {

t[j] = str1[i]; j++; } }

t[j] = '\\0';

printf(\ printf(\ Result string: %s\\n\}

13. 求三角形面积

程序Cmody071.c,其功能是从键盘输入三角形的三边长,求其面积,若三个边长不能构成三角形,则提示错误

如输入:6 9 11 输出:26.98 答案:

#include #include void main() {

float a[3],s,area;

int i;

printf(\ for(i=0; i<3; i++)

scanf(\ /*&a[i]*/

/**/ if( a[0]+a[1]>a[2] || a[1]+a[2]>a[0] || a[0]+a[2]>a[1] ) /**/

/*if( (a[0]+a[1])>a[2]||(a[1]+a[2])>a[0] || (a[0]+a[2])>a[1] )*/

{

s = (a[0]+a[1]+a[2])/2;

area = sqrt(s*(s-a[0])*(s-a[1])*(s-a[2])); printf(\ } else

printf(\ getch(); }

14. 百马百担问题

程序Cmody072.c,其功能是求解百马百担问题.

有100匹马,驮100担货,大马驮3担,中马驮2担,小马驮1担,问大,中,小马数可分别为多少?有多少种解决方案? 答案:

#include #include

/**/ void fun() /**/ /*int fun()*/ {

int large,middle,small,n=0; clrscr();

for( large=0;large<=33;large++ )

for( middle=0;middle<=50;middle++ ) {

small = 2*(100-3*large-2*middle);

/**/ if( large+middle+small=100 ) /**/ /* if( large+middle+small==100 )*/ {

n++; printf(\ } } return n; }

void main() {

int num; num = fun();

printf(\

getch(); }

15. 求一堆零件的总数(100至200之间)

程序cmody081.c,其功能是求一堆零件的总数(100至200之间)

如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件,则多5个零件。 答案:

#include void main() {

int i;

/**/ for( i=100; i<200; i++ ); /**/ /* for( i=100; i<200; i++ )*/ if((i-2)%4 == 0) if( !((i-3)%7) ) if( i%9 == 5 )

printf(\ /* i*/

getch(); }

16. 交换两个变量的值

程序cmody082.c,其功能是交换两个变量的值。 如输入:2 3 输出:original:a?2 resuct:a?3b?3 b?2

答案:

#include

/**/ void swap(int p1,int p2) /**/ /* void swap(int *p1,int *p2)*/ {

int temp; temp = *p1;

/**/ p1 = p2; /**/ /* *p1 = *p2; */ *p2 = temp; }

void main() {

int a,b;

printf(\ scanf(\

printf(\ swap(&a,&b);

printf(\ getch(); }

17. 计算1至100之间的奇数之和,偶数之和

程序cmody091.c,其功能是计算1至100之间的奇数之和,偶数之和 答案:

#include void main() {

int b,i;

/**/ int a=c=0; /**/ /* int a=0,c=0;*/

/**/ for( i=0,i<=100,i+=2 ) /**/ /* for( i=0;i<=100;i+=2 )*/ {

a+=i; b=i+1; c+=b; }

printf(\ printf(\ getch(); }

18. 求满足等式xyz+yzz=520的x、y、z值(其中xyz和yzz分别表示一个三位数)。

程序cmody092.c的功能是求满足等式xyz+yzz=520的x、y、z值(其中xyz和yzz分别表示一个三位数)。 答案:

#include void main() {

int x,y,z,i,result=520; for( x=1;x<10;x++ ) for( y=1;y<10;y++ )

/**/ for( z=1;z<10;z++ ) /**/ /* for( z=0;z<10;z++ )*/ {

i=100*x+10*y+z+100*y+10*z+z;

/**/ if (i=result) /**/ /* if (i==result)*/ printf(\ }

getch(); }

三、填空题

1. 计算 f(x)=

x?2x2?1

补充程序Ccon 011.c使其计算 f(x)=

x?2x?12

答案:

#include #include void main() {

int x;

/**/ float f; /**/

printf(\ scanf(\

f = /**/ (fabs(x) - 2) / (x*x + 1) /**/ ; printf(\}

2. 计算圆周率

补充程序Ccon 012.c,该程序用公式??4?(1?1111?????),计算圆周率的35710001近似值。

答案:

#include void main() { double pi=0; long i, sign=1;

for(i=1;i<=10001;i+=2) {

pi+=1.0*sign/i;

sign=/**/ -sign /**/; }

pi*=/**/ 4 /**/; printf(\}

3. 从10个数中找出最大值和最小值

补充程序Ccon 013.c程序实现从10个数中找出最大值和最小值. 答案:

#include

#include int max,min;

void find_max_min(int *p,int n) {

int *q;

max=min=*p;

for(q=p; q*q) min=*q; }

void main() {

int i,num[10];

printf(\

for(i=0;i<10;i++) scanf(\ find_max_min(/**/ num /**/,10);

printf(\ }

4. 计算满足一定条件的一位整数A和B的值

补充程序Ccon 021.c,使其计算满足下式的一位整数A和B的值.

AB?BA

403答案:

#include void main() {

int a,b,k;

int plu = /**/ 403 /**/; for(a=1; a<10; a++) for(b=1; b<10; b++) {

k = (a*10+b) * /**/ (b*10+a) /**/ ; if(k==plu)

printf(\

} }

5. 输入若干个整数,统计其中大于0和小于0的个数,以0结束输入

补充程序Ccon 022.c,使其实现输入若干个整数,统计其中大于0和小于0的个数,以0 结束输入 答案:

#include void main() {

int n,a,b; /**/ a=0; b=0; /**/

scanf(\

while(/**/ n != 0 /**/) {

if(n>0) a++;

else /**/ if(n<0) b++; /**/ scanf(\ }

printf(\}

6. 歌德巴赫猜想

补充程序Ccon 023.c,该程序可测试歌德巴赫猜想:从键盘上输入一个大于6的偶数,总 能找到两个素数,使得这两素数之和正好等于该偶数. 答案:

#include #include int prime(int n) { int k,flag=1;

for(k=2; k<=n/2+1; k++)

if (n%k==0) { flag=/**/ 0 /**/ ; break;} return flag; }

void main() { int num, a; // clrscr(); do

{ printf(\ scanf(\

}while(num<=6||num%2==1); for(a=2;a<=num/2+1;a++)

if(prime(a) && prime(/**/ num-a /**/))

printf(\}

7、牛顿迭代法求方程的根

补充程序Ccon031.C,使其用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。

答案:

#include #include /**/ void main() /**/ { float x,x0,f,f1; x=1.5; do

{ x0=x;

f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1;

}/**/ while /**/(fabs(x-x0)>=1e-6); printf(\}

8、大写变小写,小写变大写 补充程序Ccon032.C,该程序的功能是将输入的一行字符串的大写字母转变为相应的小写字母,小写字母则转变为相应的大写字母,其余字符不变。 答案:

#include void main() { char s[80]; int i;

printf(\

for(i=0;((s[i]=getchar())!='\\n')&&(i<80);i++); s[i]='\\0';

for(i=0;s[i]!='\\0';/**/ i++ /**/) {

if(s[i]>='a'&&s[i]<='z') s[i]=s[i]-32;

else if(/**/ s[i]>='A'&&s[i]<='Z' /**/) s[i]=s[i]+32; printf(\ } }

9、计算平均值

补充程序Ccon033.C,其中main函数通过调用average函数计算数组元素的平均值。 答案:

#include

float average(int *pa,int n) {

int k;

/**/ float avg=0.0; /**/

for(k=0;k

avg = avg+/**/ *(pa+k) /**/; avg = avg/n; return avg; }

void main()

{ int a[5]={20,30,45,64,23}; float m;

m=average(/**/ a /**/, 5); printf(\}

10、输入姓名,输出信息

补充程序con041.c使其实现从链盘输入一个同学的姓名(如“Jack”),输出问题该同学的信息(如“Hello, Jack!”)。 答案:

/**/ #include /**/ main()

{ /**/ char /**/ str[11];

printf(\ scanf(\

printf(\ getch(); }

11、冒泡排序法

补充程序con042.c程序中的in sort()函数用冒泡法对数组a中m个元素从大到小排序。 答案:

#include #include void sort(int a[], int m) { int i, j, t,swap;

for( i=0; i< /**/ m-1 /**/ ; i++ ) {

swap = 0;

for( j=0; j < m-i-1; j++) {

if /**/ ( a[j] < a[j+1] ) /**/ {

swap = 1; t = a[j];

a[j] = /**/ a[j+1] /**/; a[j+1] = t; }

}

if(!swap) break; } }

void main() {

int a[] = {23,55,8,32,18,2,9}; int i,k = sizeof(a)/sizeof(int); sort(a,k);

for(i=0;i

printf(\ \ printf(\ getch(); }

12、判断三角形是否为直角三角形

补充程序con043.c程序中的fun()函数用勾股定理判断一个三角形是否为直角三角形,即输入三角形的三边a,b,c,能回1,不能回0。 答案:

#include #include

int fun(/**/ float a,float b,float c /**/) {

float temp; int bTrue = 0; if(a

{ temp = a; a = b; b = temp; } if(a

{ temp = a; a = c; c = temp; }

if( fabs(/**/ a*a /**/ - (b*b + c*c)) < 1.0e-15) bTrue = 1; return bTrue; }

main() {

float a,b,c;

printf(\

scanf(\ if( fun(a,b,c) == 1) printf(\ else

printf(\ getch(); }

13、输入一个整数,输出该数的平方

补充程序ccon051.c,使其实现从键盘输入一个整数,输出该数的平方。 答案:

#include main() { int x;

printf(\ scanf(\ /**/);

printf(\ x*x /**/); getch(); }

14、选择排序法

补充程序ccon052.c,使程序中的sort()函数用选择法对数组a中的m个元素,从小到大排序。 答案:

#include #include void sort(int a[], int m) { int i, j, k, t;

for( i = 0; i < m-1; i++ ) { k = i;

for( j=i+1; j< /**/ /**/; j++) if( a[j] < a[k] ) /**/ /**/; if( k != i ) { t = a[k]; a[k]= a[i];

a[i] = /**/ /**/; } } }

void main() {

int a[] = {72,25,58,32,2,15,7,64}; int i,m = sizeof(a)/sizeof(int);

本文来源:https://www.bwwdw.com/article/xxkg.html

Top