《南邮通达C期末复习答案版(14页).doc》由会员分享,可在线阅读,更多相关《南邮通达C期末复习答案版(14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-1、2、3、 南邮通达C期末复习答案版-第 14 页4、 不属于C语言关键字的是_D_。A) int B) break C) while D) character 5、 下列字符序列中,不可用作C语言标识符的是 B 。A) abc123 B) no.1 C) _123_ D) _ok6、 构成C语言源程序的基本单位是 C 。 A ) 文件 B ) 子程序C )函数D ) 过程7、 在C语言中,要求运算数必须是整型的运算符是_B_。 A) / B) % C) *= D) +8、 已知大写字母A的ASCII码值是65, 小写字母a的ASCII码是97,则用十六进制表示的字符常量x41是_A_。
2、A) 字符A B) 字符a C) 字符c D) 非法的常量9、 已知大写字母A的ASCII码值是65, 小写字母a的ASCII码是97,则用八进制表示的字符常量101是_B_。 A) 字符a B)字符A C) 字符c D) 非法的常量10、 以下选项中, 合法转义字符的选项是_A_。 A) B) 018 C) xab D) abc11、 若int a=8; float b=4.5 表达式 a%=(int)(b)+4 运算后a和b的值分别是: A 。A )0和4.500000 B ) 1和4.500000 C ) 0和4 D ) 1和412、 设以下变量均为int类型,则值不等于7的表达式是 C
3、 。A) (m=n=6, m+n, m+1) B) (m=n=6, m+n, n+1)C) (m=6, m+1, n=6, m+n) D) (m=6, m+1, n=m, n+1)13、 已知int i;float j;scanf(“i=%d,j=%f”,&i,&j);为了把10和5.12分别赋给i和j,则正确的输入为 _C_。A ) 10,5.12 B ) 10 5.12 C ) i=10,f=5.12 D ) i=10 f=5.1214、 有如下程序段,对应正确的数据输入是 A 。float x,y;scanf(”%f%f”, &x,&y);printf(”x=%f,y=%f”, x,y)
4、;A) 2.04 B) x=2.04 5.67 y=5.67 C) x=2.04,y=5.67 D) 2.04, 5.67 15、 以下程序段的输出结果是 C 。int a=12345; printf(”%2dn”, a); A) 12 B) 34 C) 12345 D) 提示出错、无结果16、 有以下程序,若输入为字符f,则程序运行结果为 A 。void main() char ch;ch=getchar();switch (ch) case a: printf(”a=%cn”,ch); default: printf(”end!n”); case b: printf(”b=%cn”,ch)
5、;case c: printf(”c=%cn”,ch);A) end! B) end! C) 有语法错误 D) a=fb=f end! c=f17、 请阅读以下程序:该程序_C_。void main() int x=-10, y=5, z=0;if (x=y+z) printf(”*n” );else printf(”$n”);A) 有语法错不能通过编译 B) 输出$C) 输出* D) 可以通过编译但不能通过连接18、 以下程序中,循环体执行次数是_B_。int k=1; while(k = =1) k+; A ) 0B ) 1C ) 2D ) 无限次34、 以下程序的输出结果是 B 。voi
6、d main() int x=1,y=2; printf(%d,%dn,x+,+y);A ) 13 B ) 1,3C ) 23D ) 2,319、 以下程序的输出结果是 A 。void main() int x=8,y=8; printf(%d%dn,x-,-y);A ) 87 B ) 8,7 C ) 77 D ) 7,720、 以下说法中正确的是 C 。 A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main( )函数中定义C)C语言程序总是从main( )函数开始执行D)C语言程序中的main( )函数必须放在程序的开始部分21、 如果在一个函数中的复合
7、语句中定义了一个变量,则以下正确的说法是 A 。A) 该变量只在该复合语句中有效B) 该变量在该函数中有效C) 该变量在本程序范围内有效D) 该变量为非法变量22、 以下正确的描述是_A_。A ) 函数的定义不可以嵌套,但函数的调用可以嵌套B ) 函数的定义可以嵌套,但函数的调用不可以嵌套C ) 函数的定义和函数的调用均不可以嵌套D ) 函数的定义和函数的调用均可以嵌套23、 以下正确的说法是 D 。 A) 实参和与其对应的形参在任何情况下都可以互相传递参数值 B) 实参和与其对应的形参共占用一个存储单元 C) 只有当实参和与其对应的形参同名时才共用存储单元 D) 形参是虚拟的,当它所在的函数
8、被调用时才占用存储单元24、 以下不能对二维数组a进行正确初始化的语句是 C 。A) int a23=0;B) int a 3=1,2,0;C) int a23=1,2,3,4,5,6;D) int a 3=1,2,3,4,5,6;+25、 若有说明:int a34=0; 则下面正确的叙述是_C_。A) 此说明语句不正确数组B) 只有元素a00可得到初值0C) a中每个元素均可得到初值0D) 数组a中各元素都可得到初值,但其值不一定为026、 下列程序的运行结果是 B 。void main() int i, j, x=2; for(i=0; i2; i+) x+;for(j=0; j=3; j
9、+) if(j%2) continue;x+; x+;printf(x=%dn,x);A) x=6 B) x=10 C) x=8 D) x=1427、 以下程序的运行结果是 _B_。int abc (int u,int v) int w;while (v)w=u%v;u=v;v=w;return u;void main( ) int c,a=24,b=16;c=abc(a,b);printf(“%dn”, c);A) 9 B) 8 C) 7 D) 628、 以下程序运行后,输出结果是 B 。#define ADD(x) (x)+(x)void main( ) int m=1, n=2, s=3
10、;s=s*ADD(m+n);printf(s=%dn, s);A) s=8 B) s=12C) s=6D) s=1829、 以下程序段中宏代换后存在错误的是 C 。A) #define ar_size 100 B) #define PI 3.1415926int array1ar_size; #define S(r) PI*(r)*(r)C) #define PI 3.1415926 D) #define PI 3.1415926#define S(r) (r)*(r)* PI; #define S(r) PI*(r)*(r)area=S(a+b); area=S(a);30、 若有定义“in
11、t *p3;”则下列叙述中正确的是B。A) 定义了一个基本类型为int的指针变量p,该变量具有3个指针B) 定义了一个指针变量数组p,该数组含有3个元素,每个元素都是类型为int的指针C) 定义了一个名为*p的整型数组,该数组含有3个int类型的元素D) 定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素31、 如有语句int *p, a=7;p=&a; 则下面均能正确表示地址的是 B 。A) a, p, *&a B) &a , &*p, p C) *&p, *p, &a D) &*a, &a,*p32、 下列程序的运行结果是 A 。void main( ) int i
12、,x33=9,8,7,6,5,4,3,2,1; int *p=&x11; for(i=0;i4;i+=2) printf(%d,,pi);A)5,3, B) 5,2,C) 5,1,D) 9,7,33、 在说明一个共用体变量时, 系统分配给它的内存空间是C。A) 各成员所需内存量的总和B) 共同体中第一个成员所需的内存量C) 成员中占内存最大者所需的容量D) 共同体中最后一个成员所需的内存量34、 设有以下说明语句struct num int x ; float y; char z ;example;则下面的叙述中不正确的是 D 。A) struct是结构体类型的关键字 B) x,y,z都是结构
13、体成员名 C) example是结构体类型名 D) struct num是结构体类型35、 C语言可以处理的文件类型是 A 。A) 文本文件和二进制文件 B) 文本文件和数据文件C) 数据文件和二进制文件 D) 以上答案都不对33、结构化程序设计的三大基本结构是 顺序 、 选择 和 循环 。34、if语句的三种基本结构形式是 if 、 if-else 和 if-else-if 。35、 下面程序输入1 2 3后的运行结果是 a=1,b=2,c=3 。(注意输入的1、2和3之间有空格)#includevoid main()int a,c;char b; scanf(“%d%*c%d%d”,&a,
14、&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c);36、 下面程序输出的第一行是 ,第二行是 * 。#includevoid main()int a=5,b=2,c=4;switch(a0) case 1:switch(b0)case 1: printf(#);printf(n);break;case 2: printf($);printf(n);break;case 0:switch(c=4)case 0: printf(!);printf(n);break;case 1: printf();printf(n);break;default:printf(&);pri
15、ntf(n);break;default:printf(*);printf(n);37、 下面程序的运行结果是 a=2,b=1 。#includevoid main()int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y) case 0:a+;break; case 1:b+;break;case 2:a+;b+;break;printf(a=%d,b=%dn,a,b);38、 以下程序实现从键盘上输入一个整数,然后把这个整数的各位逆序输出。例如,输入987654321,输出123456789。请补全程序,注意每空只有一条语句。#include void
16、main()int n,d;printf(Enter an integer:); scanf(%d,&n); do d=n%10 ;printf(%d,d); n/=10; while( n!=0 ); printf(n);39、 下列程序计算Fibonacci数列:1,1,2,3,5,8,13的前40项,请补全程序。#includevoid main() int i; long f1,f2; f1=f2=1 ;for(i=0;i20;i+) printf(%12ld%12ld,f1,f2);if(i%2) printf(n);f1+=f2; f2+=f1 ;40、 以下程序的运行结果第二行是
17、 8 ,最后一行是 10 。#includevoid main() int a=2,i; for(i=0;i4;i+) printf(%dn,fun(a);fun(int a) int b=3; static int c=2; return(a+(b+)+(c+);41、 以下程序的输出结果是 14 #include #define M 3#define N M+2#define MN N*N/2void main()printf(%dn,MN*5);42、 以下程序实现从键盘输入两个字符串,并比较两个字符串是否相等。请补全程序。#include#include#define M 20void
18、 main()char str1M,str2M;printf(请输入第一个串:); scanf(“%s”,&str1) ;printf(请输入第二个串:); sanf(“%s”,&str2) ;printf(第一个串:%sn,str1);printf(第二个串:%sn,str2);if( strcmp(str1,str2)=0 ) printf(两个字符串相等);else printf(两个字符串不等);43、 以下程序执行,第一行结果是 1 4 ,第二行结果是 2 5 最后一行结果是 3 6 。#includevoid main()int num33=1,2,3,4,5,6,i,j;for(
19、i=0;i3;i+) for(j=0;j2;j+)printf(%dt,numji);printf(n);for(i=0;i3;i+)for(j=i;j3;j+)if(i!=j)numij+=numji;numji=numij-numji;numij-=numji;for(i=0;i3;i+)for(j=0;j2;j+)printf(%dt,numij);printf(n);44、 下程序运行结果的第一行是 x=4,y=6 ,第二行是 x=7,y=5 。#include int x=4,y=6;void f1( ) printf(“x=%d,y=%dn”,x,y);void main( ) i
20、nt x=7, y=5;f1( );printf(x=%d,y=%dn, x, y);45、 已有定义如下:struct node int data; struct node *next; *p;以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。p = (struct node *)malloc( sizeof(struct node) );46、 以下程序实现从键盘输入一串字符,逐个把它们保存到磁盘上去,直到输入字符为止。#include “stdio.h”void main( ) FILE *fp; char ch,filename10;
21、scanf(“%s”,filename); if (fp=fopen( filename ,”w” )= = NULL ) printf(“cannt open filen”); exit(0); ch= getchar( ); while ( ch!= ) fputc(ch,fp);putchar (ch);ch= getchar( ); fclose(fp) ;47、 下程序运行结果的第一行是 10 ,第二行是 6 。#include void main() int i,j; for(i=1,j=1;j=10) break;if(i%2=1)i+=5;continue;i-=3; prin
22、tf(“i=%dn j=%dn”,i,j);48、 以下程序是对从键盘输入的任何三个整数,求出其中的最小值。请补全程序。#include ”stdio.h”void main()int a,b,c,min;printf(”please input three numbers:”);scanf(”%d%d%d”,&a,&b,&c);if ( ab ) min=b;else min=a;if (minc) min=c ;printf(”min=%dn”,min);49、 以下程序的运行结果第一行是 3 ,第二行是 5 。#includevoid func(int n) static int a=1
23、; a+=n; printf(%dn,a);void main() int a=2; func(a); func(a);50、 以下程序是对用户输入的字母进行大小写转换。请补全程序。#include ”stdio.h”void main()char ch;printf(”please input a letter:”);scanf(”%c”,&ch);if ( ch=A&ch=a & ch=z) ch=ch-32 ;printf(” the converted letter is: %cn”,ch);51、 以下程序的运行结果第一行是 2 ,第二行是 1 。#includeint f(int
24、n) if (n0) f(n-1); else if (n=0) return(1); else return(n*f(n+1);void main() printf(%dn,f(-2); printf(%dn,f(2);52、 以下程序的运行结果第一行是 3 ,第二行是 5 。#includevoid func(int n) static int a=1; a+=n; printf(%dn,a);void main() int a=2; func(a); func(a);53、 字符串是以_0_为结束标志的一串字符序列。字符串NameAddress023n的长度为_15_。54、 以下程序运
25、行结果的第一行是 0 ,第二行是 9815 ,最后一行是 4 。#includevoid fun(int *s, int n1, int n2) int i, j, t;i=n1; j=n2;while(ij) t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;i+; j-;void main() int a10=1,2,3,4,5,6,7,8,9,0,i, *p=a;fun(p,0,3); fun(p,3,6); fun(p,0,9);for(i=0; i10; i+) printf(%d, *(a+i);if (i%4=0) printf(n);55、 下面程序输入1
26、 2 3后的运行结果是 x=1,y= ,z=2 。(注意输入的1、2和3之间有空格)#includevoid main()int x,y;char z; scanf(“%d%c%d”,&x,&y,&z); printf(x=%d,y=%c,z=%dn,x,y,z);56、 以下程序运行结果的第一行是 x=4,y=6 ,第二行是 x=7,y=5 。#include int x=4,y=6;void f1( ) printf(“x=%d,y=%dn”,x,y);void main( ) int x=7, y=5;f1( );printf(x=%d,y=%dn, x, y);57、 以下程序是对从键
27、盘输入的任何三个整数,求出其中的最小值。请补全程序。#include ”stdio.h”void main() int a,b,c,min;printf(”please input three numbers:”);scanf(”%d%d%d”,&a,&b,&c);if ( ab ) min=b;else min=a;if (minc) min=c ;printf(”min=%dn”,min);58、 以下程序的运行结果是 0 。#include #define S(X) X*Xvoid main() int a=6, k=2, m=1;a/=S(k+m)/S(k+m);printf(a=%d
28、n,a);59、 break语句不能用于_选择_和_循环_ 语句之外的任何其他语句中60、 定义int x,y;执行y=(x=1,+x,x+2);后, y的值是 4 。61、 含有0的四位正整数,去除0后用9相乘等于原四位正整数。如:6075=675 X9。编程寻求此数。#includeint main() int number,unit,decade,hundred,thousand,newnum; for(number=1000;number=9999;number+) unit=number%10; decade=(number%100-unit)/10; hundred=(number
29、%1000-decade*10-unit)/100; thousand=(number%10000-hundred*100-decade*10-unit)/1000; if(unit=0) newnum=thousand*100+hundred*10+decade; if(number=newnum*9) printf(%d=%d*9t,number,newnum); else if(decade=0) newnum=thousand*100+hundred*10+unit; if(number=newnum*9) printf(%d=%d*9t,number,newnum); else if
30、(hundred=0) newnum=thousand*100+decade*10+unit; if(number=newnum*9) printf(%d=%d*9t,number,newnum); return 0;62、 有一函数fun:当(x0)时,y=x;当(0x10)时,y=2x-1;当(x10)时,y=3x+1,该函数返回值为y。编写一主函数输入x值,加以验证。要求: 在主函数中完成输入整数x并调用fun函数输出相应计算结果。#includeint fun(int x) int y; if(x=0&x10) y=2*x-1; else y=3*x+1; return y;int m
31、ain() int a,result; printf(请输入一个整数:); scanf(%d,&a); result=fun(a); printf(结果是:%dn,result); return 0;63、 键盘输入3X3矩阵各元素的值,求各行、各列,对角线元素之和。#includeint main() int a33,i,j,row3= 0,column3= 0,k,dig1=0,dig2=0; printf(请输入3*3矩阵各元素的值:); for(i=0; i3; i+) for(j=0; j3; j+) scanf(%d,&aij); for(i=0; i3; i+) for(j=0;
32、 j3; j+) if(i=j) dig1+=aij; if(i+j)=2) dig2+=aij; rowi+=aij; columni+=aji; for(k=0; k3; k+) printf(第%d行元素之和为:%dn,k+1,rowk); for(k=0; k3; k+) printf(第%d列元素之和为:%dn,k+1,columnk); printf(左对角线元素之和为:%dn,dig1); printf(右对角线元素之和为:%dn,dig2); return 0;64、 用冒泡法排序按从大到小下列数据:1,2,3,4,5,6,7,8,9,0。#includevoid bubble
33、_sort(int a, int n) int i, j, temp; for (j = 0; j n - 1; j+) for (i = 0; i n - 1 - j; i+) if(ai ai + 1) temp = ai; ai = ai + 1; ai + 1 = temp;int main() int i,num= 1,2,3,4,5,6,7,8,9,0; bubble_sort(num,10); for(i=0; i10; i+) printf(%d ,numi); return 0;65、 计算机D盘文件file1.txt中保存一串英文字符。编程实现:将该文件中“指定的字母”若是
34、小写则转换成大写,若为大写则转换成小写,并将转换后的所有文件内容复制到D盘文件file2.txt 中。要求:“指定的字母”由用户从键盘输入。66、 十元币值换另钞,可换币种为一元、两元、五元,要求换超后,各种币均有。#includeint main() int money=10,i,j,k; for(i=1;i10;i+) for(j=1;j5;j+) for(k=1;k2;k+) if(i+j*2+k*5=money) printf(十元可换为:%d张一元+%d张二元+%d张五元n,i,j,k); return 0;67、 ”word.txt”文本文件中出现的多余的空格(即单词间连续两个以上
35、空格)删除后,结果保留在“data.dat”文件中。68、 用函数实现2进制,8进制、16进制及10进制数的转换,并测试之。#includevoid change2(int num) if(num!=0) change2(num/2); printf(%d,num%2);void change8(int num) if(num!=0) change8(num/8); printf(%d,num%8);void change16(int num) if(num!=0) change16(num/16); if(num%16=10) printf(A); else if(num%16=11) printf(B); else if(num%16=12) printf(C); else if(num%16=13) printf(D); else if(num%16=14) printf(E); else if(num%16=15) printf(F); else printf(%d,num%16);int main() int num,num2,num8,num16; pr
限制150内