C语言习题课

合集下载

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析1. 习题一:编写一个C程序,输出“Hello World!”。

解析:这是一个非常简单的C程序,只需要使用printf函数输出所需的字符串即可。

```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 习题二:编写一个C程序,计算两个整数的和并输出结果。

解析:这个程序需要使用scanf函数从用户输入中读取两个整数,并使用printf函数输出它们的和。

```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```3. 习题三:编写一个C程序,判断一个数是奇数还是偶数并输出结果。

解析:这个程序需要使用scanf函数读取用户输入的整数,并使用if-else语句判断该数的奇偶性,然后使用printf函数输出结果。

```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数");} else {printf("该数是奇数");}return 0;}```4. 习题四:编写一个C程序,判断一个年份是否为闰年并输出结果。

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析

c语言《程序设计基础》课后习题参考答案与解析《程序设计基础》习题参考答案与部分解析第1章 C 语言概述一、填空a) C源程序的基本单位是函数。

b) 一个C程序中至少应包括一个 main函数。

c) 在C语言中,输出操作是有库函数 printf( )函数完成。

二、单选题1、A2、C3、B解析:第1题答案:A 。

因为一个C程序总是从main函数开始执行的,而不论main函数在程序中的位置。

且到main函数结束。

第2题答案:C 。

因为 main函数没有限制必须位于程序的最前面。

C程序书写自由,一行内可写几个语句。

在对一个C 程序进行编译的过程中,无法检查注释当中的拼写错误。

不过C语言本身并没有输入输出语句,输入输出是由函数完成的。

第3题答案:B。

因为一个C语言程序是由若干个函数组成的。

但至少包含一个main 函数,且main函数的位置不限。

三、编程题1、编写一个输出“Welcome to C!”信息的小程序。

解:程序如下#include “stdio.h”main( ){1printf(“Welcome to C!”) ;}2、已知三角形的三边长分别为3,4,5,试用海轮公式编程求其面积。

海伦公式为:S?= ,其中s= (a+b+s)/2 ;解:程序如下#include “math.h”#include “stdio.h”main( ){int a , b , c ; /* a ,b,c 3个整型变量表示三角形的3条边。

*/float s ,s1 ; /* s1作为面积变量,s 作为中间变量是都应该是实形*/a=3 ; b= 4; c=5 ;s= (a+b+c)/2.0 ;s1= sqrt(s*(s-a)*(s-b)*(s-c)); /* sqrt函数完成开平方根功能。

*/printf(“area=%f\n”,s1);}2第2章程序设计基础知识一、单选题1、C2、A3、C4、A5、C6、C7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A 16、B 17 D解析:1. 答案:C。

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。

课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。

习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。

```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。

```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。

C语言课后习题参考答案(前5章)

C语言课后习题参考答案(前5章)

《C语言程序设计基础》书后习题参考答案(无编程题答案,红色为书上错误)第二章习题一、选择题。

1、在C语言中,要求参加运算的数必须是整数的运算符是()A)% B)/ C)!D)*2、若已定义x和y为double类型,则表达式“x=1.0,y=x+3/2”的值是()A)1 B)2 C)2.0 D) 2.53、若变量已正确定义并赋值,符合C语言语法的表达式是()A)a=a+7; B) a=7+b+c,a++ C) int (12.3/4 ) D) a=a+7=c+b4、若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为()A)1.0 B)1 C) 2.0 D)25、若x和n均是int型变量,且x的初值为12,n的初值为5 ,则执行表达式x%=(n%=2) 后x 的值为()A) 0 B)1 C) 2 D)36、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()A)7 B)8 C)9 D)107、指出下列哪一个选项的程序是错误的()A)#include<stdio.h> B) #include<stdio.h>void main( ) void main( ){int x,y,z; {int x,y,z;x=0;y=x+1; x=0,y=x+1;z=x+y; z=x+y;} }C) #include<stdio.h> D) #include<stdio.h>void main( ) void main( ){int x,y,z; {int x,y,z;x=0;y=x+1, x=0,y=x+1;z=x+y; z=x+y,} }8、若a为整型变量,则以下语句( )a=-2L;printf(“%d\n”,a);A)赋值不合法B)输出值为-2 C)输出为不确定值D)输出值为29、若变量a,i已经正确定义,且i已正确赋值,则合法的语句是()A)i=int(a) B) ++i; C)a=a++=5; D) a=int(i);10、若执行以下程序段后,c3的值为()int c1=1,c2=2,c3;c3=1.0/c2*c1;A)0 B)0.5 C)1 D)211、如下程序的运行结果是()#include<stdio.h>void main( ){ int y=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}A) 3 4 B) 4 2 C) 4 3 D) 3 312、以下程序的输入结果为()#include<stdio.h>void main( ){int i=4,a;a=i++;printf(“a=%d,i=%d’,a,i);}A)a=4,i=4 B)a=5,i=4 C)a=4,i=5 D)a=5,i=513、以下程序的输出结果是()#include <stdio.h>void main( ){ int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b?(a>c?a:c):( b); //多了(}A) 5 B) 4 C) 6 D) 不确定14、在C语言中,如果下面的变量都是int类型,则输出的结果是()sum=pad=5;pad=sum++,pad++,++pad;printf(“%d\n”,pad);A)7 B)6 C)5 D)415、已知int i;float f;,正确的语句是()A)(int f)%i; B)int(f)%i; C) int(f%i); D)(int)f%i;16、已知int j,i=1;执行语句j=-i++;后,j的值是()A)1 B)2 C)-1 D)-217、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是()A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=a*(a=3)18、C语言中运算对象必须是整型的运算符是( )A) %= B) / C) = D)<=19、有以下程序main(){ int m=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是( )A)12353514 B)12353513 C)12343514 D)1234351320、下面程序的输出结果是()#include<stdio.h>main( ){int x=5,y=3;printf(“%d\n”,y=x/y); }A)0 B)1 C)3 D)不确定的值21、执行下列程序中的输出语句后,a的值是()#include<stdio.h>void main( ){int a;printf(“%d\n”,(a=3*5,a*4,a+5)); }A) 65 B)20 C)15 D)1022、执行下列程序时输入1234567,程序的运行结果为()#include<stdio.h>main( ){int x,y;scanf (“%2d%2ld”,&x,&y);printf(“%d\n”,x+y); }A)17 B)46 C)15 D)923 、已知char a;int b;float c;double d; 则表达式a*b+c-d结果类型为()A) double B)int C)float D) char二、填空题1、若i为int整型变量且赋值为6,则运算i++后的表达式的值是__6__,变量i的值是___7___。

