C语言习题

更新时间:2023-09-30 18:42:01 阅读量: 综合文库 文档下载

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

习题一

【习题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 \main( )

{ int c1=65,c2=66; printf(\; }

A. 因输出格式不合法,输出错误信息 B. 65,66 C. 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】写出以下程序的运行结果: #include main() {

char c1='a',c2='b',c3='c',c4='\\101',c5='\\116'; printf(\ printf(\}

【习题2-15】写出以下程序的运行结果: #include main() {

int n=177;

printf(\}

【习题2-16】写出以下程序的运行结果: #include main() {

int a,n=0; n+=(a=10);

printf(\}

【习题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(\printf(\printf(\

printf(\

printf(\printf(\

printf(\printf(\printf(\

printf(\}

【习题2-18】写出以下程序的运行结果: #include main() {

int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(\}

【习题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或x<-5又是如何表达?请写出相应的C语句。 四、编写程序题

【习题2-23】 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf()输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编写程序。

5【习题2-24】 输入一个华氏温度,要求输出摄氏温度。公式为c=9(F-32),输出要有文字说明,取2位小数。

【习题2-25】 编程序,用getchar()函数读入两个字符给cl、c2,然后分别用putchar()函数和printf()函数输出这两个字符。并思考以下问题:

(1)变量c1、c2应定义为字符型或整型?抑或二者皆可? (2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?

(3)整型变量与字符变量是否在任何情况下都可以互相代替?如“char c1,c2;”与“int cl,c2;”是否无条件地等价?

【习题2-26】编写程序,从终端键盘输入圆的半径r,圆柱的高h,分别计算出圆周c1、圆面积cs和圆柱的体积cvz。输出计算结果要求有文字说明,并取小数点后两位数字。

【习题2-27】编写程序,读入一个字母,输出与之对应的ASCII码,输入输出都要有相应的文字提示。

习题三

一、单项选择题

【习题3-1】“基本结构”不具有以下特点( ) A. 只有一个入口,只有一个出口 B. 没有死循环 C. 没有永远执行不到的语句 D. 不允许退出循环 【习题3-2】 在流程图中,菱形框表示的操作是( ) A. 数据的输入输出 B. 程序的开始 C. 条件判断 D. 赋值 【习题3-3】以下程序的运行结果是( ) #include main()

{int m=5,n=10;

printf(\}

A. 5,9 B.6,9 C. 5,10 D.6,10 【习题3-4】逻辑运算符两侧的数据类型( )

A. 只能是0和1 B. 只能是0或非0正数 C. 只能是整型或字符型数据 D. 可以是任何类型的数据 【习题3-5】下列关系表达式结果为假的是( ) A. 0!=1 B. 2<=8

C. (a=2*2)= =2 D. y=(2+2)= =4 【习题3-6】下列运算符中优先级最低的是( ) A. ?: B. += C. >= D. = =

【习题3-7】写出下面各逻辑表达式的值。设a=3,b=4,c=5。 a+b>c&&b==c a||b+c&&b-c !(a>b)&&!c||1

!(x=a)&&(y=b)&&0 !(a+b)+c-1&&b+c/2 二、简单题

【习题3-8】什么是算法?算法有哪些特性?从日常生活中举出几个算法的例子。

【习题3-9】算法有哪些描述方法?各有什么优缺点? 【习题3-10】结构化的算法有哪几种结构?试分别描述。

【习题3-11】选择语句和循环语句对条件的判断的标准是什么?(即何值为真、何值为假?)

三、用传统流程图表示求解以下问题的算法。

【习题3-12】有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反);

【习题3-13】依次将10个数输入,要求将其中最大的数打印出来; 【习题3-14】有三个数a、b、c,要求按大小顺序把它们打印出来; 【习题3-15】求1+2+3+…+100;

【习题3-16】判断一个数n能否同时被3和5整除; 【习题3-17】将100~200之间的素数打印出来; 【习题3-18】求两个数m和n的最大公约数;

【习题3-19】求方程式ax2+bx+c=0的根(a、b、c从键盘输入)。 四、编写程序题 【习题3-20】有一函数

?x (x?1)

? y??2x-1 (1?x?10) ?3x-11 (x?100) ?

写一程序,输入x,输出y值。

【习题3-21】给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。

【习题3-22】企业发放的奖金根据利润提成。利润I低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000

要求:(1)用if语句编程序;(2)用switch语句编程序。 【习题3-23】输入4个整数,要求按从小到大的顺序输出。

【习题3-24】输入两个正整数m和n,求其最大公约数和最小公倍数。 【习题3-25】输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

【习题3-26】编写程序实现功能:输入整数a和b,若a2+b2>100,则输出a2+b2之和的百位以上的数字,否则直接输出a2+b2的和。

【习题3-27】编写程序判断输入的正整数是否既是5又是7的整数倍。若是则输出“yes”,否则输出“no”。

【习题3-28】编写程序实现功能:根据表3-1的函数关系,对输入的每个x的值,计算出相应的y值。

表3-1 习题3-28的函数关系 x y x<0 0 0

【习题3-29】编写程序实现,输入一个整数,判断它能否被3、5、7整除,并输出以下信息之一:

(1)同时被3、5、7整除;

(2)能被其中两个数整除(要指出是哪两个数); (3)能被其中一个数整除(要指出是哪个数); (4)不能被3、5、7中任意一个整数整除。 ? -1 (x<0) ?【习题3-30】用switch编程实现以下函数关系:y?? 0 (x=0) ? 1 (x>0) ?【习题3-31】编写程序,用switch实现:对于给定的百分制成绩,改成相应的A、B、C、D、E表示,90分以上为A,80~89为B,70~79为C,60~69为D,60以下为E。

【习题3-32】编写程序实现功能:输入一个复数,输出其共轭复数,如,输入2+3i<回车>,输出2-3i。

【习题3-33】求Sn=a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。

【习题3-34】求?n!(即求1!+2!+3!+4!+…+20!)。

n?120【习题3-35】求?k+?k+?2k?1k?1k?110050101k 。

【习题3-36】打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。

【习题3-37】每个苹果0.8元,的一天买了2个苹果;从第二天开始,每天买前一天的两倍,直到每天购买的苹果个数达到不超过100的最大值,编写程序求每天平均花多少钱。

【习题3-38】试编写程序,找出1~99之间的全部同构数。同构数是这样一组数,它出现在平方数的右边。例如,5是25的右边数,25是625的右边数,所以5和25都是同构数。

【习题3-39】假设x、y是整数,编写程序求xy的最后3位数,要求x、y从键盘输入。

【习题3-40】一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:

6 its factors are 1,2,3

【习题3-41】有一分数序列

21,

32,,,

3558138,

2113,…

求出这个数列的前20项之和。 【习题3-42】一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?

【习题3-43】猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少桃子。 *

*** 【习题3-44】编程打印出以下图案。

***** *****

**

*****

【习题3-45】用迭代法求x=a。求平方根的迭代公式为

xn+1=

12(xn+a/xn)

要求前后两次求出的x的差的绝对值小于10-5 。

【习题3-46】用牛顿迭代法求下面方程在1.5附近的根。 2x3-4x2+3x-6=0

【习题3-47】两个乒乓球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为X、Y、Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程序找出3对赛手的名单。

习题四

一、单项选择题

【习题4-1】一个C程序的执行是从 。

A) 本程序的main函数开始,到main函数结束

B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束

D) 本程序的main函数开始,到本程序文件的最后一个函数结束 【习题4-2】以下叙述正确的是 。

A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 B) 在C程序中,main函数必须位于程序的最前面 C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句

【习题4-3】以下叙述正确的是___________。

A)main函数不可以有返回值 B) main函数不可以有参数 C)函数可以有多个返回值 D)函数的形参可以是静态变量 【习题4-4】以下叙述正确的是___________。 A)void类型的函数体中不可以有return语句 B) void类型的函数体中可以有return语句

C) 函数体中不可以有多个return语句

D) 函数体中定义的变量名称与形式参数的名称可以相同 【习题4-5】以下叙述正确的是___________。

A)一个程序文件中定义的内部函数,其他文件可以调用它 B)一个程序文件中定义的内部函数,其他文件不可以调用它 C)不同文件中定义的内部函数不可以有相同的名称 D)函数的定义不能放在调用它的函数之后

