C语言程序设计习题4
- 格式:doc
- 大小:52.00 KB
- 文档页数:10
一、单项选择题题目1假定有一个元素类型为int的数组a[10],它所占用的存储空间的字节数为()。
a. 40b. 80c. 10d. 20题目2假定一维数组的定义为“char* a[8];”,则该数组所占用的存储空间的字节数为()。
a. 16b. 8c. 64d. 32题目3假定有一个定义语句为“int a[10]={3,4,2,8,6};”,则元素a[5]的值为()。
a. 0b. 6c. 2d. 8题目4在下面的一维数组定义语句中,有语法错误的是()。
a. int a[];b. int a[5];c. int a[10]={0};d. int a[]={1,2,3};题目5假定二维数组的定义语句为“int a[3][5];”,则该数组所含元素的个数为()。
a. 10b. 12c. 15d. 8题目6假定有一个定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。
a. 6b. 8c. 4d. 2题目7对于一个长度为n的字符串,保存它至少需要占用的存储字节数为()。
a. n-1b. n+1c. nd. n+2题目8对于一个二维字符数组a[M][N],存储每个字符串的长度至多为()。
a. N-1b. Nc. Md. M-1题目9若需要比较两个字符串的大小,则选用的函数是()。
a. strlenb. strcmpc. strcpyd. strcat二、判断题题目10一维数组元素带有两个下标。
对错题目11对于二维数组元素,数组名后使用两对中括号。
对错题目12在一维数组的定义语句中,给数组赋初值的部分是用一对花括号括起来的数据表。
对错题目13在一维数组的定义语句中,数组名前为元素类型关键字。
对错题目14在二维数组的定义语句中,数组名后带有两对圆括号。
对错题目15假定二维数组的定义语句为“double a[M][N];”,则每个数组元素的列下标取值范围在1~N 之间。
(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。
#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。
《程序设计基础》考试试卷四班级姓名学号一、选择题(每题1分,共20分)题号一二三四五总得分评卷人审核人得分1.以下叙述中正确的是( )A. C程序中注释部分可以出现在程序中任意合适的地方B. 花括号"{"和"}"只能作为函数体的定界符C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名D. 分号是C语句之间的分隔符,不是语句的一部分2.判断下面标识符中哪个是C语言中合法的用户定义标识符()A. 2a1bB. a%bdC. _123D. char3.设有以下定义int a=0; double b=1.25; char c=’A’; #define M 2则下面语句中错误的是( )A. a--;B. b--;C. c--;D. M--;4.有两条语句:static char x[]=”abcde”;static char y[]={‘a’,’b’,’c’,’d’,’e’};则下列说法中正确的是( )A. 数组x和数组y长度相同B.数组x长度大于数组y长度C. 数组x长度小于数组y长度D. 以上三种说法均错误;5.设整型变量a=13,则经运算a+= a/=a%=5后,a的值为()A. 17.333B. 17C. 0D. 26. 已知:int n,i=1,j=2;执行语句n=i<j?i++:++j;后,i和j的值是( ).A. 1,2B. 1,3C. 2,2D. 2,37.有函数定义如下:当自变量x<0时y=-1;当x=0时y=0;当x>0时y=1;以下程序片段能实现该函数功能的是( ):A. if(x>=0)B. y=-1;C. if(x>=0)D. y=0;if(x>0) y=1; if(x!=0) if(x>0) y=1; if(x>=0) else y=-1; if(x>0) y=1 ; else y=0; if(x>0) y=1;else y= 0; else y=0; else y= -1; else y=-1;8.当a=2,b=1,c=3,d=4,m和n值为1时,(m=a>b)||(n=c>d)的值是( )A. TRUEB. FALSEC. 1D.09.在C语言程序中,以下说法正确的是( )A. main函数内部可嵌套定义子函数B. main函数必须出现在所有函数之前C. main函数必须出现在所有函数之后D. main函数是程序执行的入口10.关于局部变量和全局变量说法正确的是():A. 在main函数中定义的变量都为全局变量B. 当全局变量与局部变量同名时,全局变量起作用C. 当全局变量与局部变量同名时,局部变量起作用D. 以上说法都不正确11.下列关于switch和break语句的讨论中,只有()是正确的。
习题四选择结构程序设计1. 设变量x和y均已正确定义并赋值。
以下if语句中,在编译时将产生错误信息的是______。
A、if(x++);B、if(x>y && y!=0);C、if(x>0) x--D、if(y<0) {;}else y++; else x++;解析:本题考查的是if语句。
if后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。
选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x--是表达式而不是语句,所以在编译时会出现错误信息。
故本题答案选C。
2. 有以下程序main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf ("%d",i);}printf("\n"); }执行后的输出结果是______。
A、5B、24C、32D、40解析:本题考查的是if语句的应用。
在满足for 语句条件下,第一个if语句的条件是指i先对5取余后,再自行加1;第二个if语句的条件是指:i=i+1后,再对8取余。
故本题答案选C。
3. 在嵌套使用if语句时,C语言规定else总是______。
A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对C、和之前与其最近的且不带else的if配对D、和之前的第一个if配对解析:本题考查的是if语句的使用规则。
在嵌套使用if语句时,C语言规定else总是和之前与其最近的且不带else的if配对。
故本题答案为C。
4. 有以下程序main(){ int i=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k); }程序运行后的输出结果是______。
《C语言程序设计》练习题一、单项选择题:1.下列对C语言的特点叙述不正确的是:A、运算符丰富B、数据类型丰富C、语法限制严格D、执行效率高2.C源程序经编译后生成的目标文件扩展名是:A、.CB、.OBJC、.EXED、.BAK3.下列数据类型中属于C构造类型的是:A、长整型B、双精度实型C、枚举类型D、共用体类型4.下列属于C基本数据类型的是:A、枚举类型B、数组类型C、结构体类型D、共用体类型5.C程序中的数据01101表示:A、二进制数B、八进制数C、十进制数D、十六进制数6.C程序中的整型数据不能采用下列哪种表示方式:A、十六进制数B、十进制数C、八进制数D、二进制数7.下列C常量表示错误的是:A、'aabb'B、0xffffC、2012LD、2.0e08.下列C常量表示正确的是:A、0800B、0xbcdC、1.0E-3.5D、'ABCD'9.下列标识符可选作C变量名的是:A、Input_port3B、3rd-dayC、#dataD、π10.下列标识符可选作C变量名的是:A、x/yB、New_ValueC、2ndDayD、φ11.下列是C运算符的是:A、#B、,C、;D、"12.下列不是C运算符的是:A、#B、sizeof( )C、,D、!13.下列C运算符的运算优先级最高的是:A、->B、*C、,D、++14.列C运算符只能作一元运算符使用的是:A、+B、*C、&D、!15.要向屏幕输出一个无符号整型数,应采用下列哪个格式字符:A、%dB、%cC、% uD、%x16.要向屏幕输出一个八进制整型数,应采用下列哪个格式字符:A、%dB、%oC、%xD、%u17.能正确描述数学命题“x的绝对值小于10”的正确C表达式是:A、-10<x,x<10B、|x|<10C、–10<x&&x<10D、–10<x||x<1018.能正确描述数学命题“a、b之和的绝对值大于3”的正确C表达式是:A、a+b<-3,a+b>3B、|a+b|>3C、a+b<-3||a+b>3D、a+b<-3&&a+b>3 19.能正确描述命题“a是大于10而小于100的偶数”的C表达式是:A、10<a<100 && a%2 = =0B、10<a<100 && a/2 = =0C、a>10 && a<100 && a%2 = =0D、a>10 && a<100 && a/2 = =0 20.有数据定义:char string[ ]="Computer",则表达式sizeof(string)的值是:A、8B、9C、10D、1121.设变量a=5,b=2,x=8.99,y=3.2,则表达式:(float)(a+b)/2+(int)x%(int)y,的值是:A、2.0 B、3.5 C、5.0 D、5.522.若a是整型变量,b是单精度实型变量,则下列C表达式不合法的是:A、b+aB、a*bC、b%aD、b&&a23.有数据定义如下:float x=3.924,y=-12.377;若欲向屏幕输出如下格式信息∶□□□□□3.924,□□□-12.377则应使用下列哪条语句合适∶A、printf("%f,%f",x,y);B、printf("%.3,%.3f",x,y);C、printf("%10.3f,%10.3f",x,y);D、printf("%-10.3f,%- 10.3f",x,y);24.下列有关C函数的叙述错误的是∶A、C只允许在主函数中定义其它函数体。
C语言程序设计模拟试题四(含答案)1、微型计算机的性能主要取决于A) 内存B) 中央处理器C) 硬盘D) 显示卡2、有一个数值152,它与十六进制数6A相等,那么该数值是A) 二进制数B) 八进制数C) 十进制数D) 四进制数3、使用超大规模集成电路制造的计算机应该归属于A) 第一代B) 第二代C) 第三代D) 第四代4、已知英文字母a的ASCII代码值是十六进制数61H,那么字母d的ASCII代码值是A) 34H B) 54HC) 24H D) 64H5、一片存储容量是1.44MB的软磁盘,可以存储大约140万个A) ASCII字符B) 中文字符C) 磁盘文件D) 子目录6、在MS-DOS环境中同时按下[Ctrl]和[Break]两个键,其作用是A) 终止当前操作B) 暂停当前操作C) 关机D) 热启动7、将二进制数10000001转换为十进制数应该是A) 127 B) 129C) 126 D) 1288、磁盘处于写保护状态,那么磁盘中的数据A) 不能读出,不能删改,也不能写入新数据B) 可以读出,不能删改,也不能写入新数据C) 可以读出,可以删改,但不能写入新数据D) 可以读出,不能删改,但可以写入新数据9、微型机启动后,DOS提示符是C:\>,现提示符变为C:\USER>,则说明刚执行过命令A) PROMPT B) PROMPT USERC)PROMPT SP$G D) CD USER10、MS-DOS文件系统目录的组织形式属于A) 关系型结构B) 网络型结构C) 树型结构D) 直线型结构11、应用软件系统TH的总容量大约1MB,其主要程序文件存放在C:\TH目录中,而数据文件存放在C:\TH\DATA目录中,如果将它们完整地复制到A盘, 应该使用的命令是A) XCOPY C:\\TH A:\\ B) XCOPY C:\\TH A:\\ /SC) XCOPY C:\\TH A:\\ /M D) XCOPY C:\\TH A:\\ /P12、执行COPY A.TXT+B.TXT 这个DOS命令后,得到的磁盘文件是A) A.TXT B) B.TXTC) AB.TXT D) A+B.TXT13、WindowsS中,将一个应用程序窗口最小化之后,得到的磁盘文件是A) 仍在后台运行B) 暂时停止运行C) 完全停止运行D) 出错14、CD-ROM属于A) 感觉媒体B) 表示媒体C) 表现媒体D) 存储媒体15、在因特网(Internet)中电子公告板的缩写是A) FTP B) WWWC) BBS D) E-mail16、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为A) 4 B) 16C) 32 D) 5217、设有如下的变量定义:int i=8, k, a, b;unsigned long w=5;double x=1, 42, y=5.2;则以下符合C语言语法的表达式是A) a+=a-=(b=4)*(a=3) B) x%(-3);C) a=a*3=2 D) y=float(i)18、假定有以下变量定义:int k=7,x=12;则能使值为3的表达式是A) x%=(k%=5) B) x%=(k-k%5)C) x%=k-k%5 D)(x%=k)-(k%=5)19、以下叙述中正确的是A) 输入项可以是一个实型常量,如:scanf("%f",3.5);B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf("a=%d,b=%d");C) 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf("%4.2f",&f);D) 当输入数据时,必须指明变量地址,例如:scanf("%f",&f);20、设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是A) 把x和y按从大到小排列B) 把x和y按从小到大排列C) 无确定结果D) 交换x和y中的值21、以下程序的输出结果是main(){int a=12,b=12;printf("%d,%d\n",- -a,+ +b);}A) 10 10 B) 12 12C) 11 10 D) 11 1322、以下程序运行后,输出结果是main(){char *s="abcde";s+=2;printf("%ld\n",s);}A) cde B) 字符c的ASCII码值C) 字符c的地址D) 出错23、以下程序输出结果是main(){ int m=5;if(m++>5)printf("%d\n",m);esleprintf("%d\n",m- -);}A) 7 B) 6C) 5 D) 424、当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为if(a<b)if(c<d) x=1;elseif(a<c)if(b<d) x=2;else x=3;else x=6;else x=7;A) 1 B) 2C) 3 D) 625、在执行以下程序时,如果从键盘上输入,ABCdef<回车>,则输出为#include<stdio,h>main(){ char ch;while((ch=getchar())!='\n'){ if(ch>='A' && ch<='Z') ch=ch+32;else if(ch>='a' && ch<='z') ch=ch-32;printf("%c",ch);}printf("\n");}A) ABCdef B) abcDEFC) abc D) DEF26、下面能正确进行字符串赋值操作的语句是A) char s[5]={"ABCDE"};B) char s[5]={'A','B','C','D','E'};C) char *s;s="ABCDEF";D) char *s; scanf("%s",s);27、执行以下程序段时X=-1;do {x=x*x; }while(! x);A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误28、执行以下程序后,输出的结果是main (){int y=10;do { y - -;}while(- - y);printf("%d\n",y - -);}A) -1 B) 1C) 8 D) 029、在下列选项中,没有构成死循环的程序段是\A) int i=100while(1){ i=i%100+1;if(i>100)break;\B) for( ; ;);\C) int k=1000;do{++k;}while(k>=10000);\D) int s=36;while(s);--s;30、执行语句:for(i=l:i++<4:);后,变量i的值是A) 3 B) 4C) 5 D) 不定31、以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为#include<stdio.h>#include<string.h>func<char str[]){ int num=0;while(*(str+num)!='\0') num++;return(num);}main(){ char str[10],*p=str;gets(p); printf("%d\n",func(p));}A) 8 B) 7C) 6 D) 532、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为#include<stdio,h>mair(){ int v1=0,v2=0;char ch;while((ch=getchar())!='#')switch(ch){ case 'a';case 'h';default; v1++;case '0'; v2++;}printf("%d,%d\n",v1,v2);}A) 2,0 B) 5,0C) 5,5 D) 2,533、若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时;FILEL CHINA BEIJING SHANGHAI程序的输出结果是main(int argc,char *argv[]){ while(arge-->0){ ++argv;printf("%s ",*argv);}}A) CHINA BEIJING SHANGHAI B) FILEL CHINA BEIJINGC) C B S D) F C B34、下面程序运行的结果是main(){char ch[7]={65ab21"};int i,s=0for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}A) 2ba56 B) 6521C) 6 D) 6235、运行下面的程序,如果从键盘上输入:ab<回车>c <回车>def<回车>#include<stdio,h>#define N 6main(){ char c[N];int i=0;for( ;i<N;c[i]=getchar(),i++); for( i=0;i<N;i++) putchar(c[i]); printf("\n");}A) abcdefB) abcdC) abcdD) abcdef36、以下程序运行后,输出结果是#include<stdio,h>ss(char *s){char *p=s;while(*p) p++;return(p-s);}main(){char *a="abded";int i;i=ss(a);printf("%d\n",i);}A) 8 B) 7C) 6 D) 537、以下程序运行后,输出结果是func(int a, int b){ static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){ int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}A) 8,15 B) 8,16C) 8,17 D) 8,838、以下程序运行后,输出结果是#include<stdio,h>#define PT 5.5#define S(x) PT* x * xmain(){ int a=1,b=2;printf("%4.1f\n",S(a+b));}A) 49.5 B) 9.5C) 22.0 D) 45.039、以下程序运行后,输出结果是main(){static char a[]="ABCDEFGH", b[]="abCDefGh";char *p1,*p2;int k;p1=a; p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));printf("\n");)A) ABCDEFG B) CDGC} abcdefgh D} abCDefGh40、以下程序运行后,a的值是main(){int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m;printf("%d\n",a);}A) 4 B) 1C) 0 D) 运行时出错,a无定值41、以下程序运行后,输出结果是int d=1;fun(int p){ int d=5;d+=p++;printf("%d,d);}main(){ int a=3;fun(a);d+=a++;printf("%d\n,d);}A) 84 B) 99C) 95 D) 4442、以下程序运行后,输出结果是main(){ char ch[2][5]={'693","825"},*p[2]; int i,j,s=0;for(i=0;i<2;i++) p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]='0' && p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0';printf("%d\n",s);}A) 6385 B) 22C) 33 D) 69382543、以下程序运行后,输出结果是fut(int **s, int p[2][3]){ **s=p[1][1];}main(){ int a[2][3]={1,3,5,7,9,11}, *p;p=(int *) malloc(sizeof(int));fut(&p,a);printf("%d\n",*P);}A) 1 B) 7C) 9 D) 1144、设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2:则执行表达式:(m=a>b)&&(n=c>d)后,n的值为A) 1 B) 2C) 3 D) 045、在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是main(){int s,t,a,b;scanf("%d,%d",&a,&b);s=1; t=1;if(a>0)s=s+1;if(a>b)t=s+t;elseif(a==b) t=5;else t=2*s;printf("t=%d\n",t);}A) a>b B) a<b<0C) 0<a<b D) 0>a>b46、以下程序的输出结果是main(){int i,j,x=0;for(i=0;i<2;i++){ x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;printf("x=%d\n",x);}A) x=4 B) x=8C} x=6 D} x=1247、以下程序运行后,输出结果是#inchude <stdio,h>#inchude <string,h>fun(char *w, int n){ char t, *s1,*s2;s1=w: s2=w+n-1;while(s1<s2){ t=*s1++;*s1=*s2--;*s2=t;}}main(){ char *p;p="1234567";fun(p,strlen(p));puts(p);}A) 1234567 B) 7654321C) 1711717 D) 717717148、以下程序运行后,如果从键盘上输入: book <回车>book <空格><回车>则输出的结果是#include<string,h>main(){char a1[80],a2[80],*s1=a1, *s2=a2;gets(s1); gets(s2);if(! strcmp(s1,s2)) printf("*");esle printf("#");printf("%d/n",strlen(strcat(s1,s2)));}A) *8 B) #9C) #6 D) *949、以下程序运行后,输出结果是main(){int y=18,i=0,j,a[8];do{ a[i]=y%2; i++y=y/2;} while(y>=1)for(j=i-1;j>=0;j--) printf("%d",a[j]; printf("\n");}A) 10000 B) 10010 C) 00110 D) 10100答案:BBDDA ABBDC BAADC CADDD DCBBB CADCC DCACC DCBBC AACBC BCBB。
一、选择题(共30分,每小题2分)题目1假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为()。
选择一项:a. struct BOOK *x=malloc(book);b. struct BOOK x={"C++ Programming",27.0};c. struct BOOK *x=malloc(sizeof(struct BOOK));d. struct BOOK *x=&book;正确答案是:struct BOOK *x=malloc(book);题目2假定有“struct BOOK{char title[40]; float price;} book;”,则正确的语句为()。
选择一项:a. struct BOOK x= &book;b. struct BOOK *x=&book;c. struct BOOK x=calloc(BOOK);d. struct BOOK *x=BOOK;正确答案是:struct BOOK *x=&book;题目3在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是()。
选择一项:a. 句点b. 冒号c. 分号d. 逗号正确答案是:分号题目4假定一个结构类型的定义为“struct A{int a,b; double c;};”,则该类型的长度为()。
选择一项:a. 8b. 10c. 12d. 16正确答案是:16题目5假定一个结构类型的定义为“struct D{int a; D* next;};”,则该类型的长度为()。
选择一项:a. 4b. 8c. 12d. 16正确答案是:8题目6假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。
选择一项:a. x.ab. x->ac. x(a)d. x{a}正确答案是:x->a题目7与结构成员访问表达式等价的表达式为()。
《C语言程序设计》作业4解答一、选择题1. 假定有“struct BOOK {char title[40]; float price;}; struct BOOK * book;”,则不正确的语句为( A )。
A. struct BOOK * x=malloc(book);B. struct BOOK x={"C++ Programming",27.0};C. struct BOOK * x=malloc(sizeof(struct BOOK));D. struct BOOK **x=&book;2. 假定有“struct BOOK {char title[40]; float price;}book;”,则正确的语句为( B )。
A. struct BOOK x=&book;B. struct BOOK * x=&book;C. struct BOOK x=calloc(BOOK);D. struct BOOK *x=BOOK;3. 表示文件结束符的符号常量为( C )。
A. eofB. EofC. EOFD. feof4. C语言中的系统函数fopen( )是( D )一个数据文件的函数。
A. 读取B. 写入C. 关闭D. 打开5. 从一个数据文件中读入以换行符结束的一行字符串的函数为( B )。
A. gets( )B. fgets( )C. getc( )D. fgetc( )6. 向一个二进制文件中写入信息的函数fwrite( )带有( D )个参数。
A. 1B. 2C. 3D. 4二、填空题1. 假定一个结构类型的定义为“struct A {int a, b; struct A * c;};”,则该类型的大小为12 字节。
2. 假定一个结构类型的定义为“struct B {int a[5]; char * b;};”,则该类型的大小为24 字节。
C语言程序设计课堂练习题(2012-12-26)第4章基本程序设计技术一、选择题1.若有以下程序:main(){ int x=1,a=0;do{a+=1;}while(x,x--);}则语句a+=1;执行的次数是()A. 0B. 1C. 无限次D. 2答案:2.若有以下程序:main(){ int i;f or(i=0;i<3;i++)switch(i){case 1:printf("%d",i);case 2:printf("%d",i);def ault:print f("%d",i);}}执行后输出结果是( )A.011122B. 012C. 012020D.120答案:3.以下程序的输出结果是:main(){ int a=0,i;f or(i=1;i<5;i++){ switch(i){ case 0:case 3:a+=2;case 1:case 2:a+=3;def ault:a+=5;}}printf("%d\n",a)}A. 31B.13C. 10D.20答案:4.若输入字符串:abcde<回车>,则以下while循环体将执行( ) main(){ char ch;while((ch=getchar())!='e')printf("*");}A. 2B. 3C. 无限次D.4答案:5.有以下程序段:int n=0,p;do{scanf("%d",&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是( ).A. p的值不等于12345并且n的值小于3B. p的值等于12345并且n的值大于等于3C. p的值不等于12345或者n的值小于3D. p的值等于12345或者n的值大于等于3 答案:6.以下程序的输出结果是( )main(){int i=0,a=0;while(i<20){ f or(;;){if((i%10)==0) break;else i--;}i+=11;a+=i;}printf("%d\n",a);}A. 21B. 32C. 33D.11答案:7.以下程序的输出结果是( )main(){ int a,b;f or(a=1,b=1;a<=100;a++){if(b>=10) break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A. 101B. 6C. 5D.4答案:8.若有以下程序:main(){ int a=15,b=21,m=0;switch(a%3){case 0:m++;break;case 1:m++;switch(b%2){def ault:m++;case 0:m++;break;}}printf("%d\n",m);}执行后输出的结果是( )A. 1B. 2C. 3D.4答案:二、编程题1.编写程序实现一个专家诊断系统。
C语言程序设计模拟试题4 说明:1. 本卷共五大题,共6页。
2. 本试卷时间120分钟,满分100分。
一、项选择题(每小题2分,共20分, 每小题只有一个正确答案,请将你认为正确的答案填在对应的括号内。
)1. 组成C程序的基本单位是()。
A.函数B.标识符C.表达式D.语句2. 在C语言中,正确的字符类型的常量是()A.‘b‘ B.“ab” C.’ab’ D.”a”3. 在C语言中,逻辑值“真”是用()表示的。
A.预定义为真值的宏B.非零数C.正数D.非零整数4.下列描述中不正确的是()A.字符型数组中可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值5.设有如下定义:int x=1,y=-1;,则语句:printf(“%d\n”,(x--&++y));的输出结果是()A.1 B.0 C.-1 D.26.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是()A.c=b=a;B.(a=c)||(b=c);C.(a=c)&&(b=c);D.a=c=b;7.以下程序的输出结果是()A.10192 B. 9876C. 10990D.10109 1main(){int x=10,y=10,i;for(i=0;x>8;y=++i)printf(“%d %d”,x--,y);}8.以下程序的输出结果是()A.5 2 B.5 1 C.5 3 D.9 7main(){int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2) printf(“%d”,p[i]);}9.以下程序的输出结果是( )A.6B.6789C.’6’D.789{char a[10]={‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,0},*p;int i;i=8;p=a+i;printf(“%s\n”,p-3);}10.C语言提供的合法的数据类型关键字是( )A. DoubleB. shortC. integerD. Char二、读程序(每小题3分,共27分)1、以下程序的输出结果为:()main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}A.2,1B.2,0C.0.25,0D.程序有错2、以下程序的输出结果为:()#include "stdio.h"main(){int i;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");}A.#*#*#$B.*#%*#$C.*#*#*#$D.*#*#*$3、有以下程序:#include "stdio.h"main(){char c[6];int i=0;for(;i<6;c[i]=getchar(),i++);for(i=0;i<6;putchar(c[i]),i++);}输入以下三行,每行输入都是在第一列上开始,<CR>代表一个回车键:a<CR>cdef<CR>程序输出结果为:()A.abcdefB. aC.aD.ab b bcdef c cddef4、以下程序的输出结果为:#include "stdio.h"main(){int c;while((c=getchar())!='\n'){switch(c-'2'){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);break;}}printf("\n");}每行输入在第一列上开始,<CR>代表一个回车键:2473<CR>程序输出结果为:()A.6696B. 668977C.666965D.6698555、以下程序的输出结果为:( )A.19,59,5B.29,59,5C.2,9,5,9,5D.17,4,8,5main(){int i=1,j=3;printf("%d",i++);i+=j++*2;printf("%d,%d",++i,++j)printf("%d,%d\n",i,j);}6、以下程序的输出结果为:( )main(){ int a=2,i;for (i=0;i<3;i++)printf("%4d",f(a++));}f(int a){ int b=0;static int c=3;b++;c++;return a+b+c;}A. 7 8 9B. 7 7 7C.8 9 10D.7 9 117、下列程序,分别选择3条printf语句行的正确输出结果。
《C语言程序设计》试题(闭卷)得分评卷人一、单项选择题:(每题 2 分,共 30 分)1. C 语言规定:在一个源程序中,main函数的位置_____________。
A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后2. 下列说法中错误的是_____________。
A. 主函数可以分为两个部分:函数头和函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行3. 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将_____________。
A. 生成目标文件B. 生成可执行目标文件C. 输出运行结果D. 自动保存源文件4. 以下选项中,不正确的 C 语言浮点型常量是_____________。
A. 160.B. 0.12C. 2e4.2D. 0.05. 以下用户标识符中,合法的是_____________。
A. intB. nitC. 123D. a+b6. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为_____________。
A. 算术运算、关系运算、赋值运算B. 算术运算、赋值运算、关系运算C. 关系运算、赋值运算、算术运算D. 关系运算、算术运算、赋值运算7. 设整型变量m,n,a,b,c,d 均为1,执行(m=a>b)&&(n=c>d)后, m,n 的值是_____________。
A. 1,1B. 0,1C. 1,0D. 0,08. sizeof (char)的结果值是_____________。
A. 4B. 2C. 1D.出错9. 设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是_____________。
A. 10<a<15B. a= =11|| a= =12 || a= =13 || a= =14C. a>10 && a<15D. !(a<=10) && !(a>=15)10. 要为字符型变量 a赋初值,下列语句中哪一个是正确的_____________。
习题1、选择题(1)下列运算符中,只能用于整型数据的是()。
A.–B. +C. /D. %(2)设x,y,z和k都是int型变量,有表达式:x=(y=52,z=36,k=32),则x的值为()。
A.4B. 26C. 32D. 52(3)设有如下变量的定义:int i=8,k,a,b;unsigned long w=5;double x=1,y=5.2;则以下符合C语言的表达式是()。
A.a+=a-=(b=4)*(a=3)B.x%(-3)C. a=a*3=2D. y=int(i)(4)假设有以下的变量定义:int k=7,x=12;则能使值为3的表达式是()。
A.x%=(k%=5)B. x%=(x-k%5)C. x%=k+k%5D. (k%=5)- (x%=k)(5)若变量a、i已正确定义,且i已正确赋值,合法的语句是()。
A. a==1B. ++iC. a=a++=5D. a=int(i)(6)若有以下程序段:int c1=2,c2=3,c3;c3=1.0/c2*c1;则执行c3的值是()。
A. 0B. 3C. 1D. 2(7)若下程序:void main( ){int y=6,x=3,z=1;printf(“%d %d\n”,(++x,y++),z+2);}运行该程序的输出结果是()。
A. 3 4B. 6 3C. 4 3D. 3 3(8)若有以下定义和语句:char c1= ’a’,c2=’f’;printf(“%d ,%c\n”,c2-c1,c2-‘a’+’B’);则输出结果是()。
A. 2 MB. 5 GC. 2 ED.输出项与对应格式控制不相符,输出结果不确定(9)当c的值不为0,在下列选项中能正确将c的值赋给变量a、b的是()。
A. c=a=bB. (a=c)‖(b=c)C. (a=c)&&(b=c)D.a=c=b(10)设int x=2,y=1;,表达式(!x‖y--)的值是()。
C语言程序设计试题四一、单项选择题;每题1分,共20分1. C程序的基本单位是:A.子程序B.程序C.子过程D.函数2.在C语言中,非法的八进制是:A.016B.018C.017D.023. 不是C语言实型常量的是:4 .字符串“xyzw”在内存中占用的字节数是:A.6B.5C.4D.35. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:6. 若有语句char c1=`d`,c2=`g`;printf“%c,%d\n”,c2-`a`,c2-c1;则输出结果为:a的ASCII码值为97A.M,2B.G,3C.G,2D.D,g7. 使用语句scanf“a=%f,b=%d”,&a,&b;输入数据时,正确的数据输入是:A.a=2.2,b=3B.a=2.2 b=3C.2.2 3D.2.2,38.表示关系12<=x<=y的C语言表达式为:A.12<=x&x<=yB. 12<=x&&x<=yC. 12<=x|x<=yD.12<=x||x<=y9.设x=1,y=2,m=4,n=3,则表达式x>yx:m<ny:n的值为:A.1B.3C.2D.410. 若有说明和语句:int a=5,b=6;b=a+1;则b的值为:A.5B.6C.31D.3611. 设整型变量s,t,c1,c2,c3,c4的值均为2,则执行语句s=c1==c2||t=c3>c4后,s,t的值为:A.1,2B.1,1C.0,1D.1,012. 语句fora=0,b=0;b=100&&a<5;a++scanf“%d”,&b; scanf最多可执行次数为:A.4B.6C.5D.113. 对于fors=2;;s++可以理解为:A. fors=2;0 ;s++B. fors=2;1 ;s++C. fors=2;s<2 ;s++D. fors=2;s>2;s++14. 若有char h=`a`,g=`f`;int a6={1,2,3,4,5,6};则数值为4的表达式为:A.ag-hB.a4C.a`d`-`h`D.a`h`-`c`15. 设:char s10={“october”};则printf“%d\n”,strlens;输出是:A.7B.8C.10D.1116. 若有int a35={2,2},{2,6},{2,6,2}},则数组a共有个元素:A.8B.5C.3D.15二、填空题;每空1分,共15分1.C语言标识符由 _________、__________和___________来构造;2.在C语言中,字符串常量是用一串字符;3.若有说明和语句:int a=25,b=60;b=++a;则b的值是 ;4.若int x=5;whilex>0printf“%d”,x--;的循环执行次数为 ;5.若有int a5,p=a;则p+2表示第个元素的地址;6.若有说明和语句:int a=5,b=6,y=6;b-=a;y=a++则b和y的值分别是、 ;7.已知整型变量a=3,b=4,c=5,写出逻辑表达式a||b+c>c&&b-c的值是 ;8.C程序设计的三种基本结构是 ________、________和________;9.数组是表示类型相同的数据,而结构体则是若干数据项的集合;10.C语言中文件是指三、将下列程序补充完整;每空2.5分,共30分1.输入三角形的三条边a,b,c,求三角形的面积;include “math.h”include “stdio.h”main{float a,b,c,d,t,s;printf“请输入三角形的三条边:”;scanf“%f,%f,%f”,&a,&b,&c;if 1printf“%f%f%f不能构成三角形”, a,b,c;else {t=a+b+c/2;s= 2printf“a=%7.2f,b=%7.2f,c=%7.2f,area=%7.2f\n”, a,b,c,s;}}122.输入两个整数,n1,n2要求n1<n2,统计两整数范围内被3整除的数的个数;include “stdio.h”main{int n1,n2,j,n=0;printf“\n请输入两个数:”;scanf 3 ;ifn1>n2{ 4 }forj=n1;j<=n2,j++if 5 n++;printf“a=%5d,b=%5d,n=%5d\n”n1,n2,n;}3453.输入两个整数,n1,n2要求n1<n2,统计两整数范围内的素数的个数;include “math.h”include “stdio.h”int prime int x{int k;for 6if x%k==0 return0;return1}main{int a,b,j,n=0;printf“\n请输入两个数:”;scanf“%d,%d”,&a,&b;ifa>b{ 7 }forj=a;j<=b,j++if 8 n++;printf“a=%4d,b=%4d,n=%4d\n”a,b,n;}6784.编写程序,输入n个整数n由键盘输入,统计其中正数、负数和零的个数;include “stdio.h”main{int x,n,k,k1=0,k2=0,k3=0;printf“input n=:”;9fork=0;k<n;k++{scanf“%d”,&x;if x<0k1++;10 ;else k3++;printf“k1=%4d,k2=%4d,k3=%4d\n”,k1,k2,k3}}9105.设计一个程序完成以下功能:若从键盘输入英文字母,则原样输出;输入其他字符不理会,直到输入Q键结束.include “stdio.h”main{char ch;do{ch=getchar;if 11 break;else if 12 putcharch;}while1;}1112四、按格式写出程序运行结果;每题4分,共16分;1.格式化输出函数main{ int a=1,c=65,d=97;printf“a10=%d,a8=%o,a16=%x\n”,a,a,a;printf“c10=%d,c8=%o,c16=%x,cc=%c\n”c,c,c,c;d++;printf“d10=%d,dc=%c\n”d,d;输出结果:2.循环结构main{ int y=9,k=1;for;y>0;y--{ify%3==0{printf“%4d”--y;continue;}k++;}printf“\nk=%4d,y=%4d\n”,k,y;} 输出结果:3.数组include “stdio.h”main{int k,j;Int a={3,-5,18,27,37,23,69,82,52,-15};fork=0,j=k;k<10;k++ifak>ajj=k;printf“m=%d,j=%d\n”,aj,j;} 输出结果为:4.字符输出main{char p,s=“ABCD”;for p=s;p<s+4;p++printf“%s\n”,p;} 输出结果:五、按题目要求写出可运行程序:19分1.求元素个数为10的一维数组元素中的最大值和最小值;2.将矩阵 9 7 5 倒置为 9 3 43 1 2 7 1 64 6 85 2 83.编写函数:输入两个正整数m,n,求它们的最大公约数和最小公倍数;编写程序如下:C语言程序设计试题四答案一、单项选择题:1.D2.B3.D4.B5.B6.B7.A8.B9.B 10.C11.A 12.C 13.B 14.C 15.A 16.D二、填空题:1.字母、数字和下划线2.双引号3.264.55.三36.1,207.1 8.顺序结构、选择结构、循环结构 9.类型不同10.存储在外部介质上的相关数据集合;三、将下列程序补充完整;1.1a+b<c||b+c<a||a+c<b2sqrttt-at-bt-c2.3”%d%d”,&n1,&n2 4 j=n1;n1=n2;n2=j;5j%3==03.6k=2;k<=sqrtx;k++ 7 j=a;a=b;b=j;8primej4.9scanf“%s”,&n10else if x==05.11ch==`Q`||==`q`12ch>=`A`&&ch<=`Z`||ch>=`a`&&ch<=`z`四、按格式写出程序运行结果;1.a10=1,a8=1,a16=1c10=65,c8=101,c16=41,cc=Ad10=98,dc=b2.8 5 2k=4 y=03.m=82,j=74.ABCDBCDCDD五、按题目要求写出可运行程序;1.include “stdio.h”main{ int term10;int i,max,min;printf“请输入10个整数:”;fori=0;i<10;i++scanf“%d”,&termi;max=term0;min=term0;fori=0;i<10;i++{iftermi<minmin=termi;iftermi>maxmax=termi;}printf“max=%d,min=%d”,max,min;} 2. mainint j,k,x;int a3={9,7,5,3,1,2,4,6,8};forj=0;j<3;j++fork=j+1,k<3;k++{x=ajk;ajk=akj;akj=x;}forj=0;j<3;j++{fork=0,k<3;k++printf“%4d”,ajk;}}3.include “stdio.h”int gcdint m,int,n{ifn==0returnm;else returngcdn,m%n;int timint m,int,nreturnmn/gcdm,n;}main{int m,n,g,t;printf“enter two number please:”;scanf“%d,%d”,&m,&n;g=gcdm,n;t=timm,n;printf“gcdm,n=%d\n”,g;printf“timm,n=%d\n”,t;}。
第4、5、6章c语言程序设计例题、习题【例4—1】执行下面两个语句后,输出的结果为。
charc1=97;c2=98;printf(”%d%c”,c1,c2);(A) 97 98 (B) 97 b (C) a 98 (D) a b解答:整型数据和字符型数据可以通用,变量c1和c2被定义为字符型,语句c1=97和c2=98的作用相当于执行cl=‟a‟和c2=‟b‟两语句,因为a和b的ASCII码分别为97和98。
在输出语句中,%d和%c是输出格式符,要求在相应位置上分别输出一个整数和一个字符。
因此,本题正确答案为(B)。
【例4—2】以下程序的输出结果是。
#include<stdio.h>main(){int i, j,k,a=3,b=2;i=(--a==b++)?--a:++b;j=a++;k=b;printf(“i=%d,j=%d,k=%d\n”,i,j,k);}(A)i=2,j=1,k=3 (B)i=l,j=1,k=2(C)i=4,j=2,k=4 (D)i=l,j=l,k=3解答:语句i=(--a==b++)?--a:++b使i在表达式—a==b++为真时,值为--a。
--a先使a自减,再引用a的值。
第一个--a=2,a的值变为2,b++=2,使用b后b的值变为3,表达式--a=b++为真,故i的值为--a=l,a的值现在为1。
j=a++,先使用a的值,a再自加,所以j的值也为1,k=b=3。
因此,本题正确答案为(D)。
【例4—3】以下程序的输出结果是。
main(){float x=3.6;int i;i=(int)x;printf(“x=%f,i=%d”,x,i);}(A)x=3.600000,i=4 (B)x=3 , i=3(C)x=3.600000,i=3 (D)x=3, i=3.600000解答:变量被作强制类型转换后,其类型不会改变,改变的只是表达式的值。
因此,执行语句i=(int)x后,x的值仍为3.6,但i的值为3。
第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是( A)A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次2、t为int类型,进入下面的循环之前,t的值为0while( t=1){ …… }则以下叙述中正确的是( B)A) 循环控制表达式的值为0B) 循环控制表达式的值为1C) 循环控制表达式不合法D) 以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D) m!=14、有以下程序,程序运行后的输出结果是(C )。
main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D )。
main(){ int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n--;printf(“%d”,n);}}该程序段的输出结果是(B)A) 987 B) 876 C) 8765 D) 98767、以下程序的输出结果是( B )main(){ int num= 0;while(num<=2){ num++; printf(“%d\n”,num);}}A) 1 B) 1 C)1 D) l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2.000000 D)2.4000009、执行以下程序段时x=-1;do{ x=x*x; }while(! x);则下面描述正确的是(A )A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 系统将提示有语法错误10、有以下程序段其输出结果是(C )int x=3;do{ printf("%d",x-=2); }while (!(--x));A) 1 B) 3 0 C) 1 -2D) 死循环11、有如下程序main(){int x=23;do{printf(“%d”,x);x--;}while(!x);}该程序的执行结果是(B )A) 321 B) 23 C) 不输出任何内容D) 陷入死循环12、有以下程序段int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345 &&n<3);此处do—while循环的结束条件是( D)A) P的值不等于12345并且n的值小于3B) P的值等于12345并且n的值大于等于3C) P的值不等于12345或者n的值小于3D) P的值等于12345或者n的值大于等于313、以下不构成无限循环的语句或语句组是(A)A) n=0;do {++n;}while(n<0);B) n=0;while(1){n++;}C) n=10;while(n);{n--;}D) for(n=0,i=1; ;i++)n+=i;14、若i为整型变量,则以下循环执行的次数是(B)for(i=2;i= =0;) printf(“%d”,i--);A)无限次B)0次C)1次D)2次15、执行语句for(i=1;i++<4;)后,变量i的值是(C)A) 3 B) 4 C) 5 D) 不定16、有以下程序main(){int y=9 ;for( ; y>0 ; y--)if(y%3==0 ) printf("%d" , --y) ;}程序的运行结果是(C)A) 741 B)963 C)852 D)87542117、以下程序执行后sum的值是( C)A)15 B)14 C) 不确定D)0main(){ int i , sum;for(i=1;i<6;i++) sum+=i;printf(“%d\n”,sum);}18、有如下程序main(){ int i,sum=0;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum);}该程序的执行结果是(C)A) 6 B) 3 C) 死循环D) 019、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C )A)0 B)10 C)-1 D)120、执行下面程序片段的结果是(A )。
单选题1、关于C语言中的函数,下列描述正确的是()A。
函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个A.3B。
4C。
5D.6答案:A解析:(v1,v2),(v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是()A。
printf()函数可以向任何地方输出数据B。
printf()只向控制台输出数据C。
scanf()只能输入英文字母和数字D.scanf()函数可以识别输入的空格答案:B解析:printf()是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是()A.externB.staticC.thisD。
auto答案:B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。
5、当调用时,会调用内部函数A。
当调用时,会调用内部函数B。
当调用时,会调用外部函数C。
当调用时,会调用两次,先调用内部函数再调用外部函数D。
都不调用,会报错答案:A解析:当内部函数与外部函数重名时,会优先调用内部函数6、在C语言中,声明外部函数需要添加的关键字是( )A。
externB。
staticC。
thisD.auto解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字7、关于C语言中的局部变量,下列描述中错误的是( )A.局部变量就是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调用时才会被使用D。
局部变量一旦被调用,其生存周期持续到程序结束答案:D解析:当函数调用结束时局部变量就会失去作用8、关于C语言中的全局变量,下列描述中正确的是()A。
《C程序设计》练习题一一.选择题1.以下选项中属于C语言的数据类型是()。
A. 复合型B. 双精度型C. 逻辑型D. 集合型2.以下说法中正确的是()。
A. C语言程序总是从第一个函数开始执行B. 在C语言程序中,要调用的函数必须在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分3.选出下列标识符中不是合法的标识符的是()。
A. hot_doB. cat1C. _priD. 2ab4.下列描述中不正确的是()。
A.字符型数组中能存放字符串。
B.可以对字符型数组进行整体输入、输出。
C.可以对整型数组进行整体输入、输出。
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
5.表达式:10!=9的值是()。
A. trueB. 非零值C. 0D. 16.能正确表示a和b同时为正或同时为负的逻辑表达式是()。
A.(a>=0||b>=0)&&(a<0 ||b<0) B.(a>=0 && b>=0)&&(a<0 && b<0) C.(a+b>0) &&(a+b<=0) D. a*b>07.C语言中,合法的字符型常数是()A.‘A’ B.“A” C. 65 D. A8.设有数组定义:char array[]=”China”; 则数组所占的空间是()A.4个字节 B.5个字节 C.6个字节 D.7个字节9.若变量c为char类型,能正确判断出c为小写字母的表达式是()A.’a’<=c<=’z’ B.(c>=’a’) || (c<=’z’)C.(‘a’<=c) and (‘z’>=c) D.(c>=’a’) && (c<=’z’)10.设有定义:long x=-123456L; 则以下能够正确输出变量x值的语句是()A.printf(“x=%d\n”,x) B.printf(“x=%ld\n”,x)C.printf(“x=%8dl\n”,x) D.printf(“x=%LD\n”,x);11.指出下面正确的输入语句()A.scanf(“a=b=%d”,&a,&b);B. scanf(“%d,%d”,&a,&b) ;C.scanf(“%c”,c) ; D. scanf(“% f%d\n”,&f) ;12.C语言源程序的基本单位是()。
习题4参考解答1.写出下面函数的运行结果。
#include<stdio.h>void fx701(int k,int n,float a);int main(){int k=1,n=5;float a=3.2,b=8.5;printf("调用前:k=%d n=%d a=%.2fb=%.2f\n",k,n,a,b);fx701(k,n,a);printf("调用后:k=%d n=%d a=%.2fb=%.2f\n",k,n,a,b);return 0;}void fx701(int k,int n,float a){int q=100;float b,x=6.2;k+=q; n*=q; a-=x; b=3.5*a;printf("函数中:k=%d n=%d a=%.2fb=%.2f\n",k,n,a,b);}解:调用前:k=1 n=5 a=3.20 b=8.50函数中:k=101 n=500 a=-3.00 b=-10.50调用后:k=1 n=5 a=3.20 b=8.502.编写一个函数,实现从键盘输入一个整数,如果该整数为素数,则返回1,否则返回0。
解:#include<stdlib.h>#include<stdio.h>int Is_prime(int i){int j=0;for(j=2;j<i;j++){if(0==(i%j)){return 0;}}return 1;}int main(){int i;printf("Please input a number:");scanf("%d",&i);if(1==Is_prime(i)){printf("%d is a prime.\n",i);}elseprintf("%d is not a prime.\n",i);system("pause");return 0;}程序运行结果如下:Please input a number:13↙13 is a prime.Please input a number:8↙8 is not a prime.3.设计两个函数,分别求矩形的周长和面积,并在主函数中调用这两个函数。
解:#include<stdio.h>float area(float a,float b){float s;s=a*b;return(s);}float zc(float a,float b){float p;p=2*(a+b);return(p);}int main(){float a,b,s,p;printf("请输入长方形的边长a,b:");scanf("%f%f",&a,&b);s=area(a,b);p=zc(a,b);printf("长方形的周长为p=%f,长方形的面积为s=%f",p,s);}程序运行情况如下:请输入长方形的边长a,b:3 4↙长方形的周长为p=14.000000,长方形的面积为s=12.0000004.编写一个函数求一个整数n的阶乘,在主函数中计算并输出10!的值。
解:#include<stdio.h>float fc(int n){float s;if(n==1||n==0) s=1;else s=n*fc(n-1);return(s);}int main(){float k;k=fc(10);printf("10!=%f\n",k);return 0;}程序运行结果如下:10!=3628800.0000005.已知函数fun2的原型说明为“long fun2(int m,int n);”,调用该函数计算m~n的和(其中n>m>0),例如:若m=5,n=20,则计算5+6+7+8+…+20的值。
要求在主函数中通过键盘输入m和n的值,并输出和的值。
解:#include<stdio.h>long fun2(int m,int n){long s;int i;s=0;for(i=m;i<=n;i++)s=s+i;return(s);}int main(){int n,m,sum;printf("请输入m,n的值n>m:\n");scanf("%d%d",&m,&n);sum=fun2(m,n);printf("sum=%d\n",sum);return 0;}程序运行结果如下:请输入m,n的值n>m:5 20↙sum=2006.编写一个函数重复打印给定的字符n次。
解:#include <stdio.h>void fun2(char m,int n){int i;for(i=1;i<=n;i++)printf("%c",m);printf("\n");}int main(){char m;int n;printf("请输入给定的字符\n");scanf("%c",&m);printf("请输入打印的次数\n");scanf("%d",&n);fun2(m,n);return 0;}程序运行结果如下:请输入给定的字符*↙请输入打印的次数5↙*****7.写出程序的运行结果,并上机验证其结果。
#include<stdio.h>void fun1(){int x=5;printf("x=%d\n",x);}void fun2(int x){printf("x=%d\n",++x);}int main(){int x=2;fun1();fun2(x);printf("x=%d\n",x);return 0;}解:x=5x=3x=28.指出下列程序中各变量的存储属性,并写出程序的执行结果。
(1)#include<stdio.h>void add(int i);int main(){int i=1;add(i);printf("main:i=%d\n",i);return 0;}void add(int i){i=i+3;printf("add:i=%d\n",i);}解:add:i=4main:i=1其中,i是自动型变量。
(2)#include<stdio.h>int i=1;void add1();int main(){add1();printf("i=%d\n",i);return 0;}void add1(){i=i+3;}解:i=4其中,该变量是外部型变量。
(3)#include<stdio.h>void add2(int i);int main(){int i=2;add2(i);add2(i);return 0;}void add2(int i){static int j=5;j=i+j;printf("j=%d\n",j);}解:j=7j=9其中,变量i 是静态型变量。
9.编写程序实现以下图形的输出。
解: #include<stdio.h> void main() {int i,j,k;for(i=1;i<=5;i++) //先打印上边的四行{for(j=1;j<=5-i;j++) //控制要打印的空格数量printf(" ");for(k=1;k<=2*i-1;k++) //控制要打印的星号数printf("*");printf("\n");}}10.写出程序的运行结果。
#include<stdio.h>#define X 5#define Y X+1#define Z Y*X/2int main(){* * * * * * * * * * * * * * * * * * * * * * * * *int a;a=Y;printf("%d %d\n",Z,--a);return 0;}解:7 511.编写一个函数,将一个十进制整数转换为二进制数。
解:#include <stdio.h>void main(){long num;int ozb();printf("请输入一个十进制数:");scanf("%ld",&num);printf("%ld的二进制数为:",num);ozb(num);}int ozb(long num){int a[32]={0},i=0;while(num>=1){a[i]=num%2;num=num/2;i++;}for(i=i-1;i>=0;i--){printf("%d",a[i]);}printf("\n");return(a[i]);}程序运行结果如下:请输入一个十进制数:5↙5的二进制数为:10112.编写一个函数,找出任意整数的全部因子。
解:#include<stdio.h>int N;void main(){void yz();scanf("%d",&N);/*输入N的值*/yz(N);}void yz(){int i,p=1;for(i=1;i<N+1;i++) /*执行for 语句,是用来求和的*/{if(N%i==0) /*判断是否是N的因子,如果是则加上*/{p=i;printf("%d ",p);}}}程序运行结果如下:15↙1 3 5 15。