C Primer Plus NO.7

2022 11/16正在看第五章,写一点看书时书上的程序:

将秒数转换为分秒:

#include <stdio.h>
int main()
{
	int sec, min, left;
	printf("请输入需要转换的秒数:");
	scanf("%d",&sec);
	while (sec > 0)
	{
		min = sec / 60;
		left = sec % 60;
		printf("%d秒换算成分钟为%d分%d秒\n", sec, min, left);
		printf("请输入下一个想要转换的数(停止使用请输入<0的数):");
		scanf("%d",&sec);
	}
	return 0;
}

运行结果:

关于++与--的用法,直接上图:

 

 根据书上原话,使用b++时只有在b被时候用后才递增为4,而++b只作用于n,不做用于a+b。

如果b++是表达式的一部分,可将其视为“先使用b,再递增”,++b则表示“先递增b,再使用递增后b

如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或递减运算符;

如果一个变量多次出现在一个表达式中,不要对该变量使用递增或递减运算符:

关于编写自己函数的一个例子:

#include <stdio.h>
void pound(int n);
int main()
{
	int times = 5;
	char ch ='!';
	float f= 6.0;
	pound(times);
	pound(ch);
	pound(f);
	return 0;
}
void pound(int n)
{
	while (n-- > 0)
	printf("#");
	printf("\n");
}

运行结果:

2022 11/17 8:46先看看返回值

 C语言printf函数的返回值是printf实际控制输出的字符数

scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。 如果输入数据与指定格式不符,则会产生输入错误。 遇到输入错误,scanf函数会立即终止,返回已经成功读取的数据的个数。

打印A~G

#include <stdio.h>
int main()
{
	int n = 64;
	while (n++ < 71)
	{
		printf("%c", n);
		printf("\n");
	}
	return 0;
}

要求打印a~g

#include <stdio.h>
int main()
{
	int n = 96;
	while (n++ < 103)
	{
		printf("%c", n);
		printf("\n");
	}
	return 0;
}

第五章编程练习(p114)

题目1:编写一个程序,把用分钟示的时间转换为用小时和分钟表示的时间。使用#define或const创建一个表示60的符号常量或const变量。通过while循环让用户重复输入值,直到用户输入小于或等于0的数结束循环。

解:

#include <stdio.h>
#define MIN_S 60
int main()
{
	int min, h,left;
	printf("请输入分钟数:");
	scanf("%d",&min);
	while (min >0)
	{
		h = min / MIN_S;
		left = min % MIN_S;
		printf("%d分钟转换为小时为:%d小时%d分",min,h,left);
		printf("\n输入下一个需要转换的数(输入<=0的数停止转换)");
		scanf("%d",&min);
	}
	return 0;
}

注意,在while循环中,判定为真继续循环

题目2:编写一个程序,提示用户输入一个整数,然后打印比该数大10的所有整数(比如输入5,就打印5~15,包括5和15),要求打印各值之间用一个空格,制表符或者换行符(这仨货不就是传说中的空白吗0.0)

解:

#include <stdio.h>
int main()
{
	int a;
	printf("输入一个整数:");
	scanf("%d", &a);
	while (a < a + 11)
	{
		printf("%d %d %d %d %d %d %d %d %d %d", a, a + 1, a + 2, a + 3, a + 4, a + 5, a + 6, a + 7, a + 8, a + 9, a + 10);
	printf("\n输入下一个数字:");
	scanf("%d", &a);
	}
	return 0;
}

傻瓜式编程TOT

答案:

int main(int argc,int *argv[])
{
	int counter, i = 0;
	printf("输入数字:");
	scanf("%d",&counter);
	while (i++ < 11)
	{
		printf(" %d\n", counter++);	
	}
	return 0;
}

但是去除int mian()中的int argc,int *argv[]仍可运行。。。。。。。。0.0

题3:提示用户输入天数,转换为周数和天数

解:

#include <stdio.h>
int main()
{
	int a, b, c;
	printf("输入天数");
	scanf("%d",&a);
	while (a > 0)
	{
		b = a / 7;
		c = a % 7;
		printf("%d days are %d weeks,%d days",a,b,c);
		printf("\n输入下一个需要转换的天数(输入<=0的数结束转换)");
		scanf("%d",& a);
	}
	printf("感谢使用");
	return 0;
}

简单拿下

题4:编写一个程序,日式用户输入一个身高(cm),并分别以厘米和英尺,英寸为单位显示该值,允许有小数部分,该程序可以让用户重复输入身高,知道输入一个非正值

解:

#include <stdio.h>
#define a_cm 30.48
#define b_cm 2.54
int main(){
	int a;
	float  b, cm;
	printf("请输入身高(cm):");
	scanf("%f", &cm);
	while (cm > 0)
	{
		a = cm / a_cm;
		b = (cm - a * a_cm) / b_cm;
		printf("%.1f厘米=%d英尺%.1f英寸", cm, a, b);
		printf("\n输入下一次需要转换的数(输入<=0的数停止转换)");
		scanf("%f", &cm);
     }
	return 0;
}

没有拿下,注意%左侧不能有浮点型,本题不能用%来计算英寸

题5:修改程序5.13,可以认为第一天赚$1,第二天赚$2,第三天赚$3。

解:自己没做出来,抄答案来一遍

#include <stdio.h>
int main()
{
	int money = 0;
	int day=0;
	printf("输入你工作天数:");
	scanf("%d", &day);
	while (day > 0)
	{
		money = money + day--;
	}
		printf("这些天总共赚了%d",money);
	
	return 0;
}

累加的代码:

while (day > 0)
	{
		money = money + day--;
	}

必须先给money和day赋一个初值程序才能运行

题6:修改上面的程序,但第一天赚1,第二天赚4,第三天赚9

解:还是看了答案才写出来

#include <stdio.h>
int main()
{
	int money=0;
	int day=0;
	printf("输入你工作天数:");
	scanf("%d", &day);
	while (day > 0)
	{
		money =money+day * day;//自己写的day*day
		day--;
	}
		printf("这些天总共赚了%d",money);
	
	return 0;	
}

循环求和的代码:

while (day > 0)
	{
		money =money+day * day;
		day--;
	}

题7:编写一个程序,提示用户输入一个double函数,并打印该数的立方值,自己设定一个函数计算并打印立方值,main()函数要把用户的输入的值传递给该函数。

解:

#include <stdio.h>
double cubic(double n);
int main()
{
	double input;
	printf("输入一个数:");
	scanf("%lf",&input);
	cubic(input);
	return 0;	
}
double cubic(double n)
{
	double a = n * n * n;
	printf("The %lg's cubic is %lg!\n",n,a);
	return a;
}

抄答案抄答案,麻了,明儿来看自定义函数。

撤退!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值