C语言课后习题的答案

C语言课后习题的答案
}
(2)
#include "math.h"
int isPrime(int n)
{
int i,rtn=1;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
rtn=0;
break;
}
}
return rtn;
}
int main(int argc, char* argv[])
n++;
else if((c>='A' && c<='Z') || (c>='a' && c<='z'))
m++;
else
other++;
c=getchar();
}
printf("字母的个数:%d\n数字的个数:%d\n其他字符的个数:%d",m,n,other);
{
int max,min,n,i;
scanf("%d",&n);
max=min=n;
for(i=1;i<=9;i++)
{
scanf("%d",&n);
if(n>max)max=n;
if(n<min)min=n;
}
printf("最大数为:%d\n最小数为:%d\n",max,min);
x=1;
y=n/2+1;

c语言基础习题课

c语言基础习题课

main()
{ int i,j;
static float score[NUM_std+1][NUM_course+1]={{78,85,83,65},
{88,91,89,93}, {72,65,54,75},
{86,88,75,60}, {69,60,50,72}};
for(i=0;i<NUM_std;i++)
}
பைடு நூலகம்
for(j=0;j<NUM_course;j++)
score[NUM_std][j] /= NUM_std;
/*求第j门课的平均成绩*/
/*输出表头*/
printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n");
/*输出每个学生的各科成绩和平均成绩*/
资料仅供参考 C 语 言 程 序 设 计
while(con_key=='\x20')
{ clrscr();
printf("输入第%2d个学生的成绩\n", i++);
printf("平时 实习 测验 期末成绩\n");
score[4]=0;
/* score[4]:存储总评成绩*/
for(j=0; j<4; j++)
{ scanf("%f",&score[j]);
{for(j=0;j<NUM_course;j++)
{ score[i][NUM_course] += score[i][j];/*求第i个人的总成绩*/
score[NUM_std][j] += score[i][j];/*求第j门课的总成绩*/

C语言章节习题集(全).docx

C语言章节习题集(全).docx

C语言程序设计第一、二章单项选择题1.将汇编语言编写的程序翻译成目标程序的程序是()A)解释 B)编译 C)汇编 D)目标2.不属于面向机器语言的是()A)符号语言 B)二进制语言 C)汇编语言 D)C 语言3.将高级语言编写的程序翻译成目标程序的程序是()。

A)解释 B)编译 C)汇编 D)二进制4.不属于高级语言的是()。

A)BASICB)CC)ALGOLD)符号语言5.程序段的基本结构中,不包含()。

A)函数结构 B)循环结构 C)顺序结构 D)分支结构6、C语言源程序的最小单位是()。

A、程序行B、语句C、函数D、字符7、以下说法正确的是()。

A、在C语言中,要调用的函数必须在main() 函数中定义B、C语言程序总是从第一个定义的函数开始执行C、C语言程序中, main() 函数必须放在程序的开始部分D、C语言程序总是从main() 函数开始执行8、以下对 C语言描述中正确的是()。

A、C语言源程序中可以有重名的函数B、C语言源程序中要求每行只能书写一条语句C、C语言源程序中,注释可以出现在任何位置D、最小的C源程序中没有任何内容9、对 C语言源程序执行过程描述正确的是()。

