C语言程序设计 浙江科学技术版习题参考答案--习题9
c语言程序设计教程习题答案
c语言程序设计教程习题答案C语言程序设计教程习题答案C语言是一门广泛应用于计算机科学领域的编程语言,它的学习对于想要从事软件开发或计算机科学研究的人来说是非常重要的。
在学习C语言的过程中,练习编写程序是必不可少的一部分。
本文将为大家提供一些C语言程序设计教程中常见习题的答案,希望能对大家的学习有所帮助。
1. 编写一个程序,计算并输出两个整数的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```2. 编写一个程序,判断一个整数是否为正数、负数或零。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num > 0) {printf("这是一个正数。
\n");} else if (num < 0) {printf("这是一个负数。
\n");} else {printf("这是零。
\n");}return 0;}```3. 编写一个程序,判断一个年份是否为闰年。
```c#include <stdio.h>int main() {int year;printf("请输入一个年份:");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { printf("%d年是闰年。
C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社
o t t f
n w h o
e o r u
\0 \0 e r
e \0
\0
st[3]+1
表达式:*(st+3)+1= st[3]+1, 这是一个地址值,即指向 st[3]字符串”four”的第 1 号字符’o’ 由于输出格式是字符串‘%s’, 所以输出的字符串是从 st[3]+1 这个地址开始,到遇见’\0’为止 (5)<略,不做要求> 3. /*填空题*/ (1) for (i=0; s[i]!=’\0’; i++) (2) void f( char *s 或 char s[] ) { int i=0; while(s[i]) i++; //令 i 指向字符串的最后一个有效字符, 即 while( s[i]!=’\0’) i++; for( ; i>=0; i- -) printf("%c", s[i]); //逆序输出 }
习题参考答案 习题一
1. /*在 C 语言中,下列标识符中哪些是合法的,哪些不合法?”*/ 合法:total, _debug, , begin_ 不合法:Large&Tall
2. /*写出流程图,求 1~100 中能被 6 整除的所有整数之和*/
3. /*写出源程序,求 1~100 中能被 6 整除的所有整数之和” 。*/ #include<stdio.h> void main() { int sum=0, i; for(i=1; i<=100; i++) if( i%6==0) sum =sum+i; printf(“sum=%d”, sum); }
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语言程序设计课后习题参考答案习题一一、单项选择题1、C2、B3、B4、C5、D6、A7、C8、A二、填空题1、判断条件2、面向过程编程3、结构化4、程序5、面向对象方法6、基本功能操作、控制结构7、有穷性8、直到型循环结构9、算法10、可读性11、模块化12、对问题的分解和模块的划分习题二一、单项选择题1、B2、D3、C4、B5、A6、A7、B8、C二、填空题1、主2、C编译系统3、结构化4、程序5、面向对象方法6、.OBJ7、库函数8、直到型循环结构习题三一、单项选择题1、D2、B3、A4、C5、A6、D7、B8、D9、B 10、C 11、A 12、D 13、C 14、B 15、C 16、A17、B 18、C 19、C 20、D 21、A 22、D 23、D 24、D、A25、D 26、A二、填空题1、补码2、10^-138~10^138、15~163、实4、单目运算符、自右向左5、函数调用6、65,89习题四一、单项选择题1、D2、C3、D4、A5、D6、B7、A8、C9、B 10、B二、填空题1、两, ;2、5.1690003、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车4、a=98,b=765.000000,c=4321.0000005、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车6、0,0,37、38、scanf(“%lf %lf %lf”,&a,&b,&c);9、13 13.000000 13.00000010、c=b-a;a=b+c;习题五一、单项选择题1、B2、D3、C4、B5、B6、D7、A8、B9、D二、填空题1、1 、02、k!=03、if(x>4||x<-4)printf(“%d”,x);else printf(“error!”);4、if(((x>=1&&x<=10)||(x>=200&&x<=210))&&(x%2!=0))Printf(“%d”,x);5、16、17、10!Right!8、a=09、2,110、0<a<b习题六一、单项选择题1、B2、C3、C4、B5、C6、B7、C8、A二、填空题1、无穷次2、83、204、115、3.66、*#*#*#$7、8 5 28、d=1.0 、k++、k<=n9、!(x<0)、x<amin习题七一、单项选择题1、B2、D3、C4、C5、A6、A7、D8、A二、填空题1、1 2 4 8 16 32 64 128 256 5122、a[age]++、i=18;i<263、break、i==84、a[i]>b[i]、i<3、j<55、b[j]=0、b[j]=a[j][k]习题八一、单项选择题1、B2、C3、C4、A5、A6、A7、C8、D9、D 10、B 11、A 12、C 13、A 14、C 15、B二、填空题1、return 1、return n+sum(n-1)2、return 1、n*facto(n-1)习题九一、单项选择题1、D2、C3、D4、A5、C6、C7、C8、C9、B 10、C 11、A 12、C 13、B 14、A 15、D 16、B17、C 18、A 19、B 20、C二、填空题1、int 、return z2、*p++3、’\0’、++4、p、max<*q、min>*q习题十一、单项选择题1、D2、D3、A4、5、B6、A7、C8、B9、D 10、11、C 12、D 13、D 14、C二、填空题1、34 122、ARRAY a[10],b[10],c[10];3、2 34、ab、cd5、(*b).day、b->day6、adabc defghi mnohi no7、(struct node *)、!=’\n’、p=top;8、p1=p1->next9、(struct list *)、(struct list *)、return (n)习题十一一、单项选择题1、A2、A3、B4、A5、B6、D7、B8、A9、A 10、B 11、B 12、B 13、C 14、C 15、D 16、A17、D二、填空题1、ASCII(文本)、二进制2、pf=fopen(“A:\\zk04\\data\\txfile.dat”,”w”);3、fputc()、fputs()、fscanf()、fread()4、(后两个空)文件结束符、非0值。
(完整版)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语言程序设计课后习题及答案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语言程序设计练习题(答案)
C语言程序设计练习题(答案)1.1上机实训项目实验1实验步骤1、进入VC环境从“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,这时进入VC集成环境的主菜单窗口,屏幕显示如图1_1所示。
图1-1 VC集成环境的主菜单窗口2、VC环境下C程序的编辑、连接和运行(1)新建一个源程序①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。
如图1-2所示图1-2 选择新建② 在弹出的新建对话框中设置好相应的内容,如图2-2所示。
要事先准备好保存文件的目录,例d:\lx 目录。
在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C 语言程序的扩展名“.c ”。
设置好后,单击“OK ”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c 文件存放在D 盘的LX 目录下。
图1-3 新建对话框的设置③ 在图1-4的工作区中,输入源程序2.设置源程序的文件名,扩展名一定要为“.c ”且一定要输入扩展名1.单击该处3.设置存放目录图1-4 输入、编辑源程序④输入源程序文件后可在主菜单栏中选择“文件”(FILE),并在其下拉菜单中选择“保存”(SAVE),如图1-5所示。
图1-5 保存源程序⑤源程序的编译如图2-6所示,单击主菜单的“编译”(Build),在其下拉菜单中选择“编译example.c”(Compile example.c),或者单击工具栏上的“编译”按钮,如图1-6所示。
在单击“编译”后,屏幕上会出现一个如图1-7所示的对话框。
内容是“This build command requires an activeproject worksapce,Would you like to create a default project worksapce?”,要创建一个默认的项目工作区,单击“是(Yes)”,表示同意,将开始编译;单击“No ”,表示不同意,将取消编译。
《C语言程序设计教程》习题参考答案
《C语言程序设计教程》习题参考答案默认分类2007-09-10 12:38:44 阅读6618 评论13 字号:大中小订阅【习题1】一、简答题(在课本中寻找答案,略)1.1 C程序的基本结构包括哪些内容?1.2 如何定义标识符?1.3 输入格式、输出格式的组成包括哪些内容?1.4 C语言函数分为哪两类?1.5 计算表达式的值应该考虑哪些方面?1.6 上机调试程序的步骤如何?二、判断并改错1.7 C程序执行的入口是main()函数,所以main函数必须放在程序的开头。
错误:main函数可以放在程序的任何位置。
并不限定在程序的开头。
1.8 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
错误:不可以交叉出现,数据说明部分在执行语句部分的前面。
1.9 编辑与编译不是一回事。
错误:不是一回事。
编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。
1.10 scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。
正确1.11 注释内容太多会影响程序的执行效率。
错误:不会影响程序的执行效率。
因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中。
1.12 所有的数学公式可以直接出现在源程序中。
错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。
三、编程题1.13 在屏幕上输出自己名字的拼音。
提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用printf()函数。
1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。
提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%.2f1.15 输入两个整数,输出其中最大者。
提示:模仿例1.31.16 输入三个整数,输出其中最小者。
提示: min(min(a,b),c);【习题2】一、简答题(在课本中寻找答案,略)2.1 常量与变量的区别?2.2 C语言中的标识符的定义规则?2.3 变量为什么要“先定义,后使用”?2.4 字符常量'a'与字符串常量"a"有何区别?2.5 大小写字母转换的规则是什么?2.6 变量的具有哪三种属性?二、单项选择题2.7C语言中,int型数据在内存中的存储形式是(D)。
C语言程序设计 浙江科学技术版习题参考答案--习题7
习题参考答案习题七1.选择题(1)A(g=p=&ch, 指针p是int型,不能指向字符变量ch),D(g=p,指针类型不同,不能互相赋值)(2)B(取地址运算&的后面只能跟变量,而x+1不是变量)(3) C(4)D(即输出m,n, m=m+n, m=m+n, 要注意的是,书中给出的答案中D是先输出m,n的初值,再输出m 更改后的值;但在VC中并不正确,实际运行结果是5 2 3 5,即先计算整个逗号表达式,即m增加两次,然后再输出m,n,m,m的值)(5)D(6)A(对指针直接赋用整数代表的绝对地址,在整数之前要加(指针类型*),即p=(int*) 0xfff )(7)D (相当于*&x就是x, 故D相当于p2=x)(8)B(p=&*&n~ p=&n√ ,但n=(*&)m×,因为单目运算符&*不能用()括起来,否则无操作数)2./*写程序段的输出结果*/(1)9,20,30(注意在调用函数change时,实参a是传地址&a, 在函数中对形参a的改动就相当于对实参a的改动,即a减1:10—>9;而实参b是传值,因此在函数change中对b增1,但回到主函数后,实参b的值不受其影响,仍保持为20;而main()中的c和change()中的c是不同的两个变量,在change中c的任何修改与main中的c无关。
) (2)Max=4,4,3(本题采用传值的方式Max(a,b) ,因此Max中对调形参a,b对实参x,y无影响)(3)Max=4, 3, 4(本题采用传地址的方式Max(&a,&b) ,因此Max中对调形参a,b所指变量的值,相当于对调实参x,y)(4)Max=4, 4, 3(本题采用传地址的方式Max(&a,&b) ,但Max中只是对调了形参指针a,b所指的变量,即令a指向y, b指向x, 但变量x,y的值未进行对调)(5)0012FF7C,7,5,15,12450680012FF7C(十六进制形式的绝对地址,对应的格式说明为”%p”,转成十进制等于1245052)——p ~&x: 变量x的地址;7——*p+2~x+2: 5+25——**&p~*(*&p)~*p~x :515——3**p~3*(*p)~3*x: 3*51245068——p+4,已知p=0x12ff7c=1245052, p是整型指针,每个整型变量占4个字节,p+4代表增加4个整型变量所占的空间4×4=16Bytes,故p+4=1245052+4*4=12450683./*内存变化图”。
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案
3. /*输入一个学生的数学成绩,低于 60,输出“Fail” ,否则,输出“Pass” 。*/ #include<stdio.h> void main() { double mark; //输入数序成绩 printf(" Input a mark:\n"); scanf("%lf", &mark);
5. /*输入 4 个整数 n, 输出最小值。*/ #include<stdio.h> void main() { int a,b,c,d, min; //输入 4 整数 printf(" Input number of integers n:\n"); scanf("%d%d%d%d", &a,&b,&c,&d);
s ( s a )( s b)( s c), where s
abc 2
源程序: #include<stdio.h> #include<math.h> void main() { double a, b, c, s, area, perimeter; //输入三条边 a,b,c printf(" Input three edges a b c:"); scanf("%lf%lf%lf", &a,&b,&c); //判断 a b c 是否构成三角形 if(a+b>c || a+c>b || b+c>a) { perimeter =a+b+c; s =perimeter/2; area =sqrt( s*(s-a)*(s-b)*(s-c) ); printf(“ area=%.2f, parameter=%.2f \n”, area, parameter); } else printf("These sides do not correspond to a valid triangle. \n"); }
C语言程序设计 浙江科学技术版习题参考答案--习题8
习题参考答案习题八1.选择题(1)28( 该结构变量的长度是三个分量的长度总和,其中int num占4字节,char name[20]占1×20字节,float score 占4字节,共4+20+4=28字节)(2)D(结构变量名.分量名)(3) D(4)D(5)C(6)A(结构变量可以互相复制,前提是赋值符号“=”的左、右均为同类型的结构变量。
C,D的错误在于‘=’的右边不是单个的结构变量。
而B错在两个结构变量不能直接用关系运算符‘= =’判断是否相等,正确的比较方法是逐个比较各分量,如果各分量的值均相等,则认为这两个结构变量是相等的)2./*写程序段的输出结果*/(1) 8 12(注1. 字符‘\t’是跳格符,即键盘上的Tab键。
注2. 运算符sizeof是计算数据类型的长度,表面上看结构类型struct s1和struct s2的长度是其分量的字节总和,即都是1+1+4=6。
然而,与其他类型不同,结构类型还存在“字节对齐”问题,即为了提高取数据的速度,C语言结构类型所占的字节数要比其分量字节的总和要大,在各分量之间会增加一些空的字节,使得总字节数成为最大分量长度的整数倍。
---在struct s1中,前两个分量char c1,char c2共占2B,而第3分量int n占4B,故在第2分量与第3分量之间增加2B,因此struct s1共占1+1+2+4=8B---在struct s2中,前1个分量char c1占1B,而第2分量int n占4B,故在第1分量与第2分量之间增加3B,同理,在第2分量与第3分量(char c2)之间也要增加3B,因此struct s2共占1+3+4+3+1=12B(2) 1 2 A B(3)83.4 833./*编写程序:建立10个学生的结构记录,包括学号、姓名、成绩,输出平均成绩”。
*/源程序://定义学生信息结构类型struct studentstruct student{int num;char name[20];int score;};#include<stdio.h>void main(){struct student s[10]; //定义结构数组s,用于存放10个学生的信息int i;double sum;//输入10学生的信息,并累加成绩sum=0;printf("Input 10 students' information:\n");for(i=0; i<2; i++){scanf("%d%s%d", &s[i].num, s[i].name, &s[i].score); //用%s输入字符串,字符串中不得有空格sum +=s[i].score;}//输出平均成绩printf("The average score is %f.\n", sum/10);}4./*建立通讯录结构,包括姓名、生日、电话号码和地址,编写函数,使记录按生日降序排列*/源程序://定义通讯信息结构类型struct addressstruct address{char name[20]; //姓名int year,month, date; //出生年,月,日int tel; //电话号码char addr[40]; //住址};//函数show:给定一个包含100条记录的通讯簿,按生日从大到小输出信息void show(struct address book[], int n) //注意:第1个形参是数组名[],不写数组长度,第2个形参n才是数组长度{int i,j,k;struct address temp;//用选择法对数组book中的0~n-1条记录排序,按出生年月日降序排列for( i=0; i<n-1; i++){k=i;for( j=i+1; j<n; j++){if(book[j].year>book[k].year) k=j; //情况1:比年份if(book[j].year==book[k].year && book[j].month>book[k].month) k=j; //情况2:年份相同,比月份if(book[j].year==book[k].year && book[j].month==book[k].month && book[j].date> book[k].date) k=j;//情况3:同年同月,比日期,记录大者}//交换通讯记录book[i] – book[k]temp=book[i];book[i]=book[k];book[k]=temp;}//输出排序后的通讯簿记录for(i=0; i<n; i++){printf("%d\n",i);printf("Name:%s\n", book[i].name);printf("Birthday: %d-%d-%d\n", book[i].year, book[i].month, book[i].date);printf("Tel:%d \n", book[i].tel);printf("Address:%s\n\n", book[i].addr);}}//主函数,题目未作要求#include<stdio.h>void main(){struct address b[100]; //定义结构数组b, 最多可存放100条记录int i,n; //n:实际的记录条数,由用户输入printf(“Input n:”); scanf("%d",&n);//输入n条记录的具体内容printf(“Input information\n”);for(i=0; i<n;i++)scanf("%s%d%d%d%d%s",b[i].name, &b[i].year, &b[i].month, &b[i].date, &b[i].tel, b[i].addr);//调用函数show(),按生日降序输出以上记录show(b,n);//注意:函数的第一个实参是数组名b,第2个实参是数组的实际长度n}。
(word完整版)C语言程序设计课后习题1-8参考答案
C语言程序设计课后习题1—8参考答案习题1参考答案一、简答题1、冯诺依曼计算机模型有哪几个基本组成部分?各部分的主要功能是什么?答:冯诺依曼计算机模型是由运算器、控制器、存储器、输入设备、输出设备五大功能部件组成的。
运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。
数据运算包括算术运算和逻辑运算。
控制器是计算机的指挥系统,计算机就是在控制器的控制下有条不紊地协调工作的.存储器是计算机中具有记忆能力的部件,用来存放程序和数据.输入设备是用来输入程序和数据的部件。
输出设备正好与输入设备相反,是用来输出结果的部件。
2、简述计算机的工作原理。
答:计算机的工作原理可简单地概括为:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。
整个过程由控制器进行控制。
3、计算机软件系统分为哪几类?答:软件内容丰富,种类繁多,通常根据软件用途将其分为两大类:系统软件和应用软件。
系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。
这类软件一般与具体应用无关,是在系统一级上提供的服务。
系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。
另一类是面向用户的软件,如各种语言处理程序(像BC、VC等)、实用程序、字处理程序等。
在操作系统的基础上运行。
4、什么叫软件?说明软件与硬件之间的相互关系。
答:软件是指计算机程序及有关程序的技术文档资料。
两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。
在不太严格的情况下,认为程序就是软件。
硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作.在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身,可以采用更加方便、更加有效地手段使用计算机。
C语言程序设计习题参考答案
C 语言程序设计习题答案习题一 C 语言程序设计概述一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2(5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4(9)结构化的程序设计P9二、简述题1. 设计程序时应遵循哪些基本原则?P4答:正确性、可靠性、简明性、有效性、可维护性、可移植性。
2. 算法的要素是什么?算法具有哪些特点?答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。
3. 算法的表示形式有哪几种?答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。
4. 有哪三种基本结构?答:三种基本结构是:顺序结构、选择结构和循环结构。
5. 传统流程图与N-S 流程图最大的区别是什么?答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。
三、用传统流程图、N-S 图分别表示求解以下问题的算法。
1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。
2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。
3. 求1+2+3+…+100的值。
4. 求1×2×3×…×10的值。
5. 求下列分段函数的值。
6. 求100~200之间的所有素数。
7. 求一元二次方程ax 2+bx+c=0的根。
分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。
四、注释下面C 程序的各个组成部分。
main() /*主函数 */{ /*程序开始 */int a,k,m; /*定义三个用来存放整数的变量 */a=10; /*将整数10赋值给变量a */k=2; /*将整数2赋值给变量k */m=1; /*将整数1赋值给变量1 */a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */printf("%d\n",a); /*在屏幕上打印出变量a 的值 */} /*程序结束 */习题二 数据类型、运算符与表达式一、选择题1~10:BCDCB DDBCA11~20: ADDAA DBADC21~28: DABAD CDD3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1<X<5) 6-3X (X ≥5)二、填空题1.字母L 或字母l2.字符或%c 、整数或%d3.在程序运行过程中,其值可以在一定的范围内变化的量。
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题4 课后答案
11. /* 用一张一元票换 1 分、2 分和 5 分硬币(至少各 1 枚) ,问有几种换法?各几枚?*/ #include<stdio.h> void main() { int x, y, z, count=0;
//x:1 分币 y:2 分币 z:5 分币
for (x=1; x<=100; x++ ) for (y=1; y<=100/2; y++ ) for (z=1; z<=100/5; z++ ) if( x+2*y+5*z==100){ count++; printf(“1: %3d, 2: %3d, 5:%3d \n”,x,y,z); } printf(“count=%d \n”, count); } 12. /*输出 1~10000 之间所有满足各位数字的立方和与它本身相等的数。如 153=1*1*1+5*5*5+3*3*3 . */ 算法分析:1. 函数分工:主函数 main()负责输入 m 和 n,用循环 for(i=m; i<=n; i++)…输出其中的数字立方和 等于本身的整数,为了判断整数 i 是否是满足该条件,需调用 is(i),; 函数 is(number)负责对 number 分解各个数 位上的数字,并求出这些数字的立方和 源程序: #include<stdio.h> int is(int number); void main() { int i, temp; for( i=1; i<=10000; i++) //输出 m~n 之间的数字立方和等于它本身的整数 printf("%6d", i ); if ( is(i) ) } //定义函数 is(number),判断整数 number 的数字立方和是否等于它本身,是则返回 1,不是则返回 0 int is(int number) { int sum=0,p, k ; p=number; //保存 number 的原值 //从低位到高位,逐个析解 number 各位上的数字,并求立方和 sum while (number!=0){ // 循环条件也可写为 number k= number%10; //k 是当前最低位上的数字 sum +=k*k*k; //累加立方和 number /=10; //调整 number,去掉最低位 } return (sum==p); //返回关系表达式 sum==p 的值,两者相等,返回 1, 不等则返回 0 }
《浙工大C语言课本习题答案》
《浙⼯⼤C语⾔课本习题答案》C程序设计习题参考答案习题⼀ (2)习题⼆ (3)习题三 (5)习题四 (8)习题五 (14)习题六 (17)习题七 (20)习题⼋ (26)习题九 (33)习题⼗ (35)习题⼗⼀ (36)习题⼀1. 填空题⑴计算机程序设计语⾔按其发展可分为三类,即机器语⾔、汇编语⾔和⾼级语⾔。
⑵ C程序是由函数构成的,⼀个C程序中⾄少包含 1个main函数。
因此,函数是C程序的基本单位。
⑶ C程序注释是由 /* 和 */ 所界定的⽂字信息组成的。
⑷函数体⼀般包括函数⾸⾏和函数体。
⑸在任何C程序中都必须且只能有⼀个主函数, 主函数名必须为 main 。
2. 判断下列各个叙述的正确与否⑴ C程序的执⾏总是从该程序的main函数开始,在main函数最后结束【√】⑵ C程序的注释部分可以出现在程序中任何位置,它对程序的编译和运⾏不起任何作⽤,但可以增加程序的可读性【√】⑶由“/*”与“*/”界定的注释必须在同⼀⾏【╳】⑷通过了编译、连接的程序就是正确的程序【╳】⑸有计算结果输出的程序⼀定是正确的程序【╳】⑹编译错误是语法错误,运⾏结果错误是逻辑错误【√】⑺编译时在信息窗⼝出现包含“error”的信息,说明程序存在警告性错误【╳】⑻源程序每次修改后,都必须重新编译、连接【√】3. 简答题⑴算法的含义、特点是什么?解答:算法是解题⽅法的精确描述。
有穷性、确定性、有多或零个输⼊、有1或多个输出、有效性。
⑵写出⼀个C程序的基本结构。
由编译预处理命令、注释、1个main和若⼲个⾃定义函数构成,函数格式如下:函数类型函数名(类型标识符形参,类型标识符形参,...){ 类型声明语句; 执⾏语句部分; }⑶写出在你使⽤的计算机系统上,进⼊C环境以及运⾏、调试程序的简要步骤。
⑷输⼊x后计算其正弦值的源程序如下。
编译信息是否表⽰有致命性错误?应如何修改?解答:致命性错误为第6⾏函数sin未声明,应加⼊编译预处理命令 #include4. 编程题⑴请上机调试、运⾏本章课本上C语⾔程序例题4~6(注释部分可以不必输)⑵仿照例6编程,输⼊两个变量后,输出其中较⼤的值。
《C语言程序设计教程》习题参考答案
《C语言程序设计教程》习题参考答案C语言程序设计教程习题参考答案1. 基本概念与数据类型1.1 什么是C语言程序设计?C语言程序设计是一种计算机编程语言,它是一种结构化,通用的程序设计语言。
1.2 C语言的主要特点有哪些?C语言具有代码简洁、执行速度快、可移植性好等特点。
1.3 C语言的数据类型有哪些?请简要介绍。
C语言的数据类型包括基本数据类型和派生数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型;派生数据类型包括数组、结构体、枚举和指针等。
2. 变量与运算符2.1 什么是变量?怎样定义和使用变量?变量是计算机内存中的一块存储空间,用于存储数据。
在C语言中,变量需要先定义后使用。
定义变量使用关键字"int"、"float"等,然后指定变量名,并可选地赋初值。
2.2 C语言中的运算符有哪些?请简要介绍。
C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符等。
算术运算符用于基本的数学运算;关系运算符用于比较两个变量的关系;逻辑运算符用于逻辑判断;赋值运算符用于将一个值赋给一个变量;位运算符用于对二进制数进行逐位操作。
3. 控制语句3.1 C语言中的条件语句有哪些?请简要介绍。
C语言中的条件语句包括if语句、switch语句等。
if语句用于根据条件执行不同的代码块;switch语句用于根据不同的表达式值选择不同的分支。
3.2 C语言中的循环语句有哪些?请简要介绍。
C语言中的循环语句包括while循环、do-while循环和for循环等。
while循环用于根据条件重复执行一段代码;do-while循环和while循环类似,但它会首先执行一次代码;for循环用于固定次数的循环。
4. 函数与数组4.1 什么是函数?怎样定义和调用函数?函数是一段完成特定任务的代码块,它可以接收输入参数,并返回一个值。
在C语言中,可以使用关键字"void"定义无返回值的函数,使用其他数据类型定义有返回值的函数。
C语言程序设计习题与参考答案
习题与参考答案第1章 C语言程序设计基础思考与练习一、填空题1、C程序是由构成的,一个C程序中至少包含。
2、C程序的注释是由和所界定的文字信息组成的。
3、开发一个C程序要经过编辑、、和运行4个环节。
4、C语言中,头文件的扩展名是。
5、C语言源程序的扩展名;经过编译后,生成文件的后缀是;经过连接后,生成文件的扩展名是。
二、简答题1、简述C语言程序的运行步骤。
2、软件编程中的可读性原则一般包括那些内容?3、什么是算法?算法的特点有哪些?4、参照本章例题,编写一个C程序,输出以下内容。
**************************************************Hello,world!**************************************************5、写出算法。
已知圆的半径,求周长和面积。
第1章思考与练习参考答案一、填空题1、函数、一个主函数main()2、/*、*/3、编译、连接4、.h5、.c、.obj、.exe二、简答题1、简述C语言程序的运行步骤。
答:(1)编辑C程序源文件;(2)编译,将编辑好的源程序文件“*.c”,翻译成二进制目标代码文件“*.obj”;(3)连接,将编译生成的各个目标程序模块和系统或第三方提供的库函数“*.lib”连接在一起,生成可以脱离开发环境、直接在操作系统下运行的可执行文件“*.exe”;(4)运行程序。
如果运行出错,这说明程序处理的逻辑存在问题,需要再次回到编辑环境针对程序出现的逻辑错误进一步检查、修改源程序,重复编辑→编译→连接→运行的过程,直到取得预期结果为止。
2、软件编程中的可读性原则一般包括那些内容?答:1.编程规范概要(1)程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。
(2)打算干什么,要简单,直截了当,代码精简,避免垃圾程序。
(3)尽量使用标准库函数和公共函数。
(4)不要随意定义全局变量,尽量使用局部变量。
书本习题参考答案VisualBasic程序设计基础浙江科技出版社陈庆章主编
《Visual Basic程序设计基础》教材习题参考答案第1章Visual Basic 6.0程序设计概述一、判断题1.√2.√3.×4.√5.×6.√7.×8.√9.√10.×11.√12.√13.×14.√15.×16.√17.√18.√19.√20.√二、选择题1. C2. B 3.D 4.C 5.B 6.A 7.D 8.A 9.B 10.A 11.C 12.D三、填空题1.对象、事件2.属性、方法、事件3.控件、屏幕(Screen)4.对象5.Left、Top 6.属性、<对象名>.<属性名>=<表达式> 7.网格8.F o rm19.Load或Initialize或Resize或Activate(自动执行的先后顺序也按此排列)10.Activate、Deactivate四、程序设计题程序1.界面设计参看图10-1、10-2以及表10-1。
表10-1 实例2各控件的主要属性设置过程设计如下:Private sub Form_Click()Command2.Enabled = FalseEen SubPrivate Sub Command1_Click()Label2.Visible = FalseLabel1.Caption = Text1.Text + ": 欢迎使用" + Label1.CaptionText1.Visible = FalseCommand1.Enabled = False: Command2.Enabled = TrueEnd SubPrivate Sub Command2_Click()EndEnd Sub程序2.界面设计略,过程设计如下:Private Sub Command1_Click() '字体变大Form1.FontSize = Form1.FontSize + 3Form1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command2_Click() '字体变小Form1.FontSize = Form1.FontSize - 3Form1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command3_Click() '字体加粗Form1.FontBold = TrueForm1.Cls: Print "欢迎使用VB"End SubPrivate Sub Command4_Click() '字体不加粗Form1.FontBold = FalseForm1.Cls: Print "欢迎使用VB"End Sub运行时,不得连续、过多次单击“字体变小”按钮,因为当FontSize属性值小于0会产生适时错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题参考答案 习题九1. 选择题(1) A D ( 在定义函数时不指定函数类型,若函数体中有返回语句return <表达式>, 则系统默认该函数为int 型;若函数体中无return 语句或return 之后无表达式,则系统默认该函数为void 型)(2) D (函数fun 的参数是按值引用的方式,在fun 中对形参c 赋值,即 c=a+b=2+3=5,但不会影响main 中的实参c 。
在main 中,c 无初值,调用函数fun 之后c 不改变,因此它的值无法确定)(3) A (if(n)相当于if(n!=0), 而f(n)是递归函数,其定义为(1),0()0,0f n n n f n n -+>⎧=⎨=⎩) (4) B (展开宏MA ,并用实参i 和i+1分别代替宏中的形参x,y, 得i=(i*i+1)-7= (5*5+1)-7=19 )2. /*指出下列函数定义中的错误*/(1)double sum( double x, y ) ------double sum(double x, double y)(注: 即使形参的类型相同,也必须各自说明)(2) 函数体内漏了关于变量h 的定义: int h;(注:i. 在函数中,除了定义在函数首部的形参之外,其他需要使用的变量必须遵循“先定义、后引用”的原则 ii. 由于本题中函数f 未指定函数类型,而函数体内有return h 语句,故系统把它默认为int 型,即返回值应该是int 型,所以变量h 作为被返回值,应定义为与函数类型一致的int 型。
--假如题目给定的fun 的类型是double 型,则应定义h 为double 型。
)3. /*填空题*/(1) 2分析: 变量x 是定义在函数f 中的局部变量;变量k 是定义在f 中的静态局部变量。
i= f( f(1) ),两次调用f(2) 5分析: 函数f(x)中出现了递归调用,语句是return ( (x>0)? f(x-1)+f(x-2):1 ); 该函数为1,0()(1)(-20x f x f x f x x ≤⎧=⎨-+>⎩),,即可改写: int f(int x){ int r;if(x<=0) r=1;else r=f(x-1)+f(x-2);return r;}故i=f(3) =f(2)+f(1) =[f(1)+f(0)]+[f(0)+f(-1)] ={[f(0)+f(-1)]+f(0)}+[f(0)+f(-1)] =1+1+1+1+1=5(3) 程序段Aint f(int n){ if(n<=1) return n;else return f(n-1)+f(n-2);}分析:函数f(n)中出现了递归调用,语句是return f(n-1)+f(n-2); 该函数为,1 ()(1)(-21n nf nf n f n n≤⎧=⎨-+>⎩),。
即数列0 1 1 2 3 5 8 13…。
程序B是普通函数,无递归调用, 需使用循环语句。
程序段Bint f(int n){ int t0, t1, t ; //定义函数的局部变量t0=1, t1=1, t=n;while( n>1){ //若n<=1,无需循环,直接返回t=nt=t0+t1; //f(n)=f(n-1)+f(n-2)t0=t1;t1=t;n--;}return t;}(4) /*下面程序计算计算并输出函数f(k,n)=1k+2k+…n k的值, 其中自定义函数power(m,n)的功能是求m n.sumr(m,n)的功能是求f(n,k) */# include <stdio.h>long sum(int k, int n);void main ( ){ int k,n;scanf(“%d%d”, &k,&n);printf(“f(%d, %.d)=%ld ”, k, n, sum(k,n));}long power(int m, int n){ int i;long r;for( i=1; i<=n; i++)r *=m ;return r;}long sum(int k, int n){ int i;double s=0;for(i=1; i<=n; i++)s +=power(i,k);return s;}4./*写出程序运行结果。
*/(1)fedcba注:字符串中的’<CR>’代表回车。
递归函数f的作用是将输入的字符串逆序输出(2) 4, 2, 8, 9#分析:本题考查局部变量、全局变量的作用域#include<stdio.h>func(int a, int b )int c,main(){cpa*b-1; //形参a=3//形参b=5a+b+1); //返回9}(3) -3完整的程序是:#include<stdio.h>#define A 10#define B (A<A+2)-2main(){printf("%d ", B*2);}对表达式B*2展开宏B, 得(A<A+2)-2*2, 再展开宏A(实为符号常量),得(10<10+2)-2*2. 括号部分为 1,即1-2*2 =-3.5./*编写函数:功能是对给定的3位数n,返回101~n之间的满足以下条件的整数的个数:是完全平方数(有整数平方根),且有两位数字相同,如144,676。
请同时编写主函数*/--函数分工:1)主函数main(): 输入3位数n, 调用统计函数count()2)统计函数count(): 统计101~n之间符合条件的整数的个数3)条件1函数cond1(): 对给定的整数k,判断它是否是完全平方数4)条件2函数cond2():对给定的3位数k,判断是否有两个数字相同源程序:#include<stdio.h>#include<math.h>int count(int n);void main(){int n;do{printf("Input n(102~999)");scanf("%d", &n);} while( n<102 || n>999);printf(" There are %d integers!\n", count(n) );}//函数cond1:判断整数k是否是完全平方数(条件1),是则返回1,否则返回0int cond1(int k){int root;root= sqrt(k); //由于root是int型,故只取平方根的整数部分if(root==sqrt(k))//sqrt(k)是double型,有可能带小数,若两者相等,说明k是完全平方数return 1;elsereturn 0;}//函数cond2:判断整数k是否含两位相同的数字(条件2),是则返回1,否则返回0int cond2(int k){int d1,d2,d3; //个、十、百位上的数字d1= k%10;d2= (k/10)%10;d3= k/100;if(d1==d2 || d1==d3 || d2==d3) return 1;else return 0;}//函数count: 统计101~n之间符合条件1和条件2的整数个数int count(int n){int i, num=0;for(i=101; i<=n; i++)if( cond1(i) && cond2(i) ) //也可写为if( cond1(i)==1 && cond(i)==1)num++;return num;}6. 完成下列程序,该程序用递归函数计算函数f(x,n)=x-x2+x3-…+(-1) n-1x n(n>0)算法分析:f(x,n)= x n=1 --递归出口f(x,n-1)+ (-1) n-1x n n>1 --递归式子每次新增项的绝对值部分为指数幂形式x n,既可以调用标准函数pow(x,n), 也可自行设计,参照题1;而正负号部分是(-1) n-1,可用标准函数pow(-1,n-1),或根据n的奇偶性进行判断:奇数取正号,偶数取负号# include <stdio.h>#include<math.h>double f(double x, int n);void main ( ){int n;double x;//输入实参x,nprintf(“Input x n:\n”);scanf(“%lf%d”, &x, &n);//调用并输出函数f(x,n)printf(“f(%.2f, %d) =%.2f \n”, x,n, f(x,n) );}double f(double x, int n){double r;if ( n==1 )r =x;elser = f(x, n-1) +pow(-1,n-1)*pow(x,n);return r;}7. 用递归函数计算Fibonacci数列,返回值为长整型,并写出相应的主函数分析:Fibonaci数列的定义f(x,n)= n n=0,1 --递归出口f(x,n-1)+ (-1) n-1x n n>1 --递归式子# include <stdio.h>long fib( int n);void main ( ){int i, n;printf(“Input n:\n”);scanf(“%d”, &n);//循环调用函数fib( i), 输出数列的前n项printf(“The Fibonacci numbers are: \n”);for(i=1; i<=n; i++)printf(“%ld “, fib(i) );}long fib( int n){long r;if ( n==0|| n==1 )r =n;elser = fib( n-1) +fib(n-2);return r;}8. 用递归方法实现对一个整数逆序输出,如输入1234,则输出4 3 2 1分析:(1)基本思想:本题应对整数从低位向高位处理。
递归函数show(int number)的递归出口是:若整数number 是1位数,即number<10, 直接输出该整数,否则先输出该整数的个位数(number%10),再递归调用show()以输出剩余部分(number/10)(2)主函数main()负责输入整数n;如果n为负,取相反数;调用函数show().# include <stdio.h>void show( int number);void main ( ){ int number;printf(“Input n:\n”);scanf(“%d”,&number);if(number<0) n umber=-number; //如果n为负,取相反数printf(“\n The reversed digits are: ”);show(number);printf("\n");}void show(int number ){if(number<10) printf(“%d”, number); //递归出口else{ //递归函数printf(“%d ”, number%10); //先输出最低的个位数show(number/10); //再递归处理前面的剩余部分}}思考题:如果要求按原序输出各位数字,如输入53968 输出 5 3 9 6 8 ,应如何修改递归函数show?用递归方法实现按原序输出正整数的各位数字,以53968为例,要处理53968,需要先处理前4位5396,再输出最后一位8 ;而处理5396,需要先处理前3位539,再输出最后一位 6 ;而处理539,需要先处理前2位53,再输出最后一位9 ;而处理53,需先处理前1位5,再输出最后一位 3 ;而处理5,由于已是1位数,直接输出 5即void show2(int number ){if(number<10) printf(“%d”, number); //递归出口else{ //注意以下两个语句段顺序与show()正好相反!show2(number/10); / /先递归处理前面的部分printf(“%d ”, number%10); //再输出最低的个位数}}9. 宏定义(注意末尾不加分号!)(1)#define max(a,b,c) a>b? (a>c? a:c): (b>c? b:c)(2)#define min(a,b) a<b? a:b(3)#define isalnum(c) c>=’a’&& c<=’z’ || c>=’A’&&c<=’Z’ || c>=’0’&&c<=’0’(4)#define isupper(c) c>=’A’&&c<=’Z’(5)#define islower(c) c>=’a’&&c<=’z’(6)#define isleap(y)y%4==0&&y%100==0 || y%400==0(7)#define PI 3.1415926#define cirfer(r) 2*PI*r10. 分别用函数和带参数宏实现从3个数中找出最大数,比较两者在形式与使用上的不同流程分析:函数:int max(int a, int b, int c) //函数首部,需要指定函数类型和参数类型{return a>b? (a>c? a:c): ( b>c? b:c);//函数体内用return语句返回最大值}带参数宏:#define Max(a,b,c) a>b? (a>c? a:c): ( b>c? b:c)// 对参数和返回值的类型无限制调用函数的主函数:#include<stdio.h>int max(int a, int b, int c);//函数声明void main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“Max=%d”, max(x,y,z));} #include<stdio.h>#define Max(a,b,c) a>b? (a>c? a:c): ( b>c? b:c)//宏定义void main(){ int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“Max=%d”, Max(x,y,z));}11. 三角形面积为2a b c area s ++==. a,b,c 是三角形的三条边。