《C语言程序设计-现代方法》第三章 -学习与总结 - - - 编程题 - 练习

**菜鸟个人学习用途,欢迎和谐交流;如有错误,请指正,感激不尽。 **

编程题

3.1
编写一个程序以月/日/年(即mm/dd/yy)的格式接受用户录入的日期信息并以年月日(即yyyymmdd)
的格式将其显示出来:


#include <stdio.h>
#define DATE(mm,dd,yyyy)	(yyyy * 10000 + mm * 100 + dd)

int main(void)
{
	int mm , dd , yyyy;
	
	printf("Enter a date (mm/dd/yyyy):");
	scanf("%d/%d/%d", &mm , &dd , &yyyy);
	//方式1 :宏定义--算术运算 
	printf("You entered the date %d\n", DATE(mm,dd,yyyy) );
	//方式2 : 转换说明输出
	printf("You entered the date %4d%.2d%.2d\n", yyyy , mm , dd);
	
	return 0; 
}

3.2编写一个程序,对用户录入的产品信息进行格式化。程序会话应类似下面这样:

//对用户录入的产品信息进行格式化
//对制表符的运用
 
#include <stdio.h>

int main(void)
{
	int mm , dd , yyyy , number ;
	float price ;
	
	printf("Enter item number:");
	scanf("%d", &number);
	printf("Enter unit price:");
	scanf("%f", &price);
	printf("Enter purchase date (mm/dd/yyyy):");
	scanf("%d/%d/%d", &mm , &dd , &yyyy );
	 
	printf("Item\tUnit\t	Purchase\n\tPrice\t	Date\n%-d\t$%7.2f\t%.2d/%.2d/%.4d", number,  price , mm , dd , yyyy);
	
	return 0;
} 

3.3 图书用国际标准书号(ISBN)进行标识。2007年1月1日之后分配的ISBN包含13位数字(旧的ISBN使用10位数字),分为5组,如978-0-393-97950-3。第一组(GS1前级)目前为978或979。第二组(组标识)指明语言或者原出版国(如0和1用于讲英语的国家)。第三组(出版商编号)表示出版商(393是wwNorton出版社的编号)。第四组 (产品编号) 是由出版商分配的用于识别具体哪一本书的(97950)。ISBN的末尾是一个校验数字,用于验证前面数字的准确性。编写一个程序来分解用户录入的ISBN信息


#include <stdio.h> 

int main(void)
{	
	int gs1, group_id, publisher_code, item_num, check_digit;

	printf("Enter ISBN: ");
	scanf("%d-%d-%d-%d-%d", &gs1, &group_id, &publisher_code, &item_num, &check_digit);
	
	printf("GS1 prefix: %d\n", gs1);
	printf("Group identifier: %d\n", group_id);
	printf("Publisher code: %d\n", publisher_code);
	printf("Item number: %d\n", item_num);
	printf("Check digit: %d\n", check_digit);
	
	return 0;
}

3.4 编写一个程序,提示用户以(xxx)xxx-xxxx的格式输入电话号码并以xxxxxxxxxx的格式显示该号码:


#include <stdio.h> 

int main(void)
{	
	int num01, num02, num03;
	
	printf("Enter phone number [(XXX) XXX-XXXX] : ");
	scanf("(%d) %d-%d", &num01, &num02, &num03);//输入英文括号 
	
	printf("You entered %d.%d.%d\n", num01, num02, num03);
	
	return 0;
}

3.5
编写一个程序,要求用户(按任意次序)输入从1到16的所有整数,然后用4X4矩阵的形式将它们显示出来,再计算出每行、每列和每条对角线上的和:

#include <stdio.h>

int main(void)
{
	int  a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3;
	int  sum_a, sum_b, sum_c, sum_d;
	
	printf("Enter the numbers from 1 to 16 in any order:");
	scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
	&a0, &a1, &a2, &a3, &b0, &b1, &b2, &b3, &c0, &c1, &c2, &c3, &d0, &d1, &d2, &d3);
 	
	sum_a = a0 + a1 + a2 + a3;
	sum_b = b0 + b1 + b2 + b3;
	sum_c = c0 + c1 + c2 + c3;
	sum_d = d0 + d1 + d2 + d3;
	
	printf("%5d%5d%5d%5d\t\n%5d%5d%5d%5d\t\n%5d%5d%5d%5d\t\n%5d%5d%5d%5d\t\n", 
	a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3);
	
	printf("Row sums: %d %d %d %d\n", sum_a, sum_b, sum_c, sum_d);
	printf("Column sums: %d %d %d %d\n", a0+b0+c0+d0, a1+b1+c1+d1, a2+b2+c2+d2, a3+b3+c3+d3);
	printf("Diagonal sums: %d %d", a0+b1+c2+d3, a3+b2+c1+d0);
	
	return 0;
}

3.6 修改3.2节的addfrac.c程序,使用户可以同时输入两个分数,中间用加号隔开:

int main(void)
{
	int num01 , denom01 , num02 , denom02 , result_num , result_denom;
	
	printf("请输入两个分数相加:");
	scanf("%d / %d + %d / %d", &num01 , &denom01, &num02 , &denom02);

	result_num = num01 * denom02 + num02 * denom01;
	result_denom = denom01 * denom02;
	
	printf("%d/%d加%d/%d的结果为:%d/%d \n", num01 , denom01 , num02 , denom02 , result_num , result_denom);


	return 0;	
}

持续回顾与总结

1、 占位符的最小字段宽度和精度很重要

思维导图:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值