PTA—C语言练习题

这是一系列关于C语言的编程练习题,涵盖了基本数据处理、分支结构、循环结构、函数、控制结构综合和一维数组等多个方面,旨在提升C语言编程能力。题目包括温度转换、计算平均分、一元二次方程求根、比较大小、输出三角形面积和周长、计算邮费等,每个题目都有明确的输入输出格式要求。

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

一、基本数据处理

1-1:温度转换

要求:本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。
输出格式:fahr = 150, celsius = 计算所得摄氏温度的整数值

#include<stdio.h>
int main(void){
   
   
    int fahr,celsius;  //定义华氏温度和摄氏温度
    fahr = 150;  //初始化华氏温度
    celsius = 5 * (fahr - 32) / 9;
    printf("fahr = %d, celsius = %d", fahr, celsius);
    return 0;
}

1-2:计算平均分

要求:已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。
输出格式:math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩

#include<stdio.h>
int main(void){
   
   
    //定义数学、英语、计算机课程、平均成绩并初始化
    int math=87, eng=72, comp=93, average;
    average = (math+eng+comp)/3;
    printf("math = %d, eng = %d, comp = %d, average = %d", math, eng, comp, average);
    return 0;
}

1-3:整数152的各位数字

要求:本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。
输出格式:152 = 个位数字 + 十位数字*10 + 百位数字*100

#include<stdio.h>
int main(void){
   
   
    int one,ten,hundred;  //定义个、十、百位
    int num = 152;
    one = num % 10;
    ten = (num - one) % 100 / 10;
    hundred = (num - one -(ten * 10)) / 100;
    printf("152 = %d + %d*10 + %d*100", one, ten, hundred);
    return 0;
}

二、分支结构

2-1:计算符号函数的值

要求:对于任一整数n,符号函数sign(n)的定义如下:
在这里插入图片描述
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。

#include <stdio.h>
int main(void)
{
   
   
    int n, sign;
    scanf("%d", &n);
    if (n < 0){
   
   
        sign = -1;
    }
    else if (n > 0){
   
   
        sign = 1;
    }
    else
        sign = 0;
    printf("sign(%d) = %d", n, sign);
    return 0;
}

2-2:求一元二次方程的根

要求:本题目要求一元二次方程ax^2+bx+c=0的根,结果保留2位小数。
输入格式:
输入在一行中给出3个浮点系数a、b、c,中间用空格分开。
输出格式:
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
3)如果方程只有一个根,则直接输出此根;
4)如果系数都为0,则输出"Zero Equation";
5)如果a和b为0,c不为0,则输出"Not An Equation"。

#include <stdio.h>
#include <math.h>
int main(void){
   
   
    double a, b, c;
    scanf("%lf %lf %lf", &a, &b, &c);

    if (a != 0){
   
   
        double delta = b * b - 4 * a * c;
        if (delta > 0){
   
   
            double x1, x2;
            x1 = (-b + sqrt(delta)) / (2 * a);
            x2 = (-b - sqrt(delta)) / (2 * a);
            printf("%.2lf\n", x1);
            printf("%.2lf\n", x2);
        }
        else if (delta < 0){
   
   
            if (b != 0){
   
   
                double real = -b * 1.0 / (2 * a);
                double imag = sqrt(-delta) * 1.0 / (2 * a);
                printf("%.2lf%+.2lfi\n", real, imag);
                printf("%.2lf%+.2lfi\n", real, -imag);
            }
            else{
   
   
                double imag = sqrt(-delta) * 1.0 / (2 * a);
                printf("%.2lf%+.2lfi\n", 0.0, imag);
                printf("%.2lf%+.2lfi\n", 0.0, -imag);
            }
        }
        else{
   
   
            printf("%.2lf\n", -b * 1.0 / (2 * a));
        }
    }
    else{
   
   
        if (b != 0)
        {
   
   
            printf("%.2lf\n", -c * 1.0 / b);
        }
        else{
   
   
            if (0 == c)
                printf("Zero Equation\n");
            else
                printf("Not An Equation\n");
        }
    }
    return 0;
}

2-3:比较大小

要求:本题要求将输入的任意3个整数从小到大输出。
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

#include <stdio.h>
int main(void)
{
   
   
    int a, b, c;
    int temp;
    scanf("%d %d %d", &a, &b, &c);
    if (a > b){
   
   
        a = a;
    }
    else{
   
   
        temp = a;
        a = b;
        b = temp;
    }
    if (a > c){
   
   
        a = a;
    }
    else{
   
   
        temp = a;
        a = c;
        c = temp;
    }
    if (b > c){
   
   
        b = b;
    }
    else{
   
   
        temp = b;
        b = c;
        c = temp;
    }
    printf("%d->%d->%d", c, b, a);
    return 0;
}

2-4:输出三角形面积和周长

要求:本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√​s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照的格式输出,保留两位小数。
area = 面积; perimeter = 周长
否则,输出
These sides do not correspond to a valid triangle

#include <stdio.h>
#include <math.h>
int main(void)
{
   
   
    int a, b, c;
    double area, perimeter, s;

    scanf("%d %d %d", &a, &b, &c);
    if (a < b + c && b < a + c 
### C语言选择题题库与练习 对于准备PTA考试或其他C语言相关测试的学生来说,获取高质量的选择题题库至关重要。这些资源不仅有助于巩固基础知识,还能帮助考生熟悉常见的考点解题思路。 #### 获取官方资料 许多高校会提供官方的在线平台供学生练习,例如武汉理工大学提供了专门针对C语言学习者的练习题目集[^4]。这类资源通常经过精心设计,能够全面覆盖课程中的重点难点。 #### 利用网络资源 互联网上有大量免费的学习网站可以作为补充材料。一些知名的编程论坛技术博客也会分享由社区成员整理出来的优质试题集合。通过搜索引擎查询关键词如 "pta c语言 选择题" 或者加入特定的技术交流群组都是不错的方法。 #### 实践真题模拟 除了理论上的复习之外,实际动手编写代码并解决具体问题是提高技能的有效途径之一。尝试完成以往的真实考卷可以帮助更好地适应考场环境下的时间管理压力应对能力。比如,在做一道关于字符判断的选择题时,应该深入理解条件表达式的构建方式[^1];而对于涉及字符串操作的问题,则需注意函数使用的正确性局限性[^3]。 ```cpp // 示例:简单的字符判断程序 #include <iostream> using namespace std; int main(){ char ch; cout << "请输入一个字符:" ; cin >> ch; if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')){ cout << "这是一个字母"; }else{ cout << "这不是一个字母"; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值