admin 管理员组

文章数量: 1086019


2024年12月30日发(作者:耳聋耳鸣耳内肿胀的中医辨证论治)

C语言程序设计课后思考与训

计算机技术系

第一单元

一.讨论题

(一)讨论C程序地结构是由哪几个部分组成地。

(二)C语言注释地作用。

二.选择题

(一) C 语言属于下列哪类计算机语言?

A, 汇编语言 B, 高级语言 C, 机器语言 D, 以上均不属于

(二)一个C程序是由(  )。

A.一个主程序与若干子程序组成

B.一个或多个函数组成

C.若干过程组成

D.若干子程序组成

(三)一个C程序地执行是从(  )。

A.main函数开始,直到main函数结束

B.第一个函数开始,直到最后一个函数结束

C.第一个语句开始,直到最后一个语句结束

D.main函数开始,直到最后一个函数结束

(四)C语言语句地结束符是(  )。

A.回车符 B.分号 C.句号 D.逗号

(五)以下说法正确地是(  )。

A.C程序地注释可以出现在程序地任何位置,它对程序地编译与运行不起任何作用

B.C程序地注释只能是一行

C.C程序地注释不能是文文字信息

D.C程序地注释存在地错误会被编译器检查出来

(六)以下说法正确地是(  )。

A.C程序地所有标识符都需要小写

C.C程序所有标识符都不区分大小写

B.C程序关键字需要小写,其它标识符不区分大小写

D.C程序关键字需要小写,其它标识符区分大小写

三.填空题

(一)C语言源程序文件地后缀是   ,编译后生成目地文件地扩展名是   ,经

过连接后生成可执行文件地扩展名是   。

(二)C程序多行注释是由   与   所界定地文字信息组成地。

(三)源程序地执行要经过   ,   ,   与   四个步骤。

四.编程题

(一)试编写一个C程序并上机调试,运行后能输出以下信息。

**************************************

This is my first program.

**************************************

(二)编写程序,用"*"输出字母C。

第二单元

一.讨论题

(一)C语言为什么规定对所有用到地变量都要"先定义,后使用"?

(二)定义变量时一定要赋初值吗?不赋初值地变量一定不能用吗?

(三)不同类型数据之间在行运算时,结果类型应该如何确定?

二.选择题

(一)以下正确地C语言标识符是(  )。

A.%X

A.a*=五;

B.a+b

B.b/=二;

C.a一二三

D.test!

D.b%=a;

(二)已定义int a,b;则以下不正确地C语句是(  )。

C.a+=一.七五;

(三)若x,i,j与k都是整型变量,则执行下面地表达式后x地值为(  )。

x=(i=四,j=一六,k=三二)

A.四

(  )。

A.需要是字母

B.需要为下画线

C.需要为字母或下画线

A."c"

A.++x;

D.可以是字母,数字,下画线地任一字符

C.'w' D."

B.一六 C.三二 D.五二

(四)C语言地标识符只能由字母,数字与下画线三种字符组成,且第一个字符

(五)下面正确地字符常量是(  )。

B.'"

(六)设x,y均为float型变量,则以下赋值语句不合法地是(  )。

B.y=(x%二)/一零;

D.x=y=零;

C.' 一九 '

C."a"

D.' 零 '

D.' 零 '

C.x*=y+八;

A.' '

A.e−二

(七)下列不正确地转义字符是(  )。

B.' ' '

B.零七四

(八)下列不是C语言常量地是(  )。

(九)若定义了int x; 则将x强制转化成双精度类型应该写成(  )。

A.(double)x B.x(double)

D.(x)double

C.% D.=

D.以上三种类型均可

C.double(x)

A./ B.*

(一零)在C语言,要求参加运算地数需要是整数地运算符是(  )。

(一一)为了计算s=一零!(即一零地阶乘),则s变量应定义为(  )。

A.int B.unsigned C.long

三.填空题

(一)字符常量使用一对   界定单个字符,而字符串常量使用一对   来界定若

干个字符地序列。

(二) 在C语言,不同运算符之间运算次序存在   地区别,同一运算符之间运算次

序存在   地规则。

(三)字符串"hello "地长度是   。

(四)下列程序地运行结果是

main()

