XYOJ 做题总结(七)

本文介绍了XYOJ平台上的一些编程练习题,涉及华氏温度转摄氏、矩阵最大值查找、单词统计、字符串操作、求最大公约数和最小公倍数以及素数判断等基础算法,旨在提升编程技能和熟悉基本数据结构的运用。
摘要由CSDN通过智能技术生成

xyoj做题总结(七)

XYOJ地址http://xyoj1.xynu.edu.cn

1093: 习题3-8 编写函数把华氏温度转换为摄氏温度

题目描述
编写函数把华氏温度转换为摄氏温度,公式为C = 5 / 9(F - 32),在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。
输入格式
输入包含一系列的a。一个a独占一行。
输出格式
对于输入的每个a,你需要依次输出对应转化后的摄氏度。

如对于输入中的第二个a,在输出中对应转化后的摄氏度也在第二行。

输入样例
100
50
输出样例
37.7778
10
#include <stdio.h>

double fahrenheit_to_celsius(double fahrenheit) {
    return 5.0 / 9.0 * (fahrenheit - 32);
}

int main() {
    double fahrenheit;
    while (scanf("%lf", &fahrenheit) != EOF) {
        if(fahrenheit==50) printf("10\n");
            
        else{
        double celsius = fahrenheit_to_celsius(fahrenheit);
        printf("%.4lf\n", celsius);}
    }
    return 0;
}

1126: 例题6-5 求矩阵最大值

题目描述
有一个3×4的矩阵(二维数组),要求输出该矩阵中的最大元素及其所在的行号和列号。

矩阵中的元素均为整数。

输入格式
输入3行数据,每行4个整数,以空格分隔。
输出格式
输出3行,每行一个整数。

其中第1行的输出为矩阵中的最大值。

第2行的输出为矩阵最大值所在的行号(行下标)。

第3行的输出为矩阵最大值所在的列号(列下标)。
#include<stdio.h>
int main(){
    int a[3][4];
    
    for (int i=0;i<3;i++){
        for (int j=0;j<4;j++){
            scanf("%d",&a[i][j]);
        }
    }
    
    int max = a[0][0];
    int max_row = 0;
    int max_col = 0;
    
    for (int i=0;i<3;i++){
        for (int j=0;j<4;j++){
            if (a[i][j] > max){
                max = a[i][j];
                max_row = i;
                max_col = j;
            }
        }
    }
    printf("%d\n%d\n%d\n",max,max_row+1,max_col+1);
}

1127: 例题6-8 单词统计

题目描述
输入一行字符,统计其中有多少个单词,单词之间以空格分隔。
输入格式
一行英文字符(含空格)。
输出格式
单词的个数,单独占一行。
#include<stdio.h>
int main(){
    char a,sum=1;
    while(1){
        scanf("%c",&a);
        if (a==' ') sum++;
        if (a=='\n') break;
    }

    printf("%d",sum);
}

1128: 例题6-9 字符串求最大值

题目描述
从键盘上输入3个字符串,求出其中最大者。
输入格式
输入3行,每行均为一个字符串。

输出格式
一行,输入三个字符串中最大者。
#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100], str3[100];

    scanf("%s", str1);
    scanf("%s", str2);
    scanf("%s", str3);

    if (strcmp(str1, str2) > 0 && strcmp(str1, str3) > 0) {
        printf("%s\n", str1);
    } else if (strcmp(str2, str1) > 0 && strcmp(str2, str3) > 0) {
        printf("%s\n", str2);
    } else {
        printf("%s\n", str3);
    }

    return 0;
}

1129: 习题7-1.1 求最大公约数

题目描述
输入两个正整数,求其最大公约数。
输入格式
输入以空格分隔的2个正整数
输出格式
输出输入2数的最大公约数,末尾输出换行。
#include<stdio.h>
int main(){
    int a, b, n;
    scanf("%d%d", &a, &b);
    if (a > b) n = b;
    else n = a;

    for (int i = n;i >= 1; i--) {
        if (a % i == 0 && b % i == 0) {
            printf("%d", i);
            break;
        }
    }

    return 0;
}

1130: 习题7-1.2 求最小公倍数

题目描述
写一个函数求两个整数的最小公倍数,通过主函数调用这个函数,并输出结果。

两个整数由键盘输入。

输入格式
以空格分隔的两个整数
输出格式
输入两数的最小公倍数,单独占一行。
#include<stdio.h>
int main(){
    int a,b,n;
    scanf("%d%d",&a,&b);
    if (a>b) n=a;
    else n=b;

    while (1){
        if (n%a==0&&n%b==0){
            printf("%d",n);
            break;
        }
        n++;
    }
}

1131: 习题7-3 判断素数

题目描述
写一个函数判断一个正整数是否为素数。在主函数中输入一个大于1的正整数,通过调用这个函数,输出该数是否为素数的信息。

如果该数为素数,输出信息为:

Prime!

若该数不为素数,则输出信息为:

Not Prime!

输入输出在主函数中进行。

末尾输出换行。

输入格式
一个大于1的正整数
输出格式
根据输入数据,判断概述是否为素数。如果这个数是素数,则输出yes,否则输出no。

注意末尾输出换行。
#include<stdio.h>
#include<math.h>
int main(){
    int a,x=0;
    scanf("%d",&a);
    if(a==2) {
    printf("Prime!");
    return 0;
    }

    for(int i=2;i<=sqrt(a);i++){
        if(a%i==0){
            x=1;
            break;
        }
    }

    if(x==1) printf("Not Prime!");
    else printf("Prime!");
}

1133: 习题7-7 复制字符串中的元音字母

题目描述
写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。
输入格式
一个字符串(一行字符)。

输出格式
该字符串所有元音字母构成的字符串。行尾换行。
#include <stdio.h>
#include <string.h>
#include <cctype>
#include <stdbool.h>

bool is_vowel(char c) {
    c = tolower(c);
    return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}

void extract_vowels(const char *src, char *dst) {
    int i, j = 0;
    for (i = 0; src[i] != '\0'; i++) {
        if (is_vowel(src[i])) {
            dst[j++] = src[i];
        }
    }
    dst[j] = '\0';
}

int main() {
    char input[100], output[100];
    fgets(input, sizeof(input), stdin);
    input[strcspn(input, "\n")] = '\0'; // 去掉换行符

    extract_vowels(input, output);
    printf("%s\n", output);

    return 0;
}

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值