A、从main()函数开始执行,到main() 函数结束B、从程序的第一个函数开始执行,到最后一个函数结束C、从 main 函数开始执行,到源程序的最后一个函数结束D、从第一个函数开始执行,到 main 函数结束。

填空题1.能完成某个任务的、有始有终的 C语言 ___称为 C 程序。

2.用来编写程序的计算机语言称为 ____。

3.高级语言编写的程序称为 ____。

4.用C语言编写的源程序简称为“C程序”,扩展名规定为“____”。

5.C 程序经过“编译”后将获得扩展名为“OBJ”的 ____。

6.C 程序经过编译后获得的中间代码文件还需要经过____,才能成为可执行的“程序”,目标程序的扩展名规定为"EXE"。

C语言程序设计(习题课)

C语言程序设计(习题课)

结果:1
2013-7-10
20
结构化程序设计(续)
3) int x; for(x=10;x>3;x--) { if(x%3) x--;--x;--x; printf("%d" ,x);} 输出单精度、 双精度数据, 结果:7 4 隐含6位小数
4)执行语句for(i=1;i++<4;);后变量i的值 结果:5 5) 若x和y都是double型变量,且x的初值为3.0,y的初值为 2.0,则执行语句printf("%f",pow(y,fabs(x)))的结果
结果:8.000000
2013-7-10 21
结构化程序设计(续)
例26:按要求回答: 1)若输入字符'A',在以下while语句执行后ch的值为【 1 】 while(ch=getchar()=='A') ; 2)若float a,b,c;要通过语句: scanf("%f%f%f",&a,&b,&c);分别为a,b,c输入10,22,33, 以下 不正确的输入形式是【 】。 (1) 10.0 22 33 (2) 10.0,22.0,33.0
2013-7-10 25
结构化程序设计(续)
void main() { long s; int k,n; scanf("%d",&n); s= 【4】; for(k=1;k<=n;k++) s=s+【5】; printf("%ld\n",s); }
s=0; fun(k);
2013-7-10
26
பைடு நூலகம்
结构化程序设计(续)

C语言程序设计(习题课)

C语言程序设计(习题课)

数据类型、运算符和表达式
逻辑运算符 逻辑表达式结果取值1(表达式成 立)或者0(表达式不成立) 逻辑表达式参与运算的数据,非0 表示“真”,0表示“假” 优先级别:! && || &&和||运算的短路原则
如 int m=0,n=0; 执行(m-->=0)||(n++<0) 后,m,n的值是
数据类型、运算符和表达式

(1) {a=b};
(2) k=int(a+b); (3) k=a+b=c;

21
顺序结构程序设计
例6: 已知:int x=1,y=2,z; ;则z的值为【 】。 (1) 1 (3) 3 (2) 2 则执行:z=x>y?++x :++y
例7:若a和b为int型变量,则以下语句组的功能是【 】。 a+=b;b=a-b;a-=b;
条件运算符(表达式1?表达式2:表达式3) 运算规则 右结合性
数据类型、运算符和表达式
其他运算符
& * 强制类型转换(数据类型)表达式 sizeof( ) 长度运算符 [] , 顺序(逗号)运算符 逗号表达式:(表达式1 , 表达式2 ,
数据类型、运算符和表达式
例1:设a、b和c都是int型变量,且a=3,b=4,c=5,请计算下列表 达式的值。 A) a<b<c 1 B) a<=b 1 C) a||b+c&&b-c 1 D) !((a<b)&&!c||1) 0 例2:如果int a=1,b=2,c=3,d=4;则条件表达式 a<b? a:c<d? c:d 的值是【 1】。 (1)1 (2) 2 (3) 3 (4)

C语言课程习题

C语言课程习题

一、C语言程序设计(1)1.以下不能定义为用户标识符的是()。

A. ScanfB. voidC. _3com_D. int2.以下选项中可作为C语言合法整数的是()。

A. 10110BB. 0386C. 0XffaD. x2a23.十进制数127转换成二进制数是()。

A. 11111111B. 01111111C. 10000000D. 11111110【作业1】取一个整数a从右端开始的4~7位,并把值打印到屏幕。

【作业2】在程序中声明若干个整数变量、浮点数,并将它们以二进制,十进制的格式打印在屏幕上。

二、C语言程序设计(2)1.假定x和y为double型,则表达式x=2,y=x+3/2的值是()。

A. 3.500000B. 3C. 2.000000D. 3.0000002.以下合法的赋值语句是()。

A. x=y=100B. d--;C. x+y;D. c=int(a+b);3.设正x、y均为整型变量,且x=10 y=3,则以下哪个是语句的输出结果?(d )pprintf("%d,%d\n",x--,--y);A. 10,3B. 9.3C. 9.2D.10.2【作业1】根据某个抛物线的点的x值计算y值参考公式:y=x2+2x+1【作业2】a是一个浮点数,它可能取任意值,书写表达式,求X,如果A在0~10范围内,结果X的值就为A,如果A>10,X取10,如果A<0,X就取0。

