• / 62
  • 下载费用:10 金币  

C语言习题及答案.doc

关 键 词:
C语言习题及答案.doc
资源描述:
习题一【习题 1-1】C 语言源程序最多可能由________________部分组成?A) 预处理部分 B)变量说明部分C) 函数原型声明部分 D)函数定义部分【习题 1-2】一个完整的 C 语言源程序最少必须有_______。A)若干个主函数 B)若干个函数C)且只能有一个主函数 D)一个函数【习题 1-3】C 语言以函数为源程序的基本单位最主要有利于_______。A)程序设计结构化 B)程序设计模块化C)程序设计简单化 D 提高程序设计有效性【习题 1-4】要使得 C 语言编写的程序能够在计算机上运行并得出正确结果,必须要先经过_______________________________________。A)编辑和链接 B)编译和链接C)修改和运行 D 运行并输入数据【习题 1-5】选择一个 C 语言集成开发环境并启动它,然后分别输入【例 1-1】 、【例 1-2】 、 【例 1-3】的源程序,依次编译、链接、运行,看看能否达到预想的结果?从中了解程序的开发过程。习题二一、单项选择题【习题 2-1】 已知’A’ 的 ASCII 代码是 65,以下程序的输出结果是( )#include “stdio.h“main( ){ int c1=65,c2=66;printf(“%c, %c“,c1,c2);}A. 因输出格式不合法,输出错误信息 B. 65,66C. A,B D. 65,66【习题 2-2】若变量已正确定义,要将 a 和 b 中的数进行交换,下面不正确的语句组是( )A. a=a+b,b=a-b,a=a-b; B. t=a,a=b,b=t;C. a=t,t=b,b=a; D. t=b;b=a;a=t;【习题 2-3】 若 k 是整型变量,则以下程序段的输出是( )k=-8567;printf (“|%d|\n”,k);A. 输出格式不正确 B. 输出为|008567|C. 输出为 |8567| D. 输出为 |-8567|【习题 2-4】下列可作变量的标识符是( )A. 3rt B. je_c C.$89 D. a+6【习题 2-5】C 语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )A.必须为字母或下划线 B.必须为下划线C.必须为字母 D.可以是字母、数字和下划线中的任一种字符【习题 2-6】 C 语言并不是非常严谨的算法语言,在以下关于 C 语言的不严谨的叙述中,错误的说法是( )A. 大写字母和小写字符的意义相同 B. 有些不同类型的变量可以在一个表达式中运算C. 在赋值表达式中等号(=) 左边的变量和右边的值可以是不同类型D. 同一个运算符号在不同的场合可以有不同的含义二、简答题【习题 2-7】 C 语言数据类型有哪几类?基本数据类型包括哪几类?【习题 2-8】 C 语言中十进制、八进制和十六进制整常量是如何表示的?【习题 2-9】 C 语言为什么规定对所用到的变量“先定义,后使用” ,这样做有什么好处?【习题 2-10】C 语言中的语句有几类?控制语句有哪些?【习题 2-11】 怎样区分表达式和表达式语句?为什么有人称 C 为表达式语言?【习题 2-12】字符常量与字符串常量有什么区别?【习题 2-13】下面各数用八进制和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003三、阅读程序写结果或填空【习题 2-14】写出以下程序的运行结果:#includemain(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf(“a%c b%c\tc%c\tabc\n“,c1,c2,c3);printf(“\t\b%c %c\n“,c4,c5);}【习题 2-15】写出以下程序的运行结果:#includemain(){int n=177;printf(“%o\n“,n);}【习题 2-16】写出以下程序的运行结果:#includemain(){int a,n=0;n+=(a=10);printf(“%d\n“,a);}【习题 2-17】写出以下程序的运行结果:#include main(){ int a=5,b=7;float x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf(“%d%d\n“,a,b);printf(“%3d%3d\n“,a,b);printf(“%f,%f\n“,x,y);printf(“%-10f,%-10f\n“,x,y);printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n“,x,y,x,y,x,y);printf(“%e,%10.2e\n“,x,y);printf(“%c,%d,%o,%x\n“,c,c,c,c);printf(“%ld,%lo,%x\n“,n,n,n);printf(“%u,%o,%x,%d\n“,u,u,u,u);printf(“%s,%5.3s\n“,“COMPUTER“,“COMPUTER“);}【习题 2-18】写出以下程序的运行结果:#includemain(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf(“%d,%d,%d,%d“,i,j,m,n);}【习题 2-19】下面运算表达式的值是: x+a%3*(int)(x+y)%2/4设 x=2.5, a=7,y=4.7【习题 2-20】下面运算表达式的值是:(float)(a+b)/2+(int)x%(int)y设 a=2,b=3,x=3.5,y=2.5【习题 2-21】 写出下面赋值表达式运算后 a 的值,设原来 a=12;(1)a+=a (2) a-=2(3)a*=2+3 (4) a/=a+a(5)a%=(n%=2),n 的值等于 5 (6)a+=a-=a*=a【习题 2-22】 数学表达式:-55 或 xmain(){int m=5,n=10;printf(“%d,%d\n“,m++,--n);}A. 5,9 B.6,9C. 5,10 D.6,10【习题 3-4】逻辑运算符两侧的数据类型( )A. 只能是 0 和 1 B. 只能是 0 或非 0 正数C. 只能是整型或字符型数据 D. 可以是任何类型的数据【习题 3-5】下列关系表达式结果为假的是( )A. 0!=1 B. 2= D. = =【习题 3-7】写出下面各逻辑表达式的值。设 a=3,b=4,c=5。a+bcwhile(k0) s=s+k--;return s;}main( ){ int s,t;s=fun(4);t=fun(5);printf(“s=%d,t=%d\n“,s,t);}【习题 4-15】下列程序执行后的输出结果是_________。#include “stdio.h“int a=0;main( ){int i;for(i=1;i(b)? (a):(b)main( ){int i=10,j=15;printf(“%d\n”,10*M(i,j));}【习题 4-18】下列程序的输出结果是:#include “stdio.h”#define SQR(x) x*xmain(){int a,k=3;a=SQR(k+1);printf(“%d”,a);}【习题 4-19】以下程序运行的结果是long f(int n){long s;if(n= =1||n= =2) s=2;else s=n+f(n-1);return(s);}main( ){ long x;x=f(4);printf(“x=%d\n“,x);}【习题 4-20】下列程序的输出结果是________?#define Tap(x) 2*x+1main( ){int a=6,k=2,m=1;a+=Tap(k+m);printf(“%d”,a);}【习题 4-21】在以下程序的下划线处填写适当的语句使程序执行的结果4,16,256。test( ){ int x=2;x=x*x;printf(“%d,“,x);}main( ){test( );test( );test( );}【习题 4-22】下列程序的输出结果是 #include int f(int c){static int a=10;int b=++a;return(a+b+c);}main( ){printf(“%d”,f(f(5)));}【习题 4-23】以下函数调用语句中实参的个数是________?Sub1((x1,x2),(x3,x4,x5),x6)四、程序设计题【习题 4-24】编写一个递归函数计算 1+X+2X2+3X3++nXnF(n,x)=1 n=0F(n-1,x)+n Xn n0【习题 4-25】编写递归程序的输出如右所示的结果* ********【习题 4-26】编写递归程序的输出杨辉三角形【习题 4-27】编写程序计算: S= 直到 N!106 为止。【习题 4-28】编写程序计算 1~100 之间的素数,并按照由大到小的次序输出。习题五一、单项选择题【习题 5-1】在 C 语言中,数组名代表了__________。A) 数组的全部元素值 B)数组中第一个元素的值C) 数组中元素的个数 D)数组中第一个元素的地址【习题 5-2】不能把字符串“china“赋予数组 a 的语句是 _______ 。A)char a[8]={'c','h','i','n','a'} B)char a[]=“china“C)char a[8];a=“china“; D)char a[8];strcpy(a,“china“);【习题 5-3】设有如下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10};则下面是正确的数组元素的是 。A)a[a[2]+1] B)a(4) C)a[10] D)a[a[4]+5]【习题 5-4】设 a,b 是两个已定义的字符数组,则下面语句中正确的是 。A)gets(a,b); B)scanf(“%s%s“,a,b);C)scanf(“%s%s“, D)gets(“a“);gets(“b“);【习题 5-5】设有定义:int j=2,a[]={1,2,3,4,5};则数组 a[j]的值为 。A)2 B)3 C)4 D)5【习题 5-6】C 语言中,一维数组下标的最小值是 。A)随便 B)根据说明 C)1 D)0【习题 5-7】下面描述中不正确的是 。A)字符数组中可以存放字符串B)可以对字符数组进行整体输入、输出C)可以对任何数组进行整体输入、输出D)不能通过赋值运算符“=“对字符数组进行整体赋值【习题 5-8】若有说明:char a[]=“ABCDEF“;char b[]={'A','B','C','D','E','F'};则下面描述中正确的是 。A) a 数组长度比 b 数组长 B) a 和 b 不相同,a 是指针数组C) a 数组和 b 数组长度相同 D) a 和 b 完全相同二、阅读程序写结果或填空题【习题 5-9】设有定义语句:char c[][5]={“ABCD“};11!)(NN则数组 c 是 ⑴ 维数组,数组中共有 ⑵ 个元素,数组元素 c[0][1]= ⑶ 。【习题 5-10】设有定义语句:char s[15]={“123ab\0abc“};则表达式 strlen(s)的值为 。【习题 5-11】下面程序是求二维数组 a 主对角线上的元素和,请在划线处填上恰当的内容,以完成程序的功能。#include main(){int a[3][3]={1,2,3,2,3,4,3,4,5},s=0,k;for(k=0;kmain(){int a[10],k,t;for(k=0;kmain(){int a[7]={2,5,8,12,14,19,21},b[5]={13,15,21,25,30},c[12];int i=0,j=0,k=0,m;while(imain(){int m,n;for(m=1;m=m;n--)printf(“ “);for(n=1;nmain(){int n[3],i,j,k;for(i=0;imain(){int j,ch,a[8];for(j=0;j='0' if (num*c) _______; printf(“输出最小整数:%d\n“,num); } 【习题 6-12】下面程序的功能是将两个字符串 s1 和 s2 连接起来,将 s2 连接到s1 后面。请填空。#include “stdio.h” #include “string.h”main() { char s1[80],s2[80]; gets(s1); gets(s2); conn(s1,s2); puts(s1); } conn(char *p1,char *p2) { while(*p1) ______; while(*p2) { *p1=______; p1++; p2++; } *p1=’\0’; } 【习题 6-13】以下程序将数组 a 中的数据按逆序存放,请填空。 #define M 8#include “stdio.h” main() { int a[M],i,j,t; for(i=0;ix));}则输出结果是________。A) 11 B) 21 C) 31 D) 41【习题 7-6】设有以下说明: struct stud{char num[6];int s[4];double ave;}a,*p;则变量 a 在内存所占字节数是________。A) 18 B) 22 C) 11 D) 5【习题 7-7】以下程序的输出结果是________。struct HAR{int x, y; struct HAR *p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=h[1].p=h;printf(“%d %d \n“,(h[0].p)-y,(h[1].p)-x);}A) 2 3B) 1 4C) 4 1D) 3 2【习题 7-8】以下对结构体类型变量的定义中,不正确的是________。A) typedef struct aa B) #define AA struct aa{ int n; AA {int n;float m; float m;}AA; }td1;AA td1; C) struct D) struct{int n; { int n;float m; float m;}aa; }td1;struct aa td1;【习题 7-9】设有结构体及其数组和指针变量的定义语句struct{int x;}y[2],p=y;则下列表达式中不能正确表示结构体成员的是________。A)(*p).x B)*(p+1).x C)*(p) D)*p.x【习题 7-10】下列程序的输出结果是________。struct abc{ int a,b,c; };main(){struct abc s={1,2,3}; int t;t=s.a,s.c;printf(“%d\n“,t);}A) 1 B) 2 C) 3 D) 无结果【习题 7-11】有以下程序:#include union pw{int i;char ch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf(“%d“,a.i);}执行上述程序后的输出结果是________。A)13 B)14 C)208 D)209【习题 7-12】变量 a 所占内存字节数是 ________。union U{char st[4];int i;long l;};struct A{ int c;union U u;}a;A) 4 B) 5 C) 6 D) 8【习题 7-13】若定义 union uex{int i;float f;char c;}ex;则 sizeof(ex)的值是________。A)4 B)5 C)6 D)7【习题 7-14】以下程序的输出结果是________。union myun{ struct{int x, y, z; } u;int k;}a;main(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(“%d\n“,a.u.z);}A) 4B) 5C) 6D) 0【习题 7-15】若定义 union ex{int i;float f;char a[10];}x;则 sizeof(x)的值是________。A)4 B)6 C)10 D)16【习题 7-16】设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A) PER 是结构体变量名B) PER 是结构体类型名C) typedef struct 是结构体类型D) struct 是结构体类型名【习题 7-17】下面说明中,正确的是________。A) typedef v1 int; B) typedef v2=int;C) typedef int v3; D) typedef v4: int;【习题 7-18】以下各选项企图说明一种新类型名,其中正确的是_______。A)typedef a1 int; B)typedef a2=int C)typedef int a3; D)typedef a4;int;【习题 7-19】以下枚举类型的定义中正确的是________。A)enum a={one,two,three}; B)enum a{“one“,“two“,“three“};C)enum a={“one“,“two“,“three“}; D)enum a{one=8,two=9,three};【习题 7-20】设有定义enum team{my,your=3,his,her=his+5};则枚举元素 my,your,her 的值分别是 ________。A)032 B)134 C)039 D)035【习题 7-21】整型变量 x 和 y 的值相等且为非 0 值,则下面表达式中结果为零的是________。A) x||y B) x|y C) x表达式(b2)/(b1)的值是________。A) 0 B) 2 C) 4 D) 8【习题 7-23】运行下面程序: main(){ char x=034;printf(“%o\n“,xvoid fun(char *fname ,char *st){FILE *myf;int i;myf=fopen(fname,“w“ );for(i=0;imain(){ FILE *fp;int i=10,j=30,k,n;fp=fopen(“d1.dat“,“w“);fprintf(fp,“%d\n“,i);fprintf(fp,“%d\n“,j);fclose(fp);fp=fopen(“d1.dat“, “r“);fp=fscanf(fp,“%d%d“,printf(“%d %d\n“,k,n);fclose(fp);}程序运行后的输出结果是________。A) 10 30 B) 20 30 C) 30 50 D) 30 20【习题 8-9】fread 和 fwrite 函数常用来要求一次输入/输出________数据。A)一个整数 B)一个实数 C)一个字节 D)一组【习题 8-10】feof 函数用来判断文件是否结束,如果文件没有结束,则返回值是________。A)-1 B)0 C)1 D)EOF【习题 8-11】当顺利执行了文件关闭操作时,fclose 函数的返回值是________。A)0 B)Ture C)-1 D)1【习题 8-12】下列语句中,不能将文件型指针 fp 指向的文件内部指针置于文件头的语句是________。(注:假定能正确打开文件)A)fp=fopen(“abc.dat“,“w“) B)rewind(fp)C)feof(fp) D)fseek(fp,0L,0)二、简答题【习题 8-13】举例说明文本文件和二进制文件的适用场合。【习题 8-14】什么是文件?C 语言中的文件如何分类?【习题 8-15】写出在 C 程序中使用文件的操作步骤。三、编程题【习题 8-16】编写一个程序,将两个文件中的内容合并输出到另一个文件中。【习题 8-17】编写一个程序,统计命令行中提供的某一文本文件中汉字的个数(提示:可以简单认为汉字的两个字节内码的 ASCII 值都大于 160) 。【习题 8-18】建立一个文件,其中含有若干个学生的学号、姓名、出生日期、入学成绩信息。然后,从这个文件中读出每个学生的学号和姓名,输入其“C 程序设计”课程的成绩,并把这些信息保存到一个新文件中。习题一参考答案:【习题 1-1】ABCD 【习题 1-2】C【习题 1-3】B【习题 1-4】B【习题 1-5】略习题二参考答案:一、单项选择题【习题 2-1】~【习题 2-6】:CCDBAA二、简答题【习题 2-7】:C 语言提供了丰富的数据类型,可以根据这些数据类型构造出不同的数据结构。C 中的数据类型包括基本类型、构造类型、指针类型、空类型等。其中基本类型包括整型、字符型、实型(浮点型)等。【习题 2-8】: C 中整常数的表示整型常量即整常数。C 整常数可用以下三种形式表示:十进制整数;○ 1八进制整数。以数字 0 开头的数是八进制数,如 0123 表示八进制数○ 2123; 十六进制整数。以 0x 开头的数是十六进制数。如 0x123,代表十○ 3六进制数 123。【习题 2-9】:C 规定对所有的变量要“先定义,后使用”,这样规定有以下好处:(1)便于纠错;(2)便于编译系统为变量分配存储空间;(3)运算合法性检查。【习题 2-10】:C 语句可以分为以下五类:(1).控制语句。 完成一定的控制功能;(2).函数调用语句;(3)表达式语句;(4)空语句;(5)可以用{ }把一些语句括起来成为复合语句。C 只有 9 种控制语句,它们是:(1)if( )~else~(条件语句)(2)for( ) ~ (转向语句) (3)while( )~ (循环语句) (4)do~while( ) (循环语句) (5)continue(结束本次循环语句) (6)break(中止执行 switch 或循环语句) (7)switch(多分支选择语句) (8)goto(转向语句) (9)return(从函数返回语句 )【习题 2-11】:表达式不是独立存在的,它存在于其它表达式、语句、函数参数里,表达式后面加上一个分号,就变成表达式语句,如i=i+1 (是表达式,不是语句) i=i+l; (是语句) 表达式能构成语句是 C 语言的一个特色。其实“函数调用语句”也是属于表达式语句,因为函数调用也属于表达式的一种,只是为了便于理解和使用,我们把“函数调用语句”和“表达式语句”分开来说明。由于 C 程序中大多数语句是表达式语句(包括函数调用语句), 所以有人把 C 语言称作“表达式语言”。【习题 2-12】:字符常量就是一个字符,用单引号括起来,占一个字节;而字符串常量是由若干个字符组合而成,用双引号括起来,存贮时自动在后面加“\0 ”,即使同样是一个字符,字符串常量后面还要加一个“\0 ”。【习题 2-13】:(1)12,a;(2)40,20;(3)113,4b;(4)176627,fd97;(5)177621,ff91;(6)4663,9b3;(7)110022,9012;(8)51013,520b。三、阅读程序写结果或填空【习题 2-14】:aa bb cc abcA N【习题 2-15】:261【习题 2-16】:10【习题 2-17】:575 767.856400,-789.12402367.856400 ,-789.12402367.86, -789.12,67.8564,-789.1240,67.856400,-789.1240236.78564e+01, -7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM【习题 2-18】:9,11,9,10【习题 2-19】:2.5【习题 2-20】:3.5【习题 2-21】: (1)14,(2)10,(3)60,(4)0,(5)0,(6)0【习题 2-22】: x-5printf(“Input r,h:“);scanf(“%f,%f“,cl=2*PI*r;cs=PI*r*r;cvz=cs*h;printf(“The length of the circumference:%6.2f\n“,cl);printf(“area of the circle: %6.2f\n “,cs);printf(“volume of the column: %6.2f\n “,cvz);}【习题 2-27】:#includemain(){char ch;printf(“\nInput a letter:“);scanf(“%c“,printf(“\nASCII the letter:%d“,ch);}习题三参考答案:一、单项选择题【习题 3-1】~【习题 3-6】: DCADCB。【习题 3-7】:(1) 0 ,(2) 1 ,(3) 1 ,(4) 0 ,(5) 1 。二、简单题【习题 3-8】:程序解决问题是按指定的次序执行一系列操作的结果,按照次序执行操作的过程描述称为算法。算法的特性:(1)有穷性;(2)确定性;(3)有零个或多个输入;(4)有一个或多个输出;(5)有效性。举例:菜谱操作步骤、乐谱、施工图纸等等。【习题 3-9】:(1)自然语言,(2)伪代码,(3)流程图,(4)计算机语言。自然语言通俗易懂,但有歧义性;伪代码方便实用,但没有流程图明晰,容易犯逻辑错误;流程图明晰但绘制和修改时比较繁琐;计算机语言表示算法严谨,但无法做到算法设计的第一步就使用计算机语言,读程序比看流程图要费神很多。【习题 3-10】:顺序结构,由顺序执行的一组语句或者结构组成。(2)分支结构,根据判断条件,做出取舍,要么执行 A 分支要么执行 B 分支,必须执行其中的一个,不可全执行也不可全不执行。(3)循环结构,由需要反复执行的一段代码或者结构组成。任何算法功能都可以通过以上三种基本程序结构的组合来实现。【习题 3-11】:非 0 为真,0 为假。三、用传统流程图表示求解以下问题的算法。
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:C语言习题及答案.doc
链接地址:https://www.weizhuannet.com/p-9828420.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开