《C语言程序设计现代方法(K.N.King著)》第3章编程题答案

本文包含多个C语言编程示例,包括将用户输入的日期从mm/dd/yy格式转换为yyyy/mm/dd格式,格式化产品信息,分解ISBN,将电话号码从(xxx)xxx-xxxx格式转换为xxx.xxx.xxxx格式,以及实现16个整数的4x4矩阵显示和求和。程序涉及基本的输入输出和简单的数学运算。
摘要由CSDN通过智能技术生成

下面是笔者自己敲下的《C语言程序设计现代方法》第3章的课后编程题的代码

1.编写一个程序,以月/日/年(即mm/dd/yy)的格式接受用户输入的日期信息。并以年月日(即yyyy/mm/dd)的格式将其显示出来。

#include<stdio.h>
int main(void)
{
	int mm,dd,yy;
	
	printf("Enter a date (mm//dd//yyyy):");
	scanf("%d/%d/%d",&mm,&dd,&yy);
	
	printf("You entered the date %d%02d%02d\n",yy,mm,dd);
	
	return 0;
}

2.编写一个程序,对用户输入的产品信息进行格式化。

#include<stdio.h>
int main(void)
{
	int num,mm,dd,yy;
	float price;
	
	printf("Enter item number:");
	scanf("%d",&num);
	printf("Enter unit price:");
	scanf("%f",&price);
	printf("Enter purchase date (mm/dd/yyyy):");
	scanf("%d/%d/%d",&mm,&dd,&yy);
	
	printf("Item\tUnit\tPurchase\n");
	printf("\tPrice\tDate\n");
	printf("%d\t$%.2f\t%02d/%02d/%d\n",num,price,mm,dd,yy);
	
	return 0;
}

3.编写一个程序来分解用户输入的ISBN信息。

#include<stdio.h>
int main(void)
{
	int first,second,third,fourth,fifth;
	
	printf("Enter ISBN:");
	scanf("%d-%d-%d-%d-%d",&first,&second,&third,&fourth,&fifth);
	
	printf("GSI prefix: %d\n",first);
	printf("Group identifier: %d\n",second);
	printf("Publilsher code: %d\n",third);
	printf("Item nember: %d\n",fourth);
	printf("Check digit: %d\n",fifth);
	
	return 0;
}

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

#include<stdio.h>
int main(void)
{
	int first,second,third;
	
	printf("Enter phone number [ (xxx) xxx-xxxx ]: ");
	scanf("(%d) %d-%d",&first,&second,&third);
	
	printf("You entered %d.%d.%d\n",first,second,third);
	
	return 0;
}

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

#include<stdio.h>
int main(void)
{
	int i; 
	int a[16];//声明一个长度为16的数组
	
	printf("Enter the numbers form 1 to 16 in any order:\n");
	//通过for循环来依次读取输入的16个整型
	for(i=0;i<16;i++)
		scanf("%d",&a[i]);
	
	//利用for循环来依次输出打印这16个数	
	for(i=1;i<=16;i++){
		
		printf("%2d ",a[i-1]);
		
		//判断是否为每行的末尾,以便打印换行符
		if(i%4==0)	printf("\n");
		
	}
	
	printf("Row sums: %2d  %2d  %2d  %2d\n",a[0]+a[1]+a[2]+a[3],a[4]+a[5]+a[6]+a[7],a[8]+a[9]+a[10]+a[11],a[12]+a[13]+a[14]+a[15]);
	printf("Column sums: %2d  %2d  %2d  %2d\n",a[0]+a[4]+a[8]+a[12],a[1]+a[5]+a[9]+a[13],a[2]+a[6]+a[10]+a[14],a[3]+a[7]+a[11]+a[15]);
	printf("Diagonal sums: %2d  %2d\n",a[0]+a[5]+a[10]+a[15],a[3]+a[6]+a[9]+a[12]);	
	
	return 0;
}

 6.修改3.2节的addracc.c程序,使用户可以同时输入两个分母,中间用加号隔开。

#include<stdio.h>
int main(void)
{
	int num1,denom1,num2,denom2,result_num,result_denom;
	
	printf("Enter two fractions separated by a plus sign: ");
	scanf("%d/%d+%d/%d",&num1,&denom1,&num2,&denom2);
	
	result_num=num1*denom2+num2*denom1;
	result_denom=denom1*denom2;
	printf("The sum is %d/%d\n",result_num,result_denom);
	
	//这里可以加上if语句判断分母是否为0,以及分子是否为0,以便进一步优化代码的输出格式 
	//但是到这里,K.N.King的书上并没有涉及到相关的知识点,所以不做赘述
	
	return 0;
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值