三、流程控制语句1.选择题(单选题)1.在下面的语句中,不属于循环语句的是()A.if语句B.while语句C.do-while语句D.for语句2.执行下面的程序片段,变量a的值为()int a=3 ; if(a=5) a=4;A.3 B.4C.5 D.出现编译错误2.关于for语句,以下说法正确的是()for(表达式1;表达式2;表达式3)A.表达式1不能省略B.表达式2不能省略C.表达式3不能省略D.所有表达式都可以省略【作业1】计算1到100内所有偶数的和思路分析:偶数即能够被2整除的数,利用循环语句,进行相加【作业2】使用循环语句打印“*”组成一个菱形思路分析:可以用一个等差数列来计算每一行的“*”的数量四、数组1.选择题(单选题)1.以下定义语句中,错误的是()A.int a[]={1,2}; B.char a[3];C.char s[10]="test"; D.int n=5,a[n];2.以下数组定义中不正确的是()。

C语言习题课(附答案)

C语言习题课(附答案)

C语言习题课(附答案)C语言习题课一、单项选择题:1.以下A是C语言中有效的变量名称。

A._abc B.2abc C.char D.a#3变量名只能以下划线和字母开头2.下面四个说法中错误的是B。

A.for循环不仅可以和for循环嵌套,而且可以和While循环嵌套。

B.当在循环体内执行continue语句的时候,将结束整个循环。

C.while循环最少循环0次,do-while循环最少循环1次。

D.goto语句也可以实现循环的功能。

3.在while ( x )中的x与下面条件表达式等价的是DA.x = = 0 B.x= = 1 C.x! = 1 D.x ! = 04.为表示关系x≥y≥z,应使用C语言表达式AA.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)C.(x>=y>=z)D.(x>=y)&(y>=z)5.设有如下定义:int x=9,y=2,z;则语句printf(“%d\”,z= x/y);的输出结果是CA.1 B.4.5 C.4 D.3整形中的“/”是整除6.若有以下语句:static char x[ ]=”12345”;static char y[ ]={‘1’,’2’,’3’,’4’,’5’};则正确的说法是 B 。

A.x数组和y数组的长度相同B.x数组的长度大于y数组的长度C.x数组的长度小于y数组的长度D.x数组与y数组等价字符串后有一个“\\0”7.已知有定义:char ch;则下面正确的赋值语句为A。

A.ch='X' B.ch='55' C.ch="M" D.ch="55"8.以下说法中正确的是CA.C语言程序总是从第一个的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分9.C语言中,形参的缺省存储类型说明是: AA.autoB.staticC.registerD.extern10.C语言中的简单数据类型有: BA.整型实型逻辑型B.整型实型字符型C.整型字符型逻辑型D.整型实型逻辑型字符型11.以下程序段的输出结果是: CA.1 int x=3;B.3 0 do{C.1 -2 printf("%3d",x-=2);D.死循环 }while(!(--x));12.以下非法的赋值语句是: AA.n=(i=2,++i);B.j++;C.++(i+1);D.x=y>0;13.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是: DA.6.500000 B.6 C.5.500000 D.6.00000014.已知x=3,y=2,则表达式x*=y+8的值为: CA.3 B.2 C.30 D.10y+8是一个整体15.设x,y,z均为int型变量,则执行以下语句后,t的值为: Cx=y=z=1; t=++x||++y&&++z;A.不定值 B.2 C.1 D.016.为了测试字符串的实际长度,C语言规定了一个“字符串结束标志”,这个结束标志字符是: BA.‘\’ B.‘\\0’C.‘\\x’ D.‘\\9’17.C程序的三种基本结构是: AA.顺序结构、选择结构、循环结构B.逻辑结构、层次结构、网状结构C.顺序结构、逻辑结构、选择结构D.层次结构、顺序结构、循环结构18.若int i=10;执行完下面程序判断后,变量i的正确结果是D。

C语言程序设计习题课

C语言程序设计习题课

long fun(int n)
{ int j ; 【1】;
long s;
s= 【2】 ; 1
for(j=1;j<=n;j++) s= 【3】; s*j
return s;
}
何平 2024/10/1
25
构造化程序设计(续)
void main() { long s; int k,n;
scanf(“%d”,&n); s= 【4】; 0 for(k=1;k<=n;k++)
何平 2024/10/1
9
函数、数组及指针旳基本概念
2: 变 量 旳 作 用 域 、 存 储 类 型 ( 省 略 时 为 自 动 或 auto )、类型标识符、初始化等;
3:全局变量与局部变量同名时,应该怎样处理? 4:数组旳定义、初始化、引用,字符串旳处理函数 5:指针旳概念、指针变量旳定义;
何平 2024/10/1
何平 2024/10/1
11
函数、数组及指针旳基本概念
例7:若定义数组int a[]={1,2,3,4,5,6} ; ,则数组元 素a[a[3]]旳值为【 5 】。
何平 2024/10/1
12
函数、数组及指针旳基本概念
例8: 已知:char s[6],*ps=s;则正确旳赋值语句是【 】。 (1) *s="12345"; (2) ps="12345"; (3) *ps="12345"; (4) s="12345";
}
成果:a*b****
何平 2024/10/1
32
构造化程序设计(续)
练习:3.下列程序旳输出成果是【 】

