已验证通过编译,但不保证在细节上不存在遗漏,仅供参考
4.1
#include
int main (void)
{
int num, rev;
printf ("Enter a two-digit number: ");
scanf ("%2d", &num);
// 这里的%2d是为了只取2位有效数字;
int a, b;
a = num / 10; //a是十位;
b = num % 10; //b是个位;
rev = b * 10 + a;
printf ("The reversal is: %d", rev);
return 0;
}
4.2
#include
int main (void)
{
int num, rev;
printf ("Enter a three-digit number: ");
scanf ("%3d", &num);
// 这里的%3d是为了只取3位有效数字;
int a, b, c;
a = num / 100; //a是百位;
b = num % 100;
b = b / 10; //b是十位;
c = num % 10; //c是个位;
rev = c * 100 + b * 10 + a;
printf ("The reversal is: %d", rev);
return 0;
}
4.3
#include
int main (void)
{
int i1, i2, i3;
printf ("Enter a three-digit number: ");
scanf ("%1d%1d%1d", &i1, &i2, &i3);
printf ("The reversal is %d%d%d", i3, i2, i1);
return 0;
}
4.4
#include
int main (void)
{
int num10, num8;
printf ("Enter a number between 0 and 32767: ");
scanf ("%d", &num10);
int a, b, c, e, d;
a = num10 % 8;
b = (num10 / 8) % 8;
c = (num10 / 8 / 8) % 8;
d = (num10 / 8 / 8 / 8) % 8;
e = (num10 / 8 / 8 / 8 / 8) % 8;
printf ("In octal, your number is: %d%d%d%d%d", e, d, c, b, a);
return 0;
}
4.5
#include
int main (void)
{
int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5;
int first_sum, second_sum, total;
printf ("Enter the frist 11 digits of a UPC: ");
scanf ("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d",&d, &i1, &i2, &i3, &i4, &i5, &j1, &j2, &j3, &j4, &j5);
first_sum = d + i2 + i4 + j1 + j3 + j5;
second_sum = i1 + i3 + i5 + j2 + j4;
total = 3 * first_sum + second_sum;
printf ("Check digit: %d\n", 9 - ((total - 1) % 10));
return 0;
}
4.6 这章题重复的太多了
#include
int main (void)
{
int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12;
int first_sum, second_sum, total;
printf ("Enter the frist 12 digits of a UPC: ");
scanf ("%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d%1d", &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8, &i9, &i10, &i11, &i12);
first_sum = i2 + i4 + i6 + i8 + i10 + i12;
second_sum = i1 + i3 + i5 + i7 + i9 + i11;
total = 3 * first_sum + second_sum;
printf ("Check digit: %d\n", 9 - ((total - 1) % 10));
return 0;
}