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);
}