c语言课后习题

c语言课后习题
13. a+=a;24, a-=2;10, a*=2+3;60, a%=(n%=2);0, a/=a+a;0, a+=a-=a*=a;0
14. 8
15. 2
习 题 3 (参考答案)
1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。
参考代码(尽量运用本章所学知识)
40.下列变量定义中合法的是( )。
A.float _a = 1?.1e?1; B.double b = 1 + 5e2.5;
C.long do = 0xfdaL; D.float 2_and = 1 ? e ? 3;
44.以下选项中不属于字符常量的是( )。
B D B B A C B A D D
二、填空题
1. 255
2. a/(b*c)
3. 20
4. 1.0
5. x==0或(x==0)?1:0
6. x<-5 || x>5
7. 97或字符 ‘a’
8. 0
9. 2.5
10. 3.5
11. 3
12. 9, 11, 9, 10
5.源程序执行过程中,有哪些步骤?
C语言源程序的执行要经过:编辑、编译、链接、运行等步骤。
6.简述MATLAB的主要应用领域有哪些?
MATLAB软件是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司开发的商业数学软件,主要包括MATLAB和Simulink两大部分。它和Mathematica、Maple并称为三大数学软件。MATLAB软件可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。

C语言课后习题答案(最终)

C语言课后习题答案(最终)

