wsccp 发表于 2023-10-25 17:29:20

求助!!!很急!!!


1.随机输入几个数,可选择从小到大或从大到小排序方法进行输出。要求: (1)可输入负数,小数且可正常排序
(2) 可自己写一个函数且程序仅包含 main 函数和这个自写函数(3) 仅可在自写的函数进行一次排序(4)在main 中调用函数并选择输出方式
示例:输入:51.1-4-1.20排序 (0 为从小到大,1为从大到小) :0输出:-4-1.201.15

2.随机输入两串字符串,找出两串字符串之间所有相同的字符并按照ASCII码大小输出并统计重复字符的个数。要求: (1)可输入小写,大写,数字(2) 遇到重复的字符只输出一次并只算一个个数(3)尽可能完成按照ASCII 码大小输出示例:输: sjcie2Sn3efhilAdjcb5sSruy34输出: 3Scis个数:5

3.随机输入两串字符串,找出两串字符串之间重复且连续最长的字符串输出。
要求: (1)只含有大小写字母(2)输出所有连续重复字符串中最长的示例:输入: AsdfYuGhjklzxcvasdfbnYuGhjkYu输出: YuGhj

4.利用一个命名为 time的结构体做一个时间表,并完成简单的运算要求: (1) 包含 year,moon,day,hour,minute 这五个量(2) 输出初定时间可以正常显示(3) 输入时间可进行简单的加减(4) 直至输入0可结束程序
(5)默认输出年份为 23
示例: 输入初定时间 :7,29,17,27输出:23y7m29d17h27m
输入:3d7h33m
输出:23y8m2d1h0m
输入:0
输出:down

有没有大佬知道这四道题怎么做{:5_100:}

isdkz 发表于 2023-10-25 17:31:04

问题1:

#include <stdio.h>
#include <stdlib.h>

void sortNumbers(float *numbers, int size, int order) {
    int i, j;
    float temp;
   
    for (i = 0; i < size - 1; i++) {
      for (j = 0; j < size - i - 1; j++) {
            if ((order == 0 && numbers > numbers) || (order == 1 && numbers < numbers)) {
                temp = numbers;
                numbers = numbers;
                numbers = temp;
            }
      }
    }
}

int main() {
    int size, order, i;
    float *numbers;
   
    printf("请输入要排序的数字个数:");
    scanf("%d", &size);
   
    numbers = (float *) malloc(size * sizeof(float));
   
    printf("请输入要排序的数字,以空格分隔:");
    for (i = 0; i < size; i++) {
      scanf("%f", &numbers[ i]);
    }
   
    printf("请选择排序方式(0为从小到大,1为从大到小):");
    scanf("%d", &order);
   
    sortNumbers(numbers, size, order);
   
    printf("排序结果:");
    for (i = 0; i < size; i++) {
      printf("%.2f ", numbers[ i]);
    }
   
    free(numbers);
   
    return 0;
}


问题2:

#include <stdio.h>
#include <string.h>

void findCommonChars(char *str1, char *str2) {
    int count = {0};
    int i;
   
    for (i = 0; i < strlen(str1); i++) {
      count]++;
    }
   
    for (i = 0; i < strlen(str2); i++) {
      if (count] > 0) {
            count] = -1;
      }
    }
   
    printf("相同的字符按ASCII码大小输出:");
    for (i = 0; i < 128; i++) {
      if (count[ i] == -1) {
            printf("%c ", i);
      }
    }
   
    int commonCount = 0;
    for (i = 0; i < 128; i++) {
      if (count[ i] == -1) {
            commonCount++;
      }
    }
   
    printf("\n重复字符的个数:%d\n", commonCount);
}

int main() {
    char str1, str2;
   
    printf("请输入第一个字符串:");
    scanf("%s", str1);
   
    printf("请输入第二个字符串:");
    scanf("%s", str2);
   
    findCommonChars(str1, str2);
   
    return 0;
}


问题3:

#include <stdio.h>
#include <string.h>

void findLongestRepeatedString(char *str1, char *str2) {
    int i, j, k;
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    int maxLen = 0, maxIndex = 0;
   
    for (i = 0; i < len1; i++) {
      for (j = 0; j < len2; j++) {
            if (str1[ i] == str2) {
                int len = 0;
                for (k = 0; k + i < len1 && k + j < len2; k++) {
                  if (str1 != str2) {
                        break;
                  }
                  len++;
                }
                if (len > maxLen) {
                  maxLen = len;
                  maxIndex = i;
                }
            }
      }
    }
   
    printf("重复且连续最长的字符串输出:%.*s\n", maxLen, str1 + maxIndex);
}

int main() {
    char str1, str2;
   
    printf("请输入第一个字符串:");
    scanf("%s", str1);
   
    printf("请输入第二个字符串:");
    scanf("%s", str2);
   
    findLongestRepeatedString(str1, str2);
   
    return 0;
}


问题4:

#include <stdio.h>

struct Time {
    int year;
    int month;
    int day;
    int hour;
    int minute;
};

void printTime(struct Time t) {
    printf("%dy%dm%dd%dh%dm\n", t.year, t.month, t.day, t.hour, t.minute);
}

void addTime(struct Time *t, int d, int h, int m) {
    t->day += d;
    t->hour += h;
    t->minute += m;
   
    if (t->minute >= 60) {
      t->hour += t->minute / 60;
      t->minute %= 60;
    }
   
    if (t->hour >= 24) {
      t->day += t->hour / 24;
      t->hour %= 24;
    }
}

int main() {
    struct Time t = {23, 7, 29, 17, 27};
    int d, h, m;
   
    printTime(t);
   
    while (1) {
      printf("请输入要增加的时间(天 小时 分钟),以空格分隔:");
      scanf("%d %d %d", &d, &h, &m);
      
      if (d == 0 && h == 0 && m == 0) {
            printf("down\n");
            break;
      }
      
      addTime(&t, d, h, m);
      
      printTime(t);
    }
   
    return 0;
}


以上是四个问题的解决方案,请根据需要选择相应的代码进行编译和运行。

wsccp 发表于 2023-10-25 17:35:15

isdkz 发表于 2023-10-25 17:31
问题1:




感谢大佬

wsccp 发表于 2023-10-25 17:40:18

isdkz 发表于 2023-10-25 17:31
问题1:




为什么第二个代码会有警告,求解答
页: [1]
查看完整版本: 求助!!!很急!!!