【习题4-6】在由多个文件构成的C程序中,以下叙述正确的是________。 A)外部变量与局部变量不能同名 B)不同程序文件中可以定义相同名称的内部变量 C)只能把外部变量指定为静态存储方式 D)只能把局部变量指定为静态存储方式

【习题4-7】以下叙述正确的是___________。

A) 一个C程序必须由多个函数组成 B)一个C源程序必须包括宏命令

C)C源程序的宏命令以分号标明命令行的结束 D) C注释可以位于源程序的任意位置

二、判断题(正确用×错误用√标记)

【习题4-8】宏替换时先求出实参表达式的值,然后代入形参求值。 ( ) 【习题4-9】.在C语言中,函数不可以嵌套定义,但宏可以嵌套定义。( ) 【习题4-10】所有的递归问题都可以用非递归算法来实现。 ( ) 【习题4-11】在C语言中,不同函数体内定义的变量可以同名。 ( )

【习题4-12】多个文件组成的C语言程序,其中各个文件中可以定义同名函数。 ( )

【习题4-13】在C语言中,一个函数只能被它所在文件的其它函数调用,称之为内部函数。 ( )

三、阅读程序写结果或填空

【习题4-14】下列程序执行后的输出结果是_________。 int fun(int k) {static int s=0;

while(k>0) s=s+k--; return s; } main( ) { int s,t;

s=fun(4);t=fun(5);

printf(\}

【习题4-15】下列程序执行后的输出结果是_________。 #include \int a=0; main( ) {int i;

for(i=1;i<=3;i=i+1) { static int b=0;

int c=1; a++;b++;c++;

printf(\} }

【习题4-16】下列程序执行后的输出结果是_________。

#include \int func(int n) {int s;

if(n<=1) s=1;else s=2+func(n-1); return s; }