C语言课后习题答案(最终)第0章习题1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数:(1)128 (2)511 (3)1024 (4)65535 (5)1048575 答:(1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400(4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF2. 将下列二进制数转化为十进制数和十六进制数:(1)1100110101B (2)101101.1011B 答:(1)821、335 (2)45.6875、2D.B3. 写出下列数的原码、反码、补码:15、-20、-27/32 答:(1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.00101004. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少?答:5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。

答:结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。

如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么?答:0~65535、-128~127、-32768~32767C语言程序属于应用程序,程序代码本身存放在应用程序区,程序运行时处理的数据存计算机的内存空间主要分为3个区:系统程序区、应用程序区和数据区,其中数据区放在应用程序数据区。

习题课 数据结构(C语言版)

习题课   数据结构(C语言版)

习题课1. 设有数据结构(D,R),其中D={d1,d2,d3,d4},R={r},r={(d1,d2),(d2,d3),(d3,d4)}。

试按图论中图的画法惯例画出其逻辑结构图。

2. 假设n为2的乘幂,并且n>2,求下列算法的时间复杂度及变量count的值(以n的函数形式表示)。

int Time(int n){count=0;x=2;while(x<n/2){x*=2;count++;}return(count);}//time3. 简述以下算法的功能。

(1) Status A(LinkedList L) { //L是无表头结点的单链表if (L&&L->next){Q=L;L=L->next;P=L;while (P->next)P=P->next;P->next =Q; Q->next=NULL;}return OK;}//A(2) void BB(LNode *s,LNode *q){p=s;while(p->next!=q)p=p->next;p->next=s;}//BBvoid AA(LNode *pa,LNode *pb){//pa和pb分别是指向单循环链表中的两个结点BB(pa,pb);BB(pb,pa);}//AA4. 指出以下算法中的错误和低效(即费时)之处,并将它改写成一个既正确又高效的算法。

Status DeleteK(SqList&a,int i,int k){//本过程从顺序存储结构的线性表a中删除第i个元素起的k个元素if (i<1||k<0||i+k>a.length)return INFEASIBLE; //参数不合法else {for (count = 1;count <k;count++){//删除一个元素for (j = a.length;j>=i+1;j--)a.elem[j-1]=a.elem[j];a.length--;}return OK;}//DeleteK5. 已知指针la和lb分别指向两个无头结点单链表中的首元结点。

C语言程序设计课后习题1-8参考答案

C语言程序设计课后习题1-8参考答案

C语言程序设计课后习题1-8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。

运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。

数据运算包括算术运算和逻辑运算。

控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的。

存储器是计算机中具有记忆能力的部件,用来存放程序和数据。

输入设备是用来输入程序和数据的部件。

输出设备正好与输入设备相反,是用来输出结果的部件。

2、简述计算机的工作原理。

答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。

整个过程由控制器进行控制。

3、计算机软件系统分为哪几类答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。

系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。

这类软件一般与具体应用无关,是在系统一级上提供的服务。

系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。

另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。

应用程序是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须在操作系统的基础上运行。

4、什么叫软件说明软件与硬件之间的相互关系。

答:软件是指计算机程序及有关程序的技术文档资料。

两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。

在不太严格的情况下,认为程序就是软件。

硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作。

在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。

C语言课后习题及答案讲解

C语言课后习题及答案讲解

第一章一、选择题1.C/C++规定,在一个源程序中,main()函数的位置()。

CA.必须在最开始B.必须在最后C.可以任意D.必须在系统调用的库函数的后面2.以下()是C/C++合法的标识符。

AA.char2B.@xC.intD.7Bw3.下面的程序,对于输入:2 9 15,输出的结果是()。

B#include"iostream.h"void main(){int a;float b;cout<<"input a,b:"<<endl;cin>>a>>b;cout<<"a+b="<<a+b<<endl;}A.2B.11C. 26D.244. 在Visual C++中,打开一个项目只需要打开对应的项目工作区文件即可,项目工作区文件的扩展名为()。

CA.objB.dspC.dswD.cpp5.下面关于C语言与C++关系的说法中,()是正确的。

DA.C语言是C++的子集B.C++对C语言进行了改进C.C++和C语言都是面向对象的D.C++继承了C语言的众多优点6.设置一个断点的方法是将光标移到需要设置断点的行上,然后按()键。

AA.F9B.F10C.F11D.F127.下面关于编译预处理命令的说法中,正确的是()。

CA.一条文件包含命令能包含多个文件B.文件包含命令不可以嵌套使用C.编译预处理命令是在编译之前被处理的命令D.编译预处理命令中的“#”可以省略8.使用()可以设置数据输出的宽度。

BA.setbase(int n)B.setw(int n)C.setfill(int n)D.setprecision(int n)二、填空题1.C/C++程序是由一个或多个函数组成的,但必须要有一个()函数,程序从这个函数开始运行的。

main()2.C/C++字符集包括大、小写英文字母、()、()和包括运算符在内的特殊字符,程序中出现字符集以外的字符就是一个语法错误。

C语言教学习题课1

C语言教学习题课1

• • • • • • •
例3:输入单个字符 #include”stdio.h” main( ) { char c; c=getchar( ); putchar(c ); }
• • • • • • • • • • • •
例4:用*号输出字母C的图案。 1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 2.程序源代码: #include "stdio.h" main() { printf("Hello C-world!\n"); printf(" ****\n"); printf(" *\n"); printf(" * \n"); printf(" ****\n"); }
真 表达式

If (表达式)语句
语句
执行过程:如果表达式的 值为真时,则执行后面的 语句,否则不执行该语句。 直接执行if下面的语句。 实现 不对称分支结构
• • • • • • • • • • • •
例2:求较大数的平方值。 #include“stdio.h” main( ) { int a,b,s; printf(“input a,b:”); scanf(“%d,%d”,&a,&b); s=a; if(a<b) s=b; s=s*s; printf(“%d\n”,s); } 分析程序执行过程。
• 注意: 1. 条件执行语句中“else 语句2;”部分 是选择项, 可以缺省, 此时条件语句变成: if(表达式) 语句1; 表示。若表达式的值为非0,则执行语 句1 , 否则跳过语句1继续执行。 注:这是if语句的一种形式 •
• 2. 如果语句1或语句2有多于一条语句要执行时, 必须使用“{”和“}” 把这些语句包括在其中, 此时条件语句形式为: if(表达式) { 语句体1; } else { 语句体2; }

习题课 数据结构(C语言版)

习题课   数据结构(C语言版)

习题31. 设s='I AM A STUDENT',t='GOOD',q='WORKER'.求:StrLength(s),StrLength(t),SubString(s,8,7),SubString(t,2,1), Index(s,'A'),Index(s,t),Replace(s,'STUDENT',q),Concat(SubString(s,6,2),Concat(t,SubString(s,7,8))).2. 已知下列字符串a='THIS',f='A SAMPLE',c='GOOD',d='NE',b='',s=Concat(a,Concat(SubString(f,2,7),Concat(b,SubString(a,3,2)))), t=Replace(f,SubString(f,3,6),c),u=Concat(SubString(c,3,1),d),g='IS'v=Concat(s,Concat(b,Concat(t,Concat(b,u)))),试问:s,t,v,StrLength(s),Index(v,g),Index(u,g)各是什么?3. 试问执行以下函数会产生怎样的输出结果?void demonstrate( ){StrAssign(s,'THIS IS A BOOK');Replace(s,SubString(s,3,7),)'ESE ARE');StrAssign(t,Concat(s,'S'));StrAssign(u,'XYXYXYXYXYXY');StrAssign(v,SubSting(u,6,3));StrAssign(w,'W');printf('t=',t,'v=',v,'u=',Replace(u,v,w));}//demonstrate4. 假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址.已知A的起始存储位置(基地址)为1000,计算:(1)数组A的体积(即存储量);(2)数组A的最后一个元素a5,7的第一个字节的地址;(3)按行存储时,元素a14的第一个字节的地址;(4)按列存储时,元素a47的第一个字节的地址;5. 假设按低下标优先存储整数数组A9×3×5×8时,第一个元素的字节地址是100,每个整数占四个字节.问下列元素的存储地址是什么.(1) a0000(2) a1111(3) a3125(4) a82476. 按高下标优先存储方式(以最右的下标为主序),顺序列出数组A2×2×3×3中所有元素a ijkl,,为了简化表达,可以只例出(i,j,k,l)的序列.7. 设有上三角矩阵(a ij)n×n,将其上三角元素逐行存于数组B[m]中(m 充分大),使得B[k]=a ij且k=f l (i)+f2 (j)+c .试推导出函数f l, f2和常数c (要求f l和f2中不含常数项).8. 设有三对角矩阵(a ij)n×n,将其三条对角线上的元素逐行存于数组B[3][n]中,使的元素B[u][v]= a ij,试推导出从(i,j)到(u,v)的下标变换公式.9. 求下列广义表操作的结果:(1)GetHead【(p,h,w)】;(2)GetTail【(b,k,p,h)】;(3)GetHead【((a,b),(c,d))】;(4)GetTail【((a,b),(c,d))】;(5)GetHead【GetTail【((a,b),(c,d))】】;(6)GetTail【GetHead【((a,b),(c,d))】】;(7)GetHead【GetTail【GetHead【((a,b),(c,d))】】】;(8)GetTail【GetHead【GetTail【((a,b),(c,d))】】】;注意:【】是函数的符号.10. 利用广义表的GetHead和GetTail 操作写出如上题的函数表达式,把原子banana 分别从下列广义表中分离出来.(1)L1=(apple,pear,banana,orange);(2)L2=((apple,pear),(banana,orange));(3)L3=(((apple),(pear),(banana),(orange)));(4)L4=(apple,(pear),((banana)),(((orange)));(5)L5=((((apple))),((pear)),(banana),orange);(6)L6=((((apple),pear),banana),orange);(7)L7=(apple,(pear,(banana),orange));11. 按教科书5.5节中图5.8所示结点结构,画出下列广义表的存储结构图,并求它的深度.(1) ((( )),a,((b,c),( ),d),(((e))))(2) ((((a),b)),((( ),d),(e,f)))。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
AB↙ C)10 20 AB↙ D)10 20AB↙ 。 9.若定义 x 为 double 型变量,则能正确输入 x 值的语句是 A)scanf(“%f”,x); B)scanf(“%f”,&x); C)scanf(“ %lf”,&x); D)scanf(“%5.1f”,&x); 10.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 。 则下面描述中正确的是 A)while 循环执行 10 次 B)循环是无限循环 C)循环题语句一次也不执行 D)循环体语句执行一次 11.以下程序段的循环次数是 。 for (i=2; i= =0; ) printf(“%d”,i--) ; A)无限次 B)0 次 C)1 次 D)2 次 。 12.下面程序的输出结果是 #include<stdio.h> void main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { printf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421 。 13.下面程序的输出结果是 #include<stdio.h> void main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“ k=%d,m=%d”,k,m) ; } A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=5 。 14.若运行以下程序时,输入 2473↙,则程序的运行结果是 #include<stdio.h> void main ( ) { int c; while ((c=getchar( )) !=’\n’)

