下面是笔者自己敲下的《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;
}