浙江大学c语言颜辉
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语言程序设计实验与习题指导颜晖答案【篇一:c语言程序设计谭浩强版何钦铭颜晖版习题答案全集】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf(\n);for(i=1;i5;i++) /*以下为三重循环*/for(j=1;j5;j++)for (k=1;k5;k++){if (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/printf(%d,%d,%d\n,i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(i)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf(%ld,i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i=100000)bonus=i*0.1;else if(i=200000)bonus=bonus1+(i-100000)*0.075;else if(i=400000)bonus=bonus2+(i-200000)*0.05;else if(i=600000)bonus=bonus4+(i-400000)*0.03;else if(i=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf(bonus=%d,bonus);}-----------------------------------------------------------------------------【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
浙江大学c语言课件第十章(颜辉)

如:fp = fo文pe件n("使a.用da方t",式"r"() ASCII码文件):
▄ 作用:
“r” 仅从已建立的文件读取数据
1 2
在 在磁 内盘 存中中中找开“到辟w5文”1件2个仅a.把字da数节t 据的写缓到冲一区个新,建并文由件
fp指示文件缓冲“区a”起始仅位把数置据写到已建立的文件 3 把首块512字节数据:磁盘 缓冲器
文件类型
文件指针变量
▄C语言中允许同时使用多个文件,每个文件 都有各自的缓冲区,用不同的文件指针分别指 示。
问题:如何使fp与具体文件挂钩?
文件的打开
文件打开
以后程序只对文件指针
使文件指针与相进应行文操件作实,体即对用应f起p代来表磁盘
▄ 格式:
文件。
fp=fopen(“文件名”,“文件使用方 式”)
cw={hf时ifglp当eeu,t(ctffce(pc(fo!acp=f指,a(Eff)pp;向OabF))文;)=件=非末零尾 c=fgetc(fpa); }
{ printf("cannot close file a.dat!"); exit(0); }
if (fclose(fpb))
fclose(fp) = 0 正常 / 1 有错
文件
512字节
内存单元 用什么标内识存单元
文件名
文件
文件类型指针
▄使用一个文件指针,来指示文件缓冲区中具
体读写的位置。
文件指针变量
▄文件指针定义: FILE *fp ;
文件类型
数据 ……
fp 缓冲器
程序控制 ……
512字节
由操作 系统自 动完成
C5c语言第五章(颜晖)

表达式 非0
语 句
0 非0
语 句
exp3
exp1; while(exp2){ 语句; exp3; }
while 和 for
while 和 for
exp1; while(exp2{ 语句; exp3; }
for (exp1; exp2; exp3) 语句; sum=0; for(i=1; i<=10; i++) sum=sum+i i++
例T1-2 求1+1/2+1/3+……+ 1/n
算法: i =1 to n
s=s+t t++
i++
算法: i =1 to n s=s+t t=1.0/i i++
程序段: s=0; for(i=1; i<=n; i++) s=s+1.0/i;
例T1-3 求1-1/2+1/3-1/4+…… 1/n
sum=0; i=1; while(i<=10){ sum=sum+i; i++; }
sum+10 —> sum sum=sum+?
循环不变式
for 语句
exp1
for (exp1; exp2; exp3) 语句;
exp2
0
非0
循环条件
语 句
循环体
exp3
while (表达式) 语句;
for (exp1; exp2; exp3) 语句;
i =1 to n s=s+t t=1.0/i i++
浙江大学颜晖主讲C语言程序设计课件

–普通字符原样输出
普通字母数字及符号
转义字符 \n , \t
输出: X=34,Y=3.14
x=34; y=3.14;
printf(" X = %d, Y = %f ", x, y);
基本最输好入直输接了出当函:数
}
求阶乘函数 例6 输入m, n 计算min!t和fanct!( int k ) /* 函数定义 */
{ int i, y = 1; # include <stdio.h>
void main( )
for(i = 2; i <= k; i++)
{
y = y*i; /* 计算 k! */
int m, n, resm, resn; return y;
• C语言程序设计,何钦铭主编,人民邮电出 版社,2003
• C程序设计(第二版),潭浩强等,清华大 学出版社,1999
上机要求
– 禁做与课程学习无关的事情(如上网聊
天、游戏等)
– 看懂编译信息,逐步学会各种调试方法
Chap 1 用C语言编写程序
程序设计语言的发展 C语言特点 C程序结构 基本的输入输出
int value1, value2, sum;
printf("Input 2 numbers:\n");
输入提示
scanf("%d%d", &value1, &value2); 读入2个数
sum=value1+value2;
printf("%d+%d=%d \n", value1, value2, sum);
c语言程序设计实验与习题指导颜晖答案

c语言程序设计实验与习题指导颜晖答案C语言程序设计实验与习题指导C语言作为一门广泛应用于软件开发、嵌入式系统和科学计算领域的编程语言,是计算机科学与技术专业学生的必修课程之一。
在学习C语言的过程中,实验与习题是非常重要的环节,通过实践与思考,学生能够更好地理解和掌握C语言的基本概念和编程技巧。
本文将对C语言程序设计实验与习题进行一些指导和答案解析,帮助学生更好地完成相关任务。
一、实验指导1. 实验一:Hello World程序Hello World程序是C语言程序设计的入门级实验,通过编写一个简单的程序,输出"Hello World"这个经典的字符串,学生可以初步了解C语言的基本语法和程序结构。
以下是一个示例代码:```c#include <stdio.h>int main() {printf("Hello World\n");return 0;}```在这个程序中,`#include <stdio.h>`是一个预处理指令,用来包含标准输入输出库的头文件。
`int main()`是程序的入口函数,`printf("Hello World\n");`用来输出字符串,`\n`表示换行。
`return 0;`表示程序正常结束。
2. 实验二:变量与运算实验二主要涉及变量的定义与使用,以及基本的算术运算。
以下是一个示例代码:```c#include <stdio.h>int main() {int a = 10;int b = 5;int sum = a + b;int product = a * b;float average = (float)(a + b) / 2;printf("The sum is %d\n", sum);printf("The product is %d\n", product);printf("The average is %.2f\n", average);return 0;}```在这个程序中,`int a = 10;`和`int b = 5;`分别定义了两个整型变量a和b,并赋予初始值。
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语言程序设计(何欣铭、颜晖 第2版)课后习题答案

14
62
函数的概念
C语言中有两种类型函数
简单总结本节内容。 使学生了解自定义函数编程结构,能够模 仿编程即可。
标准库函数 自定义函数
函数可以做到一次定义、多次调用 使用自定义函数的程序框架
double fact(int n); int main(void) { …… result = fact(i); …… } /* 定义求 n! 的函数 */
1.3 习题参考答案
1 .对 C 语言来说,下列标识符中哪些是合法的,哪些是不合法的? t o t a l ,_ d e b u g ,L a r g e & T a l l ,C o u n t e r 1 ,b e g i n _ 解答:L a r g e & T a l l 不合法, 其余都合法。 2.改写本章 1.4 节中的流程图 1.2,求 1~100 中能被 6 整除的所有整数的和。 解答:
39
C语言程序的调试、运行步骤
编辑 编译 连接 运行
开始
源程序 .c / .cpp
目标程序 .obj
可执行程序 .exe
结果
语法 错误
连接 错误
运行 错误
修改程序,观察语法错误、逻辑错误及改 正方法。 ² 语法错误:可以删除一个分号,使编 译出现错误提示,改正之,再编译。 类比写文章有错别字。 ² 逻 辑 错 误 : 将 sum=sum+i 改 为 sum=sum-i,编译、连接、运行,发现 运行结果不符合题目要求。找出错误 (调试) ,改正之,再编译、连接、运 行,看结果。类比写文章词不达意。
输入n
i = 2
假
i<=n/2?
真 真
n能被 i整除?