5
language[2]的值是 。 A)一个字符 B)一个地址 C)一个字符串 D)一个不定值 。 38.以下正确的叙述是 A)C 语言允许 main 函数带形参,且形参个数和形参名均可由用户指定 B)C 语言允许 main 函数带形参,形参名只能是 argc 和 argv C)当 main 函数带有形参时,传给形参的值只能从命令行中得到 D)若有说明: int main(int argc,char **argv),则 argc 的值必须大于 1 。 39.如下说明语句,则下面叙述不正确的是 struct stu { int a ; float b ; } stutype ; A)struct 是结构体类型的关键字 B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和 b 都是结构体成员名 。 40.C 语言结构体类型变量在程序执行期间 A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中 。 41.下面程序的运行结果是 #iunclude<stdio.h> void main ( ) { struct complx { int x; int y ; } cnum[2]={1,3,2,7} ; printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ; } A)0 B)1 C)2 D)6 。 42.若执行 fopen 函数时发生错误,则函数的返回值是 A)地址值 B)0 C)1 D)EOF 43.若以”a+”方式打开一个已存在的文件,则以下叙述正确的是 。 A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B)文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C)文件打开时,原有文件内容被删除,只可作写操作 D)以上说法都不正确 44.利用 fseek 函数可实现的操作是 。 A)改变文件的位置指针 B)文件的顺序读写 C)文件的随机读写 D)以上答案均正确 45.函数调用语句:fseek(fp,-20L,2)的含义是 。 A)将文件位置指针移到距离文件头 20 个字节处 B)将文件位置指针从当前位置向后移动 20 个字节 C)将文件位置指针从文件末尾向后退 20 个字节 D)将文件位置指针移到当前位置 20 个字节处

