键盘输入不超过个字母的字符串

img

img


有没有会的,该考试了什么都不会,各位ggjj行行好救命,键盘输入不超过10个字母的字符串将其大小写互换并逆向输出建议使用指针

仅供参考,谢谢!
您是所有题都不会呢?还是就这题不会啊?

试题一:

img

#include <stdio.h>

int main(void)
{
    double sum = 0.0;
    for (int i = 1, j = 3; i < 11; i += 2, j += 2)
        sum += 1.0 * i / j;

    printf("%lf\n", sum);

    return 0;
}

试题二:

img

#include <stdio.h>

//冒泡法排序
void bubsort(int *arr, int n)
{
    int flag = 1, tmp;
    for (int i = 0; i < n - 1 && flag; i++)
    {
        flag = 0;
        for (int j = 0; j < n - 1; j++)
        {
            if (arr[j] < arr[j + 1])
            {
                tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
                flag = 1;
            }
        }
    }
}

int main(int argc, char *argv[])
{
    int arr[6];

    for (int i = 0; i < 6; i++)
        scanf("%d", &arr[i]);

    bubsort(arr, 6);
    for (int i = 0; i < 6; i++)
        printf("%d  ", arr[i]);
    puts("");

    return 0;
}

试题三:

img

#include <stdio.h>

//大小写字母互转
void makeAlp(char *s)
{
    while (*s != '\0')
    {
        if (*s >= 'a' && *s <= 'z')
            *s -= 32;
        else if (*s >= 'A' && *s <= 'Z')
            *s += 32;
        s++;
    }
}

//逆序输出
void resPuts(char *s)
{
    char *p = s;
    while (*p != '\0')
        p++;
    while (p >= s)
        putchar(*p--);
}

int main(void)
{
    char str[13];
    scanf("%10s", str);

    makeAlp(str);
    resPuts(str);

    return 0;
}

试题四:

img

#include <stdio.h>

#define swap(x, y) {int temp = x; x = y; y = temp;}

int main(void)
{
    int i, arr[10], min, max, mini = 0, maxi = 0;
    int *pmax = &arr[0];
    
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }

    max = min = arr[0];
    for (i = 1; i < 10; i++)
    {
        if (arr[i] > max)
        {
            max = arr[i];
            maxi = i;
        }
        if (arr[i] < min)
        {
            min = arr[i];
            mini = i;
        }
    }

    //调换位置
    swap(arr[0], arr[mini]);
    swap(arr[9], *(pmax + maxi));

    for (i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    puts("");

    return 0;
}

试题五:

img

img

#include <stdio.h>

void make(int n)
{
    int arr[n][n];

    arr[0][0] = 1;
    printf("%d\n", arr[0][0]);

    for (int i = 1; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (j == 0 || j == i)
                arr[i][j] = 1;
            else
            {
                arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
            }
            printf("%-5d", arr[i][j]);
        }
        puts("");
    }
}

int main(void)
{
    make(10);
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char s[11] = {0} , *p = s;
    int i=0,len = 0;
    gets(p);
    while(*(p+i) != 0)
    {
        len++;
        if(*(p+i) >= 'A' && *(p+i)  <= 'Z')
            *(p+i)  += 32;
        else if(*(p+i)  >= 'a' && *(p+i)  <= 'z')
            *(p+i) -= 32;
        i++;
    }
    for(i=len-1;i>=0;i--)
        printf("%c",*(p+i) );
}

参考GPT和自己的思路,以下是使用指针进行大小写互换和逆向输出的示例代码:

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

void reverse_and_swap_case(char *str) {
    // 获取字符串长度
    int len = strlen(str);
    
    // 逆向输出并大小写互换
    for (int i = len - 1; i >= 0; i--) {
        // 判断字符是否为字母
        if (isalpha(str[i])) {
            // 如果是大写字母,转换为小写字母
            if (isupper(str[i])) {
                printf("%c", tolower(str[i]));
            }
            // 如果是小写字母,转换为大写字母
            else {
                printf("%c", toupper(str[i]));
            }
        }
        // 如果不是字母,直接输出
        else {
            printf("%c", str[i]);
        }
    }
}

int main() {
    char str[11];
    printf("请输入不超过10个字母的字符串:");
    scanf("%10s", str);
    
    printf("转换后的字符串为:");
    reverse_and_swap_case(str);
    
    return 0;
}