main( )

{ int k=1, s=0;

while(k<=4) {s=s+func(k);k++;} printf(\}

【习题4-17】下列程序执行后的输出结果是_________。 #define M(a,b) (a)>(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*x main() {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(\ }

【习题4-20】下列程序的输出结果是________? #define Tap(x) 2*x+1 main( )

{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(\ }

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+???+nXn

1 n=0

F(n,x)=

F(n-1,x)+n Xn n>0

【习题4-25】编写递归程序的输出如右所示的结果

* *** *****

【习题4-26】编写递归程序的输出杨辉三角形 (?1)【习题4-27】编写程序计算: S= ? 直到N!>106为止。

N!

【习题4-28】编写程序计算1~100之间的素数,并按照由大到小的次序输出。

N?1N?1习题五

一、单项选择题

【习题5-1】在C语言中,数组名代表了__________。

A) 数组的全部元素值 B)数组中第一个元素的值 C) 数组中元素的个数 D)数组中第一个元素的地址

【习题5-2】不能把字符串\赋予数组a的语句是_______ 。

A)char a[8]={'c','h','i','n','a'} B)char a[]=\

C)char a[8];a=\ D)char a[8];strcpy(a,\

【习题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(\C)scanf(\ D)gets(\

【习题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[]=\

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]={\

则数组c是 ⑴ 维数组,数组中共有 ⑵ 个元素,数组元素c[0][1]= ⑶ 。

【习题5-10】设有定义语句:

char s[15]={\

则表达式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;k<3;k++)

s=s+ ;

printf(\ }

【习题5-12】下面程序的功能是将一维整型数组a循环左移一位,第一个数据存放到最后。例如假设数组为3,7,2,6,5,9,则循环左移后数组变成7,2,6,5,9,3。请在划线处填上恰当的内容,以完成程序的功能。 #include main() {

int a[10],k,t;

for(k=0;k<10;k++) scanf(\ t= ⑴ ;

for(k=1;k<10;k++) a[k-1]= ⑵ ; a[9]= ⑶ ;

for(k=0;k<10;k++) printf(\ }

【习题5-13】下面程序功能是将数组a,b合并,且合并后的数组也是从小到大排序。请在划线处填上恰当的内容,以完成程序的功能。

#include main() {

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(i<7&&j<5) {

if(a[i]

}

if(i<7)

for(m=i;m<7;m++)

{ c[k]= ⑵ ;k++;}

else

for(m=j;m<5;m++) { c[k]=b[m];k++;}

for(k=0; ⑶ ;k++) printf(\ }

【习题5-14】阅读下面程序,写出运行结果。

#include main() {

int m,n;

for(m=1;m<6;m++) {

for(n=5;n>=m;n--) printf(\

for(n=1;n<=2*m-1;n++) printf(\printf(\

} }

【习题5-15】阅读下面程序,写出运行结果。 #include main() {

int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2;

for(i=0;i<=k;i++) for(j=0;j<=i;j++) n[j]=n[i]+1; for(i=0;i<=k;i++)

printf(\

printf(\ }

【习题5-16】阅读下面程序,写出运行结果。 #include main() {

int j,ch,a[8];

for(j=0;j<8;j++) a[j]=0; while((ch=getchar())!='\\n')

if(ch>='0'&&ch<='7') a[ch-'0']++; for(j=0;j<8;j++)

printf(\ }

程序运行时输入:12345678900987654321234806↙ 三、编写程序题

【习题5-17】已知整型数组a中有10个元素,整型数组b中有6个元素。编程将那些在数组a中而不在数组b的数据组成新数组c并输出。

【习题5-18】已知a是3×4的整型二维数组,编程求数组a中所有外围元素之和。

【习题5-19】不用strcmp函数,编程判断两个长度不超过20的字符串的大小:若第一个字符串大于第二个字符串输出1;若两个字符串相等输出0;否则输出-1。

【习题5-20】输入长度不超过20的字符串,编程判断其中字母的个数。

【习题5-21】已知整型数组a中有10个元素,编程将其中某个数k删除,输出删除后的数组。

习题六

一、选择题

【习题6-1】变量的指针,其含义是指该变量的________ A)值 B)地址

C)名 D)一个标志

【习题6-2】若有语句int *point,a; 则point=&a;中运算符&的含义是_____ A)位与运算 B)逻辑与运算 C)取指针内容 D)取地址