3
B) a 与 b 数组长度相同 C) a 与 b 数组都存放字符串 D) 数组 a 比数组 b 长度长 21.已知下列程序段: char a[3], b[]="Hello"; a=b; printf("%s", a); 。 则 A) 运行后将输出 Hello B) 运行后将输出 He C) 运行后将输出 Hel D) 编译出错 21.下列程序段的运行结果为 。 char a[]="continue", *p; p=a; while(*p!='i'){ printf("%c", *p-32); p++; } A) continue B) CONTINUE C) CONT D) contINUE 22.若有下列定义: int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[3]=x; 。 则能够正确表示数组元素 a[1][2]的表达式为 A) *(*(p+1)+2) B) *((*p+1)[2]) C) *(*(p+5)) D) *((*p+1)+2) 23. 若有说明 int a[3][4];则 a 数组元素的非法引用是 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 24.若调用一个函数,且此函数中没有 return 语句,则正确的说法是 A)该函数没有返回值 B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 。 25.以下不正确的说法是 A)实参可以是常量,变量或表达式 B)形参可以是常量,变量或表达式 C)实参可以为任意类型 D)如果形参和实参的类型不一致,以形参类型为准 26.C 语言规定,函数返回值的类型是由 决定的。 A)return 语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数类型 27.以下正确的描述是 。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套
8.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的值分别为 10,20,A 和 B,当从第一列开 始输入数据时,正确的输入方式是 。 int a1,a2; char c1,c2; scanf(“ %d%d”,&a1,&a2); scanf(“ %c%c”,&c1,&c2); A)1020AB↙ B)10 20↙
C 语言习题课 一、选择题 1.以下叙述不正确的是( )
A.一个 C 源程序可由一个或多个函数组成 B.一个 C 源程序必须包含一个 main 函数 C.C 程序的基本组成单位是函数 D.在 C 程序中,注释说明只能位于一条语句的后面 2.C 语言规定:在一个源程序中,main 的位置( ) A.必须在最开始 C.可以任意 B.必须在系统调用的库函数后面 D.必须在最后
6.在 C 语言中,要求运算数#43; C.!= D.%
7.判断字符型变量 c1 是否为小写字母的正确表达式为( ) A.’a’<=c1<=’z’ C. (‘a’>=c1)||(‘z’<=c1) B.(c1>=a)&&(c1<=z) D. (c1>=’a’)&&(c1<=’z’)
3.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( ) A.7 C.6 B.8 D.2
4.下面四个选项中,均是合法的用户标识符的选项的是:( ) A. A B. float C. b-a D. _123 p_o lao goto temp INT do _A int
5.表达式 18/4*sqrt(4.0)/8 值的数据类型为( ) A.float C.double B char D.不确定

4
D)函数的定义和函数的调用均可以嵌套 28.已知一个函数的定义如下: double fun(int x, double y) { …… } 则该函数正确的函数原型声明为: A)double fun (int x,double y) B)fun (int x,double y) C)double fun (int ,double ); D)fun(x,y) ; 。 29.以下程序的运行结果是 #include<stdio.h> #define ADD(x) x+x void main ( ) { int m=1,n=2,k=3,sum ; sum = ADD(m+n)*k ; printf(“%d\n”,sum) ; A)9 B)10 C)12 D)18 。 30.下面能正确进行字符串赋值操作的是 A)char s[5]={“ ABCDE”}; B)char s[5]={‘A’,’B’,’C’,’D’,’E’}; C)char *s ; s=”ABCDE” ; D)char *s; scanf(“%s”,s) ; 。 31.下面程序段的运行结果是 char *s=”abcde” ; s+=2 ; printf(“ %s”,s); A)cde B)字符’c’ C)字符’c’的地址 D)不确定 。 32.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是 A)s 和 p 完全相同 B)数组 s 中的内容和指针变量 p 中的内容相等 C)s 数组长度和 p 所指向的字符串长度相等 D)*p 与 s[0]相等 。 33.下面程序段的运行结果是 char a[ ]=”language” , *p ; p=a ; while (*p!=’u’) { printf(“%c”,*p-32); p++ ; } A)LANGUAGE B)language C)LANG D)langUAGE 34.若已定义 char s[10];则在下面表达式中不表示 s[1]的地址是 。 A)s+1 B)s++ C)&s[0]+1 D)&s[1] 35.若有定义:int a[5],*p=a;则对 a 数组元素的正确引用是 。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2) 36.若有定义: int a[2][3];则对 a 数组的第 i 行第 j 列元素值的正确引用是 A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j 37.若有说明:char *language[]={“ FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};则
相关文档
最新文档