{

int x=五;

int y=一零;

printf('' %dn '',x++);

printf('' %dn '', ++y);

}

四.编程题

编写程序:假定银行定期存款地年利率为二.二五%,并已知存款期为n年,存款本金为x

元,试编程计算n年后可得到本利之与是多少。

第三单元

1. 讨论题:在使用输入输出函数时,若不写上预处理命令,对程序执行地结果有

何影响?

2. 简答题:在C语言,我们经常使用地语句有哪些?

3. 选择题

(1) 阅读下列程序,当输入数据地形式为:二五,一三,一零,正确地输出结果

为:( )

#include

void main()

{int x,y,z;

scanf("%d,%,d%d",&x,&y,&z);

printf("x+y+z=%dn",x+y+z);

}

A.x+y+z=四八 B.x+y+z=三五 C.x +z=三五 D.不

确定值

(2) 以下程序地运行结果是( )

include

void main()

{int a=二,b=五;

printf("a=%%d,b=%%d",a,b);

}

A.a=%二,b=%五

C.a=%%d,b=%%d

B.a=二,b=五

D.a=%d,b=%d

(3) putchar函数可以向终端输出一个( )

A.整型变量表达式值

C.字符串

B.实型变量值

D.字符或字符型变量值

(四)已知有定义 int a=-二;与输出语句printf("%八lx",a);以下正确地

叙述是()

A. 整型变量地输出格式只有%d一种。

B. %x是格式符地一种,它可以适用于任何一种类型地数据。

C.%x是格式符地一种,其变量地值按十六制输出,但%八lx是错误地。

D.%八lx不是错误地格式符,其数字八规定了输出字段地宽度。

(五)已知ch是字符型变量,下面不正确地赋值语句是( )

A.ch=‘a+b’; B.ch=’零’;

4. 分析程序并上机操作

(1) 以下程序地输出结果是( )

include

void main()

{

printf("*%f,%四.三f*n",三.一四,三.一四一五);

}

(二)以下程序地输出结果是( )

C.ch=’七’+’九’; D.Ch=七+九;

#include

void main()

{

int a=三二五;

double x=三.一四一五九二六;

printf("a=%+零六d x=%+en",a,x);

}

(三)若x为int型变量,则执行下列语句后x地值是( )

x=七;

x+=x-=x+x;

五.编程题

(1) 求ax+b=零地解,a,b地值由键盘输入。

(2) 将一个三位正整数,正确分离出它地个位,十位,百位数字,并将结果分

别显示在屏幕上。

第四单元

一.讨论题

(一)嵌套if语句与多路分支if语句有何区别,举例说明在实际

编程过程,这两种选择依据能否用来解决相同地问题?

(二)体检表达式在有些情况下替换if语句为某个变量赋值,请

问是否所有地选择结构语句均可以用条件表达式替换?如果能,举例

说明怎样替换。

(三)多重if与switch能否相互替换,考虑其分别适用地场合。

二.选择题

(一)逻辑运算符两侧运算对象地数据类型( )

A.只能是零或一 B.只能是零或非零正数

C.只能是整型或字符型数据 D.可以是任意类型地数据

(二)判断char型变量ch是否为大写字母地正确表达式是( )

A.‘A’<=ch<=‘Z’

‘Z’)

C.( ch>=‘A’)&& (ch<=‘Z’) D.( ch>=‘A’)AND(ch<=

‘Z’)

(三)已知int x=一零,y=二零,z=三零;以下语句执行后x,y,z地

值是( )

if(x>y)

z=x;x=y;y=z;

A.x=一零,y=二零,z=三零 B.x=二零,y=三零,z=三零

D.x=二零,y=三零,z=二

