C语言程序设计习题4

合集下载

C语言程序设计-第4章 练习题

C语言程序设计-第4章  练习题

一、单项选择题题目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语言程序设计练习题(含程序及参考答案)

(完整版)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中。

C语言 程序设计基础试题四及答案

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语句的讨论中,只有()是正确的。

《C语言程序设计》教材习题答案第4章

《C语言程序设计》教材习题答案第4章
scanf("%d",&n);
if(++n<10) printf("%d\n",n);
else printf("%d\n",--n);
}
3、若a、b、c1、c2、x、y均是整形变量,正确的switch语句是D
switch(a-b)
{default:y=a*b;break;
case 3:
case 10:y=a-b;break;
{
day+=a[ai][i];
}
day+=d;
printf("这是该年的弟%d天\n",day);
}
7、输入一个字符,判断输入字符的种类,即区分空格、回车、数字字符、英文字母和其他字符(要求分别用if…else if和switch语句编写)。
#include<stdio.h>
void main()
{
else x=6;
else x=7;
12、有如下程序段
int a=14,b=15,x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为D 1
13、有如下程序段
int score=5;
switch(score)
{
case 5:printf("very good!");
case 4:printf("Good!");
default:printf("data error!");
}
程序输出结果为D Very good! Good! Data error!

C语言习题四选择结构程序设计

C语言习题四选择结构程序设计

习题四选择结构程序设计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-4章练习

c语言程序设计习题1-4章练习
3.下面程序执行后k的值为【5】。
int a=1,b=2,c=3,d=4,k;
k=a>b?a:c>d?c:d
4.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为【6】。
5.下面程序的运行结果是x=【7】,y=【8】。
main( )
{ float x=4.9;int y;
y=(int)x;
char ch;
scanf("%c",&ch);
ch=(ch>=′A′&&ch<=′Z′)?(【1】):ch
printf("【2】\\n",ch);
2.下面程序段的执行结果是x=【3】,y=【4】。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d",x,y);
B)11.000000,12.000000,13
C)11.0000000,12,13
D)11,12.000000,13
15.执行以下程序后x的值为【】。
unsigned int x=65535;
printf("%d\\n",x);
A) 65535B)1C)有错误D)-1
二、填空题
1.下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。
12.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【】。
int x,y;
scanf("%d%d",&x,&y);
A)空格B)Tab键C)回车D)逗号
13.下面合法的语句是【】。

《C语言》练习题2011.11(4)

《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语言程序设计模拟试题四(含答案)

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。

C语言程序设计形考任务4

一、选择题(共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)解答

《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 字节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题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。

相关文档
最新文档