7.1
short int values are usually stored in 16 bits, causing failure at 182. int and long int
values are usually stored in 32 bits, with failure occurring at 46341.
7.2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
int i, n, count = 0;
char ch;
printf("This program prints a table of squares.\n");
printf("Enter number of entries in table: ");
scanf("%d", &n);
ch = getchar();//因为在输入n的值之后会按ENTER键,ENTER键会遗留传递给ch = getchar();在这里
不用ch = getchar();则if循环中的ch = getchar()就会读入ENTER键,do循环也就
不会执行;
for (i = 1; i <= n; i++) {
printf("%10d%10d\n", i, i * i);
if (i % 24 == 0) {
printf("Press Enter to continue...\n");
do {
ch = getchar();
} while (ch != '\n');
}
}
return 0;
}
7.3
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
double n, sum = 0;
printf("This progream sums a series of integers.\n");
printf("Enter integers (0 to terminate): ");
scanf("%lf", &n);
while (n != 0) {
sum += n;
scanf("%lf", &n);
}
printf("The sum is: %ld\n", sum);
return 0;
}
7.4
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch;
printf("Enter phone number: ");
while ((ch = getchar()) != '\n') {
switch (toupper(ch)) {
case 'A':case 'B':case 'C':
printf("2"); break;
case 'D':case 'E':case 'F':
printf("3"); break;
case 'G':case 'H':case 'I':
printf("4"); break;
case 'J':case 'EK':case 'L':
printf("5"); break;
case 'M':case 'O':case 'N':
printf("6"); break;
case 'P':case 'S':case 'R':
printf("7"); break;
case 'V':case 'T':case 'U':
printf("8"); break;
case 'W':case 'X':case 'Y':
printf("9"); break;
default:
printf("%c", ch); break;
}
}
return 0;
}
7.5
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
int i=0, a = 0; char ch;
printf("Enter a word: ");
while ((ch = getchar()) != '\n') {
ch = toupper(ch);
if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'L' || ch == 'N' || ch == 'O' ||
ch == 'R' || ch == 'S' || ch == 'T' || ch == 'U') { i = 1;}
else if (ch == 'D' || ch == 'G') { i = 2; }
else if (ch == 'B' || ch == 'C' || ch == 'M' || ch == 'P') { i = 3; }
else if (ch == 'F' || ch == 'H' || ch == 'V' || ch == 'W' || ch == 'Y') { i = 4; }
else if (ch == 'K') { i = 5; }
else if (ch == 'J' || ch == 'X') { i = 8; }
else if (ch == 'Q' || ch == 'Z') { i = 10; }
a += i;
}
printf("Scrabble value: %d\n", a);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch;
int sum=0;
printf("Enter a word: ")
while ((ch = getchar())!='\n') {
switch (toupper(ch)) {
case 'D':case 'G':
sum += 2; break;
case 'B':case 'C':case 'M':case 'P':
sum += 3; break;
case 'F':case'H':case'V':case'W':case 'Y':
sum += 4; break;
case 'K':
sum += 5; break;
case 'J':case 'X':
sum += 8; break;
case 'Q':case 'Z':
sum += 10; break;
default:
sum += 1; break;
}
}
printf("Scrabble value: %d\n", sum);
return 0;
}
7.6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
printf("Size of int :%d\n", (int)sizeof(int));
printf("Size of short: %d\n", (int)sizeof(short));
printf("Size of long: %d\n", (int)sizeof(long));
printf("Size of float: %d\n", (int)sizeof(float));
printf("Size of double:%d\n", (int)sizeof(double));
printf("Size of long double:%d\n", (int)sizeof(long double));
return 0;
}
7.7
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int hcf(int n1, int n2);
int main(void)
{
int num1=0, denom1=0, num2=0, denom2=0, result_num=0, result_denom=0;
char ch;
printf("Enter first fraction: ");
scanf("%d/%d%c%d/%d", &num1, &denom1, &ch, &num2, &denom2);
switch (ch) {
case '+':
result_num = num1 * denom2 + num2 * denom1;
result_denom = denom1 * denom2;
break;
case '-':
result_num = num1 * denom2 - num2 * denom1;
result_denom = denom1 * denom2;
case '*':
result_num = num1 * num2;
result_denom = denom1 * denom2;
case '/':
result_num = num1 * denom2;
result_denom = denom1 * num1;
}
printf("The result is: %d/%d\n", result_num / hcf(result_num, result_denom),
result_denom / hcf(result_num, result_denom));
return 0;
}
int hcf(int n1, int n2)//求两个数的最大公约数的函数
{
if (n2 != 0)
return hcf(n2, n1 % n2);
else
return n1;
}
这里直接使用指针,函数调用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void gcd(int* result_num, int* result_denom);
int main()
{
int num1 = 0, denom1 = 0, num2 = 0, denom2 = 0,
num3 = 0, denom3 = 0, result_num = 0, result_denom = 0;
char ch;
printf("Enter the two fraction: ");
scanf("%d/%d%c%d/%d", &num1, &denom1, &ch,&num2, &denom2);
switch (ch) {
case '+':
result_num = num1 * denom2 + num2 * denom1;
result_denom = denom1 * denom2;
gcd(&result_num, &result_denom);
break;
case '-':
result_num = num1 * denom2 - num2 * denom1;
result_denom = denom1 * denom2;
gcd(&result_num, &result_denom);
break;
case '*':
result_num = num1* num2 ;
result_denom = denom1 * denom2;
gcd(&result_num, &result_denom);
break;
case '/':
result_num = num1 * denom2 ;
result_denom = num2 * denom1;
gcd(&result_num, &result_denom);
break;
}
printf("The sum is %d/%d\n", result_num, result_denom);
return 0;
}
void gcd(int* result_num, int* result_denom)
{
int c;
int num = *result_num;
int denom = *result_denom;
while (*result_denom != 0) {
c = *result_num % *result_denom;
*result_num = *result_denom;
*result_denom = c;
}
*result_denom = denom / *result_num;
*result_num = num / *result_num;
}
7.8
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
int hours, minutes;
int time;
char ch;
printf("Enter a 12-hour time:");
scanf("%d:%d %c", &hours, &minutes, &ch);
switch (toupper(ch)) {
case 'P':
time = hours * 60 + minutes + 12 * 60;
break;
case 'A':
time = hours * 60 + minutes;
break;
}
// 480 583 679 767 840 945 1140 1305 这是几个起飞时间换算为分钟的结果
if (time < 480) {
printf("Closest departure time is 8:00 a.m., arriving at 10:16 a.m.");
}
else if (time < 583) {
if ((time - 480) < (583 - time)) printf("Closest departure time is 8:00 a.m., arriving at 10:16 a.m.");
else printf("Closest departure time is 9:43 a.m., arriving at 11:52 a.m.");
}
else if (time < 679) {
if ((time - 583) < (679 - time)) printf("Closest departure time is 9:43 a.m., arriving at 11:52 a.m.");
else printf("Closest departure time is 11:19 a.m., arriving at 1:31 p.m");
}
else if (time < 767) {
if ((time - 679) < (767 - time)) printf("Closest departure time is 11:19 a.m., arriving at 1:31 p.m.");
else printf("Closest departure time is 12:47 a.m., arriving at 3:00 p.m");
}
else if (time < 840) {
if ((time - 767) < (840 - time)) printf("Closest departure time is 12:47 a.m., arriving at 3:00 p.m.");
else printf("Closest departure time is 2:00 p.m., arriving at 4:08 p.m.");
}
else if (time < 945) {
if ((time - 840) < (945 - time)) printf("Closest departure time is 2:00 p.m., arriving at 4:08 p.m.");
else printf("Closest departure time is 3:45 p.m., arriving at 5:55 p.m.");
}
else if (time < 1140) {
if ((time - 945) < (1140 - time)) printf("Closest departure time is 3:45 p.m., arriving at 5:55 p.m.");
else printf("Closest departure time is 7:00 p.m., arriving at 9:20 p.m.");
}
else {
if ((time - 1140) < (1305 - time)) printf("Closest departure time is 7:00 p.m., arriving at 9:20 p.m.");
else printf("Closest departure time is 9:45 p.m., arriving at 11:58 p.m.");
}
return 0;
}
7.9
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
int hour, minute; char ch;
printf("Enter a 12-hour time: ");
scanf("%d : %d", &hour, &minute);
ch = getchar();
switch (toupper(ch)) {
case 'P':printf("%d : %.2d PM\n", hour + 12, minute); break;
case 'A':printf("%.2d : %.2d AM\n", hour, minute); break;
}
return 5;
}
7.10
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
int i=0; char ch;
printf("Enter a sentence: ");
while ((ch = getchar()) != '\n') {
switch (toupper(ch)) {
case 'A':case 'E':case 'I':case 'O':case 'U':
i++;
}
}
printf("Your sentence contains %d vowels\n", i);
return 5;
}
7.11
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch1, ch;
printf("Enter a first and last name: ");
scanf("%c", &ch1);
while (getchar() != ' ');
while ((ch = getchar()) != '\n') {
putchar(ch);
}
printf(", %c.", ch1);
return 5;
}
7.12
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char opt; //operator
double num1, num2;
printf("Enter an expression: ");
scanf("%lf", &num1);
while (1) {
opt = getchar();
if (opt == '\n'){
break;
}
scanf("%lf", &num2);
switch (opt) {
case '+':num1 += num2; break;
case '-':num1 -= num2; break;
case '*':num1 *= num2; break;
case '/':num1 /= num2; break;
}
}
printf("value of expression is %.2lf\n", num1);
return 5;
}
7.13
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char ch; int i = 0,j=1;
printf("Enter a sentence: ");
while ((ch = getchar()) != '\n') {
i++;
if (ch == ' ') {
i--;
j++;
}
}
printf("Average word length: %.1f\n", i * 1.0 / j);
return 5;
}
7.14
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
double x, y = 1, y1 = 0;
printf("Enter a positive number: ");
scanf("%lf", &x);
do {
y1 = y;
double z = x / y;
double average = (y + z) / 2;
y = average;
//printf("z==%.5lf||average==%.5lf||y1==%.5lf||y==%.5lf||\n", z, average, y1, y);
//printf("y-y1==%.5lf\n", y - y1);
} while (fabs(y - y1)>0.00001*y);
printf("Square root :%.5lf\n", y);
return 5;
}
7.15
法一
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, n=1,sum=1;
printf("Enter a positive integer: ");
scanf("%d", &i);
while (n <= i) {
sum *= n;
n++;
}
printf("%d\n", sum);
return 5;
}
法二
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, n=1;
printf("Enter a positive integer: ");
scanf("%d", &i);
for (; i > 0; n *= i, i--);
//while (i > 0) {
//n *= i;
//i--;
//}
printf("%d\n", n);
return 5;
}