谭浩强C语言设计习题答案(四)

用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。问在键盘上如何输入?

#include<stdio.h>

int main()

{
    int a,b;
    float x,y;
    char c1,c2;
    scanf("a=%d b=%d",&a,&b);
    scanf("%f %e",&a,&y);
    scanf("%c%c",&c1,&c2);
    printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
    return 0;
}

答:


a=3 b=7
8.5 71.82Aa

请编写程序将“China”译成密码,密码规律是:用原来的字母后第4个字母替代原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。分别用putchar函数和printf函数输出这5个字符,完成此程序。


#include <stdio.h>

int main() {

    char text[] = "China"; // 原始文本

    char password[6]; // 存储密码的数组,多一个位置用于存储字符串结束符'\0'

    int shift = 4; // 后移的字母数

    for (int i = 0; i < 5; i++) {

        char originalChar = text[i]; // 原始字符

        password[i] = shift + originalChar;

    }

    password[5] = '\0'; // 添加字符串结束符

    printf("使用 putchar 函数输出密码: ");

    for (int i = 0; i < 5; i++) {

        putchar(password[i]);

    }

    putchar('\n');

    printf("使用 printf 函数输出密码: %s\n", password);

    return 0;

}

//以下是一个C程序,将"China"翻译成密码并使用 putchar 函数和 printf 函数输出这 5 个字符:

#include <stdio.h>

int main() {
    char text[] = "China"; // 原始文本
    char password[6]; // 存储密码的数组,多一个位置用于存储字符串结束符'\0'
    int shift = 4; // 后移的字母数

    for (int i = 0; i < 5; i++) {
        char originalChar = text[i]; // 原始字符

        // 判断字符是否是大写字母
        if (originalChar >= 'A' && originalChar <= 'Z') {
            password[i] = ((originalChar - 'A' + shift) % 26) + 'A';
        }
        // 判断字符是否是小写字母
        else if (originalChar >= 'a' && originalChar <= 'z') {
            password[i] = ((originalChar - 'a' + shift) % 26) + 'a';
        }
        // 如果不是字母,直接复制
        else {
            password[i] = originalChar;
        }
    }

    password[5] = '\0'; // 添加字符串结束符

    printf("使用 putchar 函数输出密码: ");
    for (int i = 0; i < 5; i++) {
        putchar(password[i]);
    }
    putchar('\n');

    printf("使用 printf 函数输出密码: %s\n", password);

    return 0;
}


//这个程序首先定义了一个原始文本 "China" 和一个存储密码的字符数组 password,然后使用循环对//每个字符进行后移操作,根据字符是大写字母、小写字母还是其他字符,进行相应的处理,最后输//出密码。

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字。请编写c程序。


以下是一个C程序,用于计算给定半径和高度的圆和圆柱的周长、面积以及球的表面积和体积。程序使用 `scanf` 函数输入半径和高度的值,然后计算并输出结果:

```c
#include <stdio.h>
#include <math.h>

int main() {
    double r, h;
    const double pi = 3.14159265359;

    // 输入圆的半径和圆柱的高度
    printf("请输入圆的半径(r)和圆柱的高度(h):");
    scanf("%lf %lf", &r, &h);

    // 计算圆的周长和面积
    double circle_circumference = 2 * pi * r;
    double circle_area = pi * pow(r, 2);

    // 计算圆球的表面积和体积
    double sphere_surface_area = 4 * pi * pow(r, 2);
    double sphere_volume = (4.0 / 3.0) * pi * pow(r, 3);

    // 计算圆柱的体积
    double cylinder_volume = circle_area * h;

    // 输出计算结果
    printf("圆的周长为:%.2lf\n", circle_circumference);
    printf("圆的面积为:%.2lf\n", circle_area);
    printf("圆球的表面积为:%.2lf\n", sphere_surface_area);
    printf("圆球的体积为:%.2lf\n", sphere_volume);
    printf("圆柱的体积为:%.2lf\n", cylinder_volume);

    return 0;
}

```

您可以运行此程序,按照提示输入圆的半径和圆柱的高度,然后程序将计算并输出所需的结果。

编程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar函数和printf函数输出这两个字符。思考以下问题:

(1)变量c1和c2应定义为字符型还是整数?或二者皆可?

(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?

(3)整数变量与字符变量是否在任何情况下都可以互相代替?如:

char c1,c2;与int c1,c2;

是否无条件的等价?


(1) 变量`c1`和`c2`可以定义为字符型。字符型变量通常用于存储单个字符,可以用`char`类型来声明。

```c
char c1, c2;
```

(2) 要求输出`c1`和`c2`的ASCII码,可以使用`putchar`函数或`printf`函数。以下是两种方法的示例:

使用`putchar`函数:

```c
#include <stdio.h>

int main() {
    char c1, c2;
    
    printf("请输入两个字符:");
    c1 = getchar();
    c2 = getchar();

    putchar(c1);
    putchar(c2);

    printf("\n%c 的 ASCII码是:%d\n", c1, c1);
    printf("%c 的 ASCII码是:%d\n", c2, c2);

    return 0;
}

```

使用`printf`函数:

```c
#include <stdio.h>

int main() {
    char c1, c2;
    
    printf("请输入两个字符:");
    c1 = getchar();
    c2 = getchar();

    printf("%c 的 ASCII码是:%d\n", c1, c1);
    printf("%c 的 ASCII码是:%d\n", c2, c2);

    return 0;
}

```

两者都可以输出字符的ASCII码。

(3) 整数变量和字符变量不是在所有情况下都可以互相代替。虽然`char`类型在C语言中通常用于表示字符,但它实际上是一个整数类型,可以用来存储整数值,但它有一个较小的范围。`int`类型用于表示整数,通常具有更大的范围。

在某些情况下,可以将`char`类型隐式转换为`int`类型,例如:

```c
char c = 'A';
int i = c; // 可以将char赋值给int

```

但是,将`int`类型显式转换为`char`类型时需要注意范围。如果`int`的值超出了`char`类型的范围,可能会导致截断或意外的结果。

```c
int i = 1000;
char c = i; // 注意:可能会导致截断

```

因此,在处理字符时,通常建议使用`char`类型,而在处理整数时,使用`int`类型。根据具体情况,需要谨慎进行类型转换。

猜你喜欢

转载自blog.csdn.net/qq_50942093/article/details/132981437