麻了,昨晚有个引号打错地方,鉴定为纯小丑
书接上回
3.11编程练习(p60)
题3:编写一个程序,发出一声警报,然后打印下面文本
解:
#include<stdio.h>
int main()
{
char a = '\a';
printf("%c\n",a);
printf("以下文本");
return 0;
}
答案:
#include<stdio.h>
int main()
{
char ch = '\a';
printf("%c\n",ch);
printf("书上的两行文本\n我懒打");
return 0;
}
使用警报(字符型)时需要打印出来
题4:编写一个程序,读取一个浮点数,先打印成小数形式,在打印成指数形式。然后,如果系统支持,在打印成16进制计数法。
解
#include<stdio.h>
int main()
{
float ht;
scanf("%f", &ht);
printf("%f\n%e\n%#x",ht, ht, ht);
return 0;
}
答案:
#include<stdio.h>
int main()
{
float input;
scanf("%f", &input);
printf("巴拉巴拉:%f\n",input);
printf("巴拉巴拉:%e\n", input);
printf("巴拉巴拉:%a\n", input);
return 0;
}
题目本意是要掌握各个类型输出转换字符,很显然,我没有掌握,这里的指数输出转换字符用的%a,不懂,记得看书
题目5:一年大约有3.156x10的七次方,编写一个程序,提醒输入年龄,用秒数输出
解:
#include<stdio.h>
int main()
{
float s;
int age;
age = s * 3.156e7;
printf("ht今年多大啦!");
scanf("%d", &age);
printf("%f秒", s);
return 0;
}
错了,运行不了,抄答案重做一遍
重做:
#include<stdio.h>
#define S_PER_YEAR 3.156e7
int main()
{
float s, age;
printf("皓天今年多大啦:\n");
scanf("%f", &age);
s = age * S_PER_YEAR;
printf("%f", s);
return 0;
}
能运行,再打一遍试试猜想(刚刚知道自己做的错在哪里了,声明后的函数在获取输入后再进行定义,鉴定为纯小丑,以下为第一次编程的改错)
#include<stdio.h>
int main()
{
float s;
float age;
printf("ht今年多大啦!\n");
scanf("%f", &age);
s = age * 3.156e7;
printf("%f", s);
return 0;
}
不试猜想了,继续下一道
题目6:1个水分子质量约为3.0e-23克,一夸脱水大约为950克。编写一个程序,提醒用户输入水的夸脱数,并显示水分子的质量。
解:第一次解
#include<stdio.h>
int main()
{
float fenzishu, kuatuo, mid;
printf("输入夸脱数:\n");
mid = 950 / 3.0e-23;
scanf("%f\n", &kuatuo);
fenzishu = kuatuo * mid;
printf("换算成分子是%f个", fenzishu);
return 0;
}
获取了两次键盘的输入,why?
抄答案写一遍:第二次解
#include<stdio.h>
#define ZL_PER_FZ 3.0e-23 //拼音简写质量,分子
#define ZL_PER_KT 950 //简写质量ZL,夸脱kt
int main()
{
float ZL, FZ, KT,FZS; //分子数简写FZS
printf("输入夸脱值:\n");
scanf("%f\n", &KT);
FZS = KT * ZL_PER_KT / ZL_PER_FZ;
printf("%f", FZS);
return 0;
}
又获取两次,照着书上写一遍
#include<stdio.h>
#define MASS_PER_MOLE 3.0e-23
#define MASS_PER_QUART 950
int main()
{
float quart, quantily;
printf("ENTER how many quart : ");
scanf("%f", &quart);
quantily = quart * MASS_PER_QUART / MASS_PER_MOLE;
printf("There are %e molecule.\n", quantily);
return 0;
}
本次可运行,根据答案改错:
#include<stdio.h>
#define ZL_PER_FZ 3.0e-23 //拼音简写质量,分子
#define ZL_PER_KT 950 //简写质量ZL,夸脱kt
int main()
{
float KT, FZS; //分子数简写FZS
printf("输入夸脱值:\n");
scanf("%f", &KT); //本行不加\n,会生成一行无效的输入获取
FZS = KT * ZL_PER_KT / ZL_PER_FZ;
printf("%e", FZS);
return 0;
}
在scanf后加换行转换字符会导致生成一行无效的输入获取,注意
题目7:1英寸相当于2.54厘米。编写一个程序,使用户输入身高(英寸),然后以厘米为单位显示身高
#include<stdio.h>
#define CM_PER_YC 2.54 //拼音简写厘米cm,英寸yc
int main()
{
float high, GAO;
printf("以英寸为单位输入你的身高:");
scanf("%f", &high);
GAO = high * CM_PER_YC;
printf("你的身高是%f厘米", GAO);
return 0;
}
答案
#include<stdio.h>
#define INCH_TO_CM 2.54
int main()
{
float inch, cm;
printf("Enter the inch of your higher:");
scanf("%f", &inch);
cm = inch * INCH_TO_CM;
printf("Hi,your are %.2finch,or %0.1f cm higher\n", inch, cm);
return 0;
}
答案中英寸与厘米转换用了_TO_
题目8:在美国的体积测量系统中,1品脱等于2杯,1杯等于盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺,提示用户输入杯数,并以品脱,盎司,汤勺,茶勺为单位显示等价容量,思考对于该程序,为什么使用浮点型比整数类型更适合?
解:(没用预设函数版)
#include<stdio.h>
#define PT_TO_BEI 2
#define BEI_TO_AS 8
#define AS_TO_TS 2
#define TS_TO_CS 3
int main()
{
float pt, bei, as, ts, cs;
printf("你拥有的水的杯数是:");
scanf("%f", &bei);
pt = bei*2;
as = bei / 8;
ts = as / 2;
cs = ts / 3;
printf("you have %f 品脱, %f 杯 ,%f 盎司,%f 汤勺,%f 茶勺的水\n", pt, bei, as, ts, cs);
return 0;
}
(用预设函数版):
#include<stdio.h>
#define PT_TO_BEI 2
#define BEI_TO_AS 8
#define AS_TO_TS 2
#define TS_TO_CS 3
int main()
{
float pt, bei, as, ts, cs;
printf("你拥有的水的杯数是:");
scanf("%f", &bei);
pt = bei * PT_TO_BEI;
as = bei / BEI_TO_AS;
ts = as / AS_TO_TS;
cs = ts / TS_TO_CS;
printf("you have %f 品脱, %f 杯 ,%f 盎司,%f 汤勺,%f 茶勺的水\n", pt, bei, as, ts, cs);
return 0;
}
输出结果均为:
这两章的预设函数只需要自己能懂就好,没有一定格式
摆了,第二章欠的作业晚上再来ToT (14:07)
19:28,回来坐牢,补昨晚没做完的第二章作业!
2.12编程练习(p33)
书接昨晚上,没做完的四道题
题目5:编写一个程序,生成以下输出:
Brazil,Russia,India,China
India,China,
Brazil,Russia
不会做!没头绪!直接抄答案写一遍!
抄:
#include<stdio.h>
int br();
int ic();
int main()
{
br();
printf(",");
ic();
printf("\n");
ic();
printf(", \n");
br();
printf("");
return 0;
}
int br()
{
printf("Brazil,Russia");
return 0;
}
int ic()
{
printf("India, China");
return 0;
}
答案用了预编译函数(我不知道是不是预编译函数),然后在主函数内进行函数的调用,把函数的定义放在最后,经实践表明,函数的定义与调用没有特定的前后关系,个人习惯是先定义再调用
再次当小丑,题目后面还有一段我没看全:
先定义后调用:
#include<stdio.h>
int br();
int ic();
int br()
{
printf("Brazil,Russia");
return 0;
}
int ic()
{
printf("India, China");
return 0;
}
int main()
{
br();
printf(",");
ic();
printf("\n");
ic();
printf(", \n");
br();
printf("");
return 0;
}
题目6:编写一个程序,创建一个整形变量toes,并将toes设置为10。程序还要计算toes的两倍以及平方。该程序打印3个值,并描述以示区分。
#include<stdio.h>
int main()
{
int toes = 10;
int b= 2 * toes;
int c = toes * toes;
printf("toes=%d\n两倍的toes=%d\ntoes的平方=%d",toes,b,c);
return 0;
}
和答案大差不差,但是答案提供了另一种思路(不定义函数,直接在打印运算的结果):
#include<stdio.h>
int main()
{
int toes = 10;
printf("toes=%d\n", toes);
printf("两倍的toes=%d\n", 2 * toes);
printf("toes的平方=%d", toes * toes);
return 0;
}
题目7:写程序生成以下输出:
smile!smile!smile!
smile!smile!
smile!
该程序要定义一个函数,该函数被调用一次就打印一次smile!
解:
#include<stdio.h>
int ht();
int main()
{
ht();
printf("");
ht();
printf("");
ht();
printf("\n");
ht();
printf("");
ht();
printf("\n");
ht();
return 0;
}
int ht()
{
printf("smile!");
return 0;
}
答案:
#include<stdio.h>
int ht();
int main()
{
ht();
ht();
ht();
printf("\n");
ht();
ht();
printf("\n");
ht();
return 0;
}
int ht()
{
printf("smile!");
return 0;
}
题目8:在C语言中,函数可以调用另外一个函数。编写一个程序,调用一个名为one_three()的函数,该函数在一行打印单词one,再掉用第二个函数two(),然后在另一行打印three,two()函数在一行显示单词two,main()函数在调用one_three()函数前要打印短语starting now:,并在调用完毕后显示短语“done”因此,该程序的输出应如下所示:
starting now:
one
tow
three
done!
解:
#include<stdio.h>
int one_three();
int two();
int main()
{
printf("starting now\n");
one_three();
printf("\ntwo\n");
two();
printf("\ndone!\n");
return 0;
}
int one_three()
{
printf("one");
return 0;
}
int two()
{
printf("three");
return 0;
}
答案:
#include<stdio.h>
int one_three();
int two();
int main()
{
printf("starting now\n");
one_three();
printf("done!");
return 0;
}
int one_three()
{
printf("one\n");
two();
return 0;
}
int two()
{
printf("three\n");
return 0;
}
注意题目,是在调用的函数里调用另一个函数。
2022/11/11 21:20,结束坐牢,明天复习要考试的科目,不知道回不回来坐牢
开摆!