在这个示例代码中,reverse_and_swap_case 函数接受一个字符串指针作为参数,首先获取字符串的长度,然后从后往前逐个遍历字符串中的字符,如果字符是字母,则进行大小写互换,并输出到控制台上;如果字符不是字母,则直接输出。在 main 函数中,用户可以输入一个不超过 10 个字母的字符串,然后调用 reverse_and_swap_case 函数进行转换,并输出转换后的字符串。
如果对您有帮助,请给与采纳,谢谢。

该回答内容部分引用GPT,GPT_Pro更好的解决问题
答:要实现键盘输入不超过10个字母的字符串将其大小写互换并逆向输出的目的,可以使用指针来实现。可以先使用scanf函数从键盘输入10个字母,然后将其保存到字符数组里,然后利用指针对字符数组里的每一个字符进行大小写转换,最后利用循环和指针将转换后的字符串逆序输出即可。

例如:

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

int main()
{
    char str[11]; // 定义一个字符数组,用来保存10个字母
    printf("请输入10个字母:");
    scanf("%s", str); // 从键盘上输入10个字母

    char *p = str; //定义一个指针变量p,指向str数组的首地址

    while (*p != '\0') // 利用循环和指针对字符数组里的每一个字符进行大小写转换
    {  
        if ( *p >= 'A' && *p <= 'Z' ) // 如果是大写字母,则转为小写
        {  
            *p = *p + 32;  
        }  
        else if ( *p >= 'a' && *p <= 'z' ) // 如果是小写字母,则转为大写
        {  
            *p = *p - 32;  
        }  
        p++;  // 指针变量p的值加1,即将指针向前移动一位  
    }

    printf("转换大小写后的字符串:");

    int len = strlen(str); // 求出转换后的字符串的长度

    for (int i=len-1; i>=0; i--) // 利用循环和指针将转换后的字符串逆序输出
    {  
        char *q = &str[i];  // 定义一个新的指针变量q,将其赋值为str数组最后一位地址(逆序时从最后一位开始打印)  
        printf("%c", *q);  // 打印出当前位置的字符 
        q--;  // 指针变量q的值减1,即将指针向前移动一位 
    }

    printf("\n");

    return 0;
} 

如果回答有帮助,望采纳。

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

void reverse_string(char *str) {
    int i = 0;
    int j = strlen(str) - 1;
    char temp;
    while (i < j) {
        temp = str[i];
        str[i] = str[j];
        str[j] = temp;
        i++;
        j--;
    }
}

void swap_case(char *str) {
    while (*str != '\0') {
        if (*str >= 'a' && *str <= 'z') {
            *str = *str - ('a' - 'A');
        }
        else if (*str >= 'A' && *str <= 'Z') {
            *str = *str + ('a' - 'A');
        }
        str++;
    }
}

int main() {
    char str[11];
    printf("请输入不超过10个字母的字符串: ");
    scanf("%s", str);
    swap_case(str);
    reverse_string(str);
    printf("转换后的字符串为: %s\n", str);
    return 0;
}

以下答案基于ChatGPT与GISer Liu编写:
以下是一个C++程序,它可以实现您所描述的操作:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char str[11];
    cout << "请输入不超过10个字母的字符串:" << endl;
    cin >> str;

    int len = strlen(str);
    char *p = str + len - 1;

    cout << "大小写互换并逆向输出的结果是:" << endl;
    while (p >= str) {
        if (*p >= 'a' && *p <= 'z') {
            cout << (char)(*p - 'a' + 'A');
        } else if (*p >= 'A' && *p <= 'Z') {
            cout << (char)(*p - 'A' + 'a');
        } else {
            cout << *p;
        }
        p--;
    }
    cout << endl;

    return 0;
}

程序首先从标准输入流中读入一个不超过10个字母的字符串。然后,它使用指针来逆向遍历字符串中的每个字符,对于字母字符,它将其大小写互换,对于非字母字符,它直接输出。最后,程序输出大小写互换并逆向输出的结果。



 §§ 1000
+#C语言 键盘输入不超过个字母的字符串 
+代码可以使用以下形式:
 §§ --- README.md
-方法1:
 §§ 1002
+##方法1:
 §§ --- README.md
-char str[100];
-scanf("%s",str);
 §§ 1004
+    char str[100];
+    scanf("%s",str);
 §§ --- README.md
-方法2:
 §§ 1007
+##方法2:
 §§ --- README.md
-char str[100];
-int i=0;
-char ch;
-while((ch=getchar())!='/n')
-  str[i++]=ch;
-str[i]='/0';
 §§ 1009
+    char str[100];
+    int i=0;
+    char ch;
+    while((ch=getchar())!='/n')
+        str[i++]=ch;
+    str[i]='/0';

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^