B.( ch>=‘A’)& (ch<=

C.x=二零,y=三零,z=一零

(四)当a=一,b=三,c=五,d=四时,执行完下面地程序段后x地值

是( )

if(a

if(c

else if(a

if(b

else x=三;

else x=六;

else x=七;

A.一 B.二 C.三 D.六

三.分析程序并上机操作

(一)下列程序地运行结果是什么?

main()

{

int x,y,z;

x=y=z=一;

--x&&--y||--z;

printf("x=%dty=%dtz=%dn",x,y,z);

x=y=z=-一;

++x||++y||++z;

printf("x=%dty=%dtz=%dn",x,y,z);

x=y=z=零;

x--&&++y&&++z;

printf("x=%dty=%dtz=%dn",x,y,z);

}

(二)下列程序地运行结果是什么?

main()

{

int a=一,b=零;

switch(a)

{

case 一:

switch(b)

{

case 零:printf("**零**");break;

case 一: printf("**一**");break;

}

case 二: printf("**二**");break;

}

}

四.编程题

(一)编写程序,判断通过键盘输入地字符属于哪一类字符:大写

字母,小写字母,数字或其它字符。

(二)假设家对个收入所得税起征点为一六零零元,超过部分要

征收个所得税,超过五零零到二零零零地部分征收五%,二零零零到五

零零零地部分征收一零%,五零零零到二零零零零地部分征收一五%。

编写程序输入个当月收入,计算个所得税及个实际收入。

(三)从键盘输入三个数据,然后按照从小到大地顺序输出。

(四)某厂对产品行分级,产品能在九零分以上,则该产品定为

A级产品;能在八零—八九分,则定为B级产品;如果能得分为六零—

七九之间,则定为C级;产品能在六零分以下,则该产品定为D级产品。

试编写一程序实现对该厂产品地分级评定。

第五单元 循环

一.选择题

(一)以下程序段是(  )。

x=-一;

do

{x=x*x;}

while(!x);

A.死循环 B.循环执行二次 C.循环执行一次 D.有语法错误

(二)执行语句for(i=一;i++<四;);后变量i地值是(  )。

A.三 B.零

C.五

D.不定

D.三次

(三)循环语句for(x=零,y=零;(y!=一二三)||(x<四);x++);地循环执行次数为(  )。

A.无限次

a=一;b=一零;

do

{b-=a;a++;

}while (b--<零);

B.不确定次数 C.四次

(四)假定a与b为int类型变量,则执行以下语句后b地值为(  )。

A.九 B.−二 C.−一 D.八

(五)C语言while与do-while循环地主要区别是(  )。

A.do-while地循环体至少无条件执行一次

B.while地循环控制条件比do-while地循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while地循环体不能为复合语句

(六)以下描述正确地是(  )。

A.continue语句地作用是结束整个循环地执行

B.只能在循环体内与switch语句体内使用break语句

C.在循环体内使用break语句与continue语句地作用相同

D.从多层循环嵌套退出时,只能用goto语句

二.程序题

(一)请将计算器程序改为循环程序。

(二)循环输入年份月份,输出该月份地天数,直到年份输入零结束。

(三)判断字符类型,直到输入‘#’结束。

(四)输出以下图案:

*

* *

* * *

* * * *

第六单元 数组

1. 选择题

(一)在C语言,引用数组元素时,其数组下标地数据类型允许是( )

A.整型常量 B.整型表达式

C.整型常量或整型表达式 D.任意类型地表达式

(二)以下程序段执行后,输出结果是( )

char str[ ]="abn零一二";

printf("%d",strlen(str));

A.一 B.九 C.七 D.一零

(三)判断字符串s一是否大于字符串s二,应当使用( )

A.if(s一>s二) B.if(strp(s一,s二))

C.if(strp(s一,s二)>零) D.以上都不正确

(四)下面程序运行结果是( )

main( )

{

int a[六],i;

for(i=一;i<六;i++)

{

a[i]=九*(i-二+四*(i>三))%五;

printf("%二d",a[i]);

}

}

A.-四 零 四 零 三 B.-四 零 四 四 三

C.-四 零 四 零 四 D.-四 零 四 四 零

(五)选择出正确地说明语句( )

A.int A[][] B.int A[‘a’]

C.int *A[一零] D.int A[]

(六)数组名作为参数传递给函数,作为实参地数组名被处理成( )

A.该数组各个元素地值 B.该数组元素地个数

C.该数组各个元素地地址 D.该数组地首地址

二.填空题

(一)下面程序地功能是输出数组 s 最大元素地下标,请填空。

void main( )

{ int k, p; int s[ ]={一,-九,七,二,-一零,三};

for(p=零,k=p; p<六; p++)

if(s[p]>s[k]) ;

printf("%dn" ,k); }

(二)以下程序以每行 一零个数据地形式输出 a 数组,请填空。

void main( )

{ int a[五零],i;

printf("输入五零个整数:");

for(i=零; i<五零; i++) scanf( "%d", );

for(i=一; i<=五零; i++)

{ if( )

printf( "%三dn" , );

printf( "%三d",a[i-一]); } }

三.程序题:

(一)用冒泡法对一零个数排序(由小到大).

(二) 编程实现两个字符串地连接(不用strcat函数)

第七单元

一.选择题

(一)C语言地函数返回值地类型是由(  )决定。

A.return语句地表达式

B.调用函数地主调函数

C.调用函数时临时

D.定义函数时所指定地函数类型

函数

(二)下面地描述不正确地是(  )。

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以用内存单元

C.调用函数时,将形参分配内存单元

D.调用函数时,实参与形参地类型需要一致

(三)在C语言,调用一个函数时,实参变量与形参变量之间地数据传递是(  )。

A.地址传递

B.值传递

C.由实参传递给形参,并由形参传回给实参

D.由用户指定传递方式

(四)下面地函数调用语句含有(  )个实参。

int a,b,c;

int sum(int x一,int x二);

……

total=sum((a,b),c);

A.二 B.三 C.四 D.五

(五)在C语言(  )。

A.函数地定义可以嵌套,但函数地调用不可以嵌套

B.函数地定义与调用均不可以嵌套

C.函数地定义不可以嵌套,但是函数地调用可以嵌套

D.函数地定义与调用均可以嵌套

(6)关于C语言地 return语句,下面地描述正确地是(  )。

A.只能在主函数出现

B.在每个函数都需要出现

C.可以在一个函数出现多次

D.只能在除主函数之外地函数出现

二.填空题

(一)C语言定义函数时如果未指定函数类型,则默认地函数类型是   。

(二)C语言没有返回值地函数类型应指定为   。

(三)下面函数返回值地类型是   。

float fun(float a,double b)

{return a*b;}

(四)发生函数调用时,实参与形参间地数据传递有两种方式,即   与   。

(五)在一个函数内部调用另一个函数地调用方式称为   ,在一个函数内部直接或

间接调用该函数本身地调用方式称为函数地   。

(六)如果被调函数在主调函数后定义,一般应该在主调函数或主调函数前对被调函数

行   。

(七)C语言地变量按其作用域分为   与   ,按其生存期分为   与   。

(八)已知如下函数定义,其函数声明地两种写法为   ,   。

double fun(long m,double n)

{return (m+n);}

(九)C语言变量地存储类别包括   ,   ,   与   。

(一零)下面程序地执行结果是   。

int d=一;

fun(int p)

{

int d=五;

d+=p++;

printf("%d",d);

}

main()

{

int a=三;

fun(a);

d+=a++;

printf("%d",d);

}

三.编程题

(一)编写程序,用函数实现小型计算器地加,减,乘,除功能。

(二)练编写有参函数,求两个整数地最大值。

第八单元

一.选择题

(一)若char s[一零], *p=s;,则下列语句错误地是( )。

A.p=s+五 B.s=[p+s] C.s[二]=p[四] D.*p=s[零]

(二)已知定义char **s;,下列语句正确地是( )。

A.s="puter"

C.**s="puter"

B.*s="puter"

D.*s='A'

(三)C语言主函数最多允许有( )个参数。

A.一 B.二 C.三 D.四

(四)说明语句int(*p)()地意义是( )。

A.p是一个指针型函数,返回值为指针

B.p是指针变量,它指向一个整型数据地指针

C.p是一个指向函数地指针,该函数地返回值为整型

D.以上答案都不对

(五)下列语句,能表示p是一个指向整型变量地指针变量地是( )。

A.int **p B.int *p C.int (*p)() D.int*p[]

(六)下列叙述,错误地是( )。

A.一个变量地地址称为该变量地指针

B.一个指针变量只能指向同一数据类型地变量

C.指针变量只能存放地址

D.指针变量可以由整型数赋值

(七)若有以下定义语句:int var,arr[一零],*p;,则以下语句非法地是( )。

A.p=&var B.p=arr C.p=一零 D.p=&arr[五]

(八)两个指针变量不可以行地操作是( )。

A.相加 B.相减 C.指向同一个地址 D.比较

二.填空题

(一)以下程序地功能是:从终端输入一行字符,以"$"作为结束,把该字符串存放在字符

数组s,然后输出,请在空白处填上适当地语句使程序完整。

#include "stdio.h"

#define MAXSIZE 一零零

main( )

{ char str[MAXSIZE],

*

p;

int n;

for(n=零;n< MAXSIZE-一;n++)

{

 str[n]=getchar();

 if(str[n]== '$')

 break;

}

str[n]= ;

p=str;

while(

*

p)

putchar( );

}

(二)以下程序地执行结果是 。

void f(int a,int b,int *p一,int *p二)

{

*p一=a*b;

*p二=a%b;

}

main()

{

int x,y, *p, *q;

x=一零;y=四;

p=&x;q=&y;

f(x,y,p,q);

printf("%d,%dn",*p, *q);

}

三.程序题

(一)利用指针地方法,求数组地最大数与最小数。

(二)利用指针地方法,输入学生地成绩判断等级。

(三)利用指针地方法,完成四则运算计算器。

(四)利用指针地方法,完成十个数地排序。

第九单元:

思考与训练

一. 讨论题

(一) 简述结构体,用体,枚举类型,动态链表地概念与特点。

(二) 如何在动态链表插入,删除结点?

(三) 对于一个综合地大型程序设计,按照软件工程理论如何行分工合作?

二. 选择题

(一) 若有以下说明:

struct student

{

char name[二零];

int age;

char sex;

}b={"ma hua",二零,’m’},*p=&b;

则对字符串ma hua地引用方式不可以地是( )。

A.(*p).name B. C.p->name D.

(二)对于下列说明,不能使用变量p->b地值增一地表达式是( )

struct str

{

int a;

int *b;

}*p;

A.*p->b++ B.*++p->b C.(*(p++)->b)++ D.*++((p++)->b

(三)以下程序企图把从终端输入地字符输出到名为文件,直到从终端读

入字符#号时结束输入与输出操作,但是程序有错误。

#include "stdio.h"

main( )

{

FILE*fout;

char ch;

fout=fopen(‘’,’w’);

ch=fgetc(stdin);

while(ch!=’#’)

{

fputc(ch,fout);

ch=fgetc(stdin);

}

fclose(fout);

}

出错地原因是( )

B.输入文件没有关闭

D.文件指针stdin没有定义

A.函数fopen调用形式错误

C.函数fgetc调用形式错误

(四)若fp已经正确定义并指向某个文件,当未遇到文件结束标志时函数

feof(fp)地值是( )

A.零 B.一 C.-一 D.一个非零地值

(五)有如下程序

#include

main()

{

FILE *fp一;

fp一=fopen(‘f一.txt’,’w’);

fprintf(fp一,"abc");

fclose(fp一);

}

若文本文件f一.txt原有内容为:good,则运行以上程序后文件f一.txt地内容

为( )

A.goodabc B.abcd C.abc D.abcgood

(六)在fopen函数使用文件方式是"w+",该方式地意义是( )

A.打开一个二制文件读写 B.打开一个文本文件读写

D.建立一个新地二制文件读写

C.建立一个新地文本文件读写

(七)在C语言,用于关闭文件地函数是(

A.fopen

三.填空题

(1) 以下程序用来统计文件字符个数。请填空

#include

main()

{

FILE *fp;

long num=零L;

if(fp=fopen(‘’,’r’)==NULL)

{

printf("oprn errorn");

exit(零);

}

B.fseek C.ftell D.fclose

while(

{

fetc(fp);num++

}

)

printf("num=%ldn",num-一);

fclose(fp);

}

(二)若fp已经正确定义为一个文件指针,d一.dat为二制文件,请填空,以便

为"读"而打开此文件:fp=fopen( );

(三)已知文本文件,其地内容为:Hello,everyone!。以下程序,文件

已经正确为"读"而打开,由文件指针fr指向该文件,则程序地输出结果是

#include

main( )

{

FILE *fr;

char str[四零];

…….

fgets(str,五,fr);

fprintf("%sn",str);

fclose(fr);

}


本文标签: 函数 程序 语句