【习题6-3】若x是整型变量,pb是整型的指针变量,则正确的赋值表达式是

A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x 【习题6-4】下面程序段的运行结果是_________ char *s=\ s+=2;

printf(\

A)cde B)字符’c’ C)字符’c’的地址 D)无确定的输出结果 【习题6-5】设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是______

A)c=*p1+*p2; B)p2=c C)p1=p2 D)c=*p1*(*p2); 【习题6-6】若有定义语句 char a[]=\ char *p=\

则以下不正确的叙述是________. A)a+1表示的是字符t的地址

B)p指向另外的字符串时,字符串的长度不受限制 C)p变量中存放的地址值可以改变 D)a中只能存放10个字符

【习题6-7】若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___

A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j 【习题6-8】 设有如下定义:int (*ptr)( ); 则以下叙述中正确的是:

A)ptr是指向一维组数的指针变量 B)ptr是指向int型数据的指针变量

{

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];h[1].p=h;

printf(\,(h[1].p)->x); }

A) 2 3 B) 1 4 C) 4 1 D) 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(\}

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(\}

执行上述程序后的输出结果是________。 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(\} A) 4 B) 5 C) 6 D) 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{\C)enum a={\ 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&y D) x^y 【习题7-22】设 int b=8;表达式(b>>2)/(b>>1)的值是________。

A) 0 B) 2 C) 4 D) 8 【习题7-23】运行下面程序:

main() {

char x=034;

printf(\}

则输出结果是________。 A) 34 B) 70 C) 340 D) 034 【习题7-24】若定义unsigned int a=3,b=10;

printf(\|b==1); 则运行结果为________。

A)13 B)12 C)8 D)14 二、编程题

【习题7-25】编写程序。从键盘输入10本书的名称和定价,并存在结构体数组

中,从中查找出定价最高和最低的书的名称和定价,并打印出来。 【习题7-26】编写程序。设有以下结构体类型说明:

struct student {

char num[10],name[10]; float s[4]; double ave; };

要求:编写两个函数,函数fun1把10名学生放在一个结构体数组中。从键盘输入学生的学号、姓名和4门成绩,然后计算出平均分放在结构体对应的域中;函数fun2输出10名学生的记录。主函数调用函数fun1和函数fun2,不使用全局变量,函数之间的数据全部用参数传递。

【习题7-27】定义结构体类型complex表示复数,实数部分名为rp,虚数部分

名为ip,都用整型数表示。编写一套函数,实现复数运算,并用主函数调用这些函数。函数包括: (1)读一个复数;(2)输出一个复数;(3)计算两个复数的和与差。 【习题7-28】已有两个链表x和y,每个链表的结点包括学号和成绩,要求把两

个链表合并,按学号升序排列。 【习题7-29】解决百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值

钱一。百钱买百鸡,问鸡翁、母、雏各几只”。要求:用结构体数组记录所有的情况,并显示结果,请用指针方式操作。

习题八

一、单选题

【习题8-1】以读写方式打开一个已有的文件file1,下面有关fopen函数正确的

调用方式为________。

A)FILE *fp;fp=fopen(\ B)FILE *fp;fp=fopen(\; C)FILE *fp;fp=fopen(\ D)FILE *fp;fp=fopen(\【习题8-2】在C程序中,可把整型数以二进制形式存放到文件中的函数是

__________。

A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数

【习题8-3】函数调用语句fseek(fp,10,1)的含义是_______。

A)将文件指针移到距离文件头10个字节处 B)将文件指针移到距离文件尾10个字节处 C)将文件指针从当前位置后移10个字节 D)将文件指针从当前位置前移10个字节 【习题8-4】若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)

的返回值是_______。

A) EOF B) 0 C) 非零值 D) NULL 【习题8-5】在C语言中,用w+方式打开一个文件后,可以执行的文件操作是

________。

A)可任意读写 B)只读 C)只能先写后读 D)只写 【习题8-6】下面的程序执行后,文件test.txt中的内容是

#include

void fun(char *fname ,char *st) {

FILE *myf; int i;

myf=fopen(fname,\for(i=0;i

fputc(st[i],myf); fclose(myf); }

main() {

fun(\}

A) hello, B) new worldhello, C) new world D) hello,rld 【习题8-7】若要打开A盘上user1子目录下名为abc1.txt的文本文件进行读、

写操作,则正确语句是___。

A) fopen(\ B) fopen(\C) fopen(\ D) fopen(\【习题8-8】有以下程序

#include main() {

FILE *fp;

int i=10,j=30,k,n;

fp=fopen(\ fprintf(fp,\ fprintf(fp,\ fclose(fp);

fp=fopen(\

fp=fscanf(fp,\ printf(\ 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(\ 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程序设计”课程的成绩,并把这些信息保存到一个新文件中。

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

Top