c程序设计语言 练习1-6,C程序设计语言:第一章练习
练习1-1 在你自己的系统中运行”hello,world“程序。再有意去掉部分内容,会看到什么出错信息。
练习1-2 做个实验,当printf函数的参数字符串中包含\c(其中c是上面的转义字符序列中未曾列出的某一个字符)时,观察一下啊情况。
warning C4129: “c”: 不可识别的字符转义序列
练习1-3 修改温度转换程序,使之能在转换表的顶部打印一个标题。
#include
int main()
{
float fahr, celsius;
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
fahr = lower;
printf(" Fahr Celsius\n");
while (fahr<=upper)
{
celsius = 5 * (fahr - 32) / 9;
printf("%3.0f\t%6.1f\n", fahr, celsius);
fahr = fahr + step;
}
getchar();
}
练习1-4 编写一个程序打印摄氏温度转换为相应华氏温度的的对照表。
#include
int main()
{
float fahr, celsius;
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
celsius= lower;
printf(" Celsius Fahr\n");
while (celsius<=upper)
{
fahr = celsius * 9 / 5 + 32;
printf("%3.0f\t%6.1f\n", celsius, fahr);
celsius = celsius +step;
}
getchar();
}
练习1-5 修改温度转换程序,要求以逆序(即按照从300度到0度的顺序)打印温度转换表。(尝试用for语句)
#include
int main()
{
float fahr, celsius;
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
printf(" Fahr Celsius\n");
for (fahr = lower; fahr <= upper; fahr = fahr + step)
{
printf("%3.0f\t%6.1f\n", fahr, 5 * (fahr - 32) / 9);
}
getchar();
}
练习1-6 验证表达式getchar()!=EOF的值是0还是1。
#include
int main()
{
int c;
while (c=(getchar()!=EOF))
{
printf("%d isn't EOF\n", c);
}
printf("%d is EOF", c);
getchar();
}
练习1-7 编写一个打印EOF值的程序。
#include
int main()
{
printf("%d is EOF", EOF);
getchar();
}
练习1-8 编写一个统计空格、制表符、换行符个数的程序。
#include
int main()
{
int c, row_num, blank_num, t_num;
row_num = blank_num = t_num = 0;
while ((c=getchar())!=EOF)
{
switch (c)
{
case '\n':
row_num++;
break;
case ' ':
blank_num++;
break;
case '\t':
t_num++;
default:
break;
}
printf("row_num:%d,blank_num:%d,t_num:%d\n", row_num, blank_num, t_num);
}
}
练习1-9 编写一个将输入复制到输出的程序,并将其中连续多个空格用一个空格代替。
#include
int main()
{
int a,b;
while ((a=getchar())!=EOF)
{
if (a == ' '&& b==' ') //如果发现a为空格,且排在后面的b也为空格则直接跳过该a
{
continue;
}
else
{
b = a;
}
printf("%c", b);
}
}
练习1-10 编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,并把回退符替换为\b,并把反斜杠替换为\。这样可以将制表符和回退符以可见的方式显现出来。
#include
int main()
{
int c;
while ((c=getchar())!=EOF)
{
switch (c)
{
case '\t':
printf("\\t"); //putchar()一次只能输出一个字符不好实现效果
break;
case '\b':
printf("\\b");
break;
case '\\':
printf("\\\\");
break;
default:
break;
}
}
}
练习1-11 你准备如何测试单词计数程序?如果程序存在某种错误,那么什么样的输入最可能发现这类错误?
该单词计数程序:
#include
#define IN 1 //在单词内
#define OUT 0 //在单词外
//统计输入行数、单词数与字符数
int main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c=getchar())!=EOF)
{
++nc;
if (c == '\n')
{
++nl;
}
if (c == ' ' || c == '\n' || c == '\t')
{
state = OUT;
}
else if (state == OUT)
{
state = IN;
++nw;
}
printf("%d %d %d\n", nl, nw, nc);
}
}
答:单词计数工作要从没有任何输入的情况下开始。此时,该程序的输出结果应该是“0 0 0”,即零行、零单词、零字符。
接下来测试输入的单字符单词的情况。此时,该程序的输入结构应该是“1 1 2”,即一行、一个单词、两个字符(一个字符加上一个换行符)。
再测试一个由两个字符组成的单词。此时,该程序的输入结果为“1 1 3”,即一行、一个单词、三个字符(两个字母加上一个换行符)。
让后再测试两个单词的情况。首先,两个单词出现在同一行,此时的输出结果应该是“1 2 4”;然后,两个单词各占一行,此时的输出结果应该是“2 2 4”。
那些满足边界条件的输入情况最有助于发现单词计数程序中的错误。这些边界条件包括:
——没有输入
——没有单词(只有换行符)
——没有单词(只有空格、制表符、和换行符)
——每个单词各占一行的情况(没有空格和制表符)
——单词出现于文本行行首的情况
——单词出现于一串空格之后的情况
练习1-12 编写一个程序,以每行一个单词的形式打印其输入。
自己的答案:
#include
int main()
{
int a, b, state;
while ((a=getchar())!=EOF)
{ //a不为空时,直接赋值给b
if (a != ' ')
{
b = a;
putchar(b);
}
//a位空时分b也为空即连续空格的情况,和b不为空格的情况
if ((a == ' ')&&(b==' '))
{
continue;
}
if ((a == ' ') && (b != ' '))
{
b = a;
putchar('\n');
}
}
}
标准答案:
#include
#define IN 1 //在单词内
#define OUT 0 //在单词外
//统计输入行数、单词数与字符数
int main()
{
int c, state;
state = OUT;
while ((c=getchar())!=EOF)
{
if (c == ' ' || c == '\n' || c == '\t')
{
if (state == IN)
{
putchar('\n'); //一个单词输入结束
state = OUT;
}
}
else if (state == OUT)
{
state = IN;
putchar(c); //一个单词输入开始
}
else
{
putchar(c); //在输入一个单词时
}
}
}
练习1-13 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。
#include
#define IN 1 //在单词内
#define OUT 0 //在单词外
int main()
{
//c为输入的字符,state为当前状态,wLength为当前单词长度
//Maxnum为数量最大的单词单词长度的个数
int c,a,b,state,wLength,Maxnum;
int wordLength[10]; //设置一个记录对应单词长度的个数的数组
for (int i = 0; i < 10; i++) //比如wordLength[1]表示单词长度为1的单词个数
{
wordLength[i] = 0;
}
state = OUT;
wLength = 0;
//记录输入中统计的得出的绘图数据
//第一种方法
while ((c=getchar())!=EOF)
{
if ((c == ' ') || (c == '\t') || (c == '\n'))
{
if (state == IN)
{
state = OUT;
++wordLength[wLength];
wLength = 0;
}
else
{
continue;
}
}
else if(state==OUT)
{
wLength=1;
state = IN;
}
else
{
++wLength;
}
}
//第二种统计数据方法
/*
while ((a = getchar()) != EOF)
{
if ((a != ' ') && (a != '\n'))
{
wLength++;
b = a;
}
if (((a == ' ') || (a == '\n')) && (b == ' '))
{
continue;
}
else if (((a == ' ') || (a == '\n')) && (b != ' '))
{
wordLength[wLength]++;
b = ' ';
wLength = 0;
}
}
*/
Maxnum = 9;
/*这样写图表不漂亮
for (int i = 0; i < 10; i++)
{
if (Maxnum < wordLength[i + 1])
{
Maxnum = wordLength[i + 1];
}
}
*/
for (int i = Maxnum; i >= 0; i--)
{
printf("%4d", i);
for (int j = 0; j < 10; j++)
{
if (wordLength[j] >= i)
{
printf(" * ");
}
else
{
printf(" ");
}
}
printf("\n");
}
printf(" ");
for (int i = 0; i < 10; i++)
{
printf("%3d", i);
}
getchar();
}
练习1-14 编写一个程序,打印输入各个字符出现频度的直方图。
基本思想跟上题类似。分三大块,第一块初始化各个数据,第二块采集各个数据,第三块画出直方图。本题可以利用ascii码来作为数组序号。
练习1-15 重新编写1.2中的温度转换程序,使用函数实现温度转换计算。
#include
void change(int lower, int upper, int step);
int main()
{
float lower, upper, step;
lower = 0;
upper = 300;
step = 20;
change(lower, upper, step);
getchar();
}
void change(int lower,int upper,int step)
{
float fahr,celsius;
fahr = lower;
printf(" Fahr Celsius\n");
while (fahr <= upper)
{
celsius = 5 * (fahr - 32) / 9;
printf("%3.0f\t%6.1f\n", fahr, celsius);
fahr = fahr + step;
}
}
c程序设计语言 练习1-6,C程序设计语言:第一章练习相关推荐
- c++语言编程,一个电灯两个开关控制,[理学]四川大学计算机学院精品课程_面向对象程序设计C++课件_游洪越_第一章绪论.ppt...
[理学]四川大学计算机学院精品课程_面向对象程序设计C课件_游洪越_第一章绪论 主讲教师: 游洪跃 个人主页: /~youhongyue 邮件地址: youhongyao@ 教材:<C++面向对 ...
- 帮我写一篇C语言课程的课程实施报告,第一章写整体教学设计,第二章写教学实施流程,第三章写学习效果,第4章写特色与创新,第5章写教学反思与改进...
很高兴为您写一篇 C 语言课程的课程实施报告. 第一章 整体教学设计 C 语言课程的整体教学设计旨在帮助学生了解 C 语言的基础知识和编程技巧,包括语言结构.数据类型.运算符.控制结构.函数.指针.内 ...
- Java面向对象程序设计[董小园版][习题代码答案]-第一章
要点回顾 1)记事本运行Java:在记事本写代码>win R打开DOS>javac Test.java(javac -encoding UTF-8 Test.java)>java T ...
- 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记chapter1第一章(新标准C++程序设计)
以下内容为笔者手打,望读者珍惜,如有转载还请注明. $1.4强制类型转化运算符的新形式: 类型名(待转化的表达式),如double(a),int(3.5) $1.5函数参数的默认值 在 ...
- 用C语言编程实现接口COM组件,把《C语言接口与实现》读薄之第一章:引言
1.1文学程序 文学程序(literate program):接口及其实现的代码与对其进行解释的正文交织在一起.文学程序由英文正文和带标签的程序代码块组成.例如, 1 〈compute x * y〉≡ ...
- r语言glmnet包系数显示不全_第一章: R语言介绍
1:R语言的用途 R也是一种为统计计算和绘图而生的语言和环境,R是一个全面的统计研究平台,提供了各式各样的数据分析技术. 2:R语言的使用 R语句由函数和赋值构成,命令提示符为 > ⑴赋值: R ...
- 数据结构(C语言版-朱昌杰、肖建于)第一章 绪论(3)
1.4用C语言描述算法的注意事项 1.4.1算法及其特征 算法是为解决特定问题而规定的指令的有限序列,每一条指令表示一个或多个操作 算法的五个重要特性 --有穷性:一个算法在执行有穷步后结束,每步都能 ...
- 数据结构(C语言版-朱昌杰、肖建于)第一章 绪论(1)
1.1数据结构的基本概念 数据:对客观事物的符号表示 数据元素:数据的基本单位 数据结构:相互之间存在一种或多种特定关系的数据元素的集合 1.1.1数据的逻辑结构 四类基本结构 --集合:结构中的数据 ...
- c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...
第一章自测练习答案清华大学c语言习题实验指导及课程设计 第一章 自测练习参考答案 一.简答题 1.源程序是程序员创建的,目标程序是编译器创建的,可执行程序是连接器创建的. 2.步骤如下:1)说明程序需 ...
- C语言程序设计基础实验教程,C语言程序设计基础实验教程
本书是教育科学"十五"国家规划课题的研究成果,是<C语言程序设计基础>一书的实验配套教程,它为C语言初学者上机实验提供指导.全书提供了13个方面的验证性.设计性实验,对 ...
最新文章
- 迁移学习前沿研究亟需新鲜血液,深度学习理论不能掉链子
- 计算机 注册表 远程桌面,仅允许运行使用网络级别身份验证的远程桌面计算机连接失败处理方法(远程桌面连接)...
- 教你玩转CSS 导航栏
- python语言逆序符号_python的逆序
- 论文 计算机网络安全现状的分析与对策,计算机网络安全现状的分析与对策(学年论文).pdf...
- gho镜像安装器linux,Ghost镜像安装器
- python使用random生成不重复的随机数
- 08TensorFlow2.0基础--8.5张量运算
- the difference between a material and an effect
- 微信APP支付申请配置过程详解
- 数据库持久层框架iBatis、myBatis、Hibernate对比
- 万能网卡驱动程序下载,适用于Win7_Win8.x平台
- 前端|Ant Design介绍
- 带通滤波器参数详细推导
- 详解JS中三元运算符的语法和常见用法
- 日常篇(持续更新ing)
- 【2016】二月份英语学习总结
- HDU 2566 统计硬币 【模拟】
- git中merge分支到master产生冲突
- 我的生命该如何度过?
热门文章
- 20 | 散列表(下):为什么散列表和链表经常会一起使用?
- yaml格式,给Java类绑定数据
- 【算法设计与分析】08 序列求和的方法
- 【C语言进阶深度学习记录】六 C语言中的分支语句
- 调试nodejs项目接口,使用Posman,用req.body拿不到数据
- axios、ajax和xhr前端发送测试
- 使用MyBatista----上传图像
- 【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞
- 2016.03.04,英语,《Vocabulary Builder》Unit 04
- monotouch在ipad中的实例应用--显示图像和文字