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

本文介绍了如何编写C语言程序,逐步实现用户输入的两位数和三位数的逆序打印,并涉及了校验码计算,包括处理八进制和EAN条形码校验。通过实例演示了如何避免算术分割,简化输入验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数。

#include<stdio.h>
int main(void)
{
	int num;
	
	printf("Enter a two-digit number: ");
	scanf("%d",&num);
	
	printf("The reversal is %d%d\n",num%10,num/10);
	
	return 0;
}

2.拓展上题中的程序,使其可以处理3位数。

#include<stdio.h>
int main(void)
{
	int num;
	
	printf("Enter a three-digit number: ");
	scanf("%d",&num);

	printf("The reversal is %d%d%d\n",num%10,(num/10)%10,(num/10)/10);
	
	return 0;	
}

3.重新编写编程题2中的程序,使新程序不需要利用算数分割就可以显示出3位数的逆序。

#include<stdio.h>
int main(void)
{
	int i,j,k;
	
	printf("Enter a three-digit number: ");
	scanf("%1d%1d%1d",&i,&j,&k);
	
	printf("The reversal is %d%d%d\n",k,j,i);
	
	return 0;
}

4.编写一个程序,读取用户输入的整数并按照八进制(基数为8)显示出来。

#include<stdio.h>
int main(void)
{
	int num;
	
	printf("Enter a number between 0 and 32767:");
	scanf("%d",&num);
	
	printf("In octal, your number is %d%d%d%d%d\n",num/8/8/8/8%8,num/8/8/8%8,num/8/8%8,num/8%8,num%8);
	
    //你也可以这样写 
	//printf("In octal, your number is %05o\n",num);
	
}

5.重写4.1节的upc.c程序,使用户可以一次输入11位数字,而不用先输入1位,再输入5位,最后输入5位。

#include<stdio.h>
int main(void)
{
	int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11;
	int i,j,k;
	
	printf("Enter the first 11 digit of a UPC: "); 
	scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d",&a11,&a10,&a9,&a8,&a7,&a6,&a5,&a4,&a3,&a2,&a1);
	
	i=a1+a3+a5+a7+a9+a11;
	j=a2+a4+a6+a8+a10;
	k=9-(i*3+j-1)%10;
	
	printf("Check number: %d\n",k);
}

6.请修改4.1节upc.c程序以计算EAN的校验码。用户把EAN的前12位当作一个输入。

#include<stdio.h>
int main(void)
{
	int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12;
	int i,j,k;
	
	printf("Enter the first 12 digit of a UPC: "); 
	scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d",&a11,&a10,&a9,&a8,&a7,&a6,&a5,&a4,&a3,&a2,&a1,&a12);
	
	i=a1+a3+a5+a7+a9+a11;
	j=a2+a4+a6+a8+a10+a12;
	k=9-(j*3+i-1)%10;
	
	printf("Check number: %d\n",k);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值