上机练习12

p222.c

/*
编写一程序P222.C实现以下功能
  从键盘上读入一行字符(约定:字符数≤127字节),按以下方法将其加密变换:
    A->Z    a->z
    B->Y    b->y
    C->X    c->x
    ……    ……
    Z->A    z->a
  即字母A变成Z、字母B变成Y、…,非字母字符不变。最后在屏幕上先显示这一行字符的长度,再显示生成的密文。
  编程可用素材:printf("Please input string: ")、printf("\nzi fu chuan chang du: …、printf("\nmi wen: …。
*/
#include <stdio.h>
#include <string.h>
#define N 128

int main(void)
{
    char str1[N], str2[N];
    int i, n;
    printf("Please input string: ");
    gets(str1);
    n = strlen(str1);
    printf("\nzi fu chuan chang du: %d", n);
    for (i = 0; i < n; i++)
    {
        if (str1[i] >= 'A' && str1[i] <= 'Z')
        {
            str2[i] = 'Z' + 'A' - str1[i];
        }
        else if (str1[i] >= 'a' && str1[i] <= 'z')
        {
            str2[i] = 'z' + 'a' - str1[i];
        }
        else
        {
            str2[i] = str1[i];
        }
    }
    str2[i] = '\0';
    printf("\nmi wen: %s", str2);
    return 0;
}

p258.c

/*
编写一程序P258.C实现以下功能
  从键盘读入一行字符(约定:字符数≤127字节),统计该行字符中出现的字母、数字和其它字符的数量,最后按示例格式输出这三类字符的数量及其内容。
编程可用素材:
printf("Please intput the string: ");
printf("\nDigistal string length = …, Digitals: …\n"…;
printf("Letter string length = …, Letters: …\n"…;
printf("Symbol string length = …, Symbols: …\n"…;
*/
#include <stdio.h>
#include <string.h>
#define N 128

int main(void)
{
    char str[N], digital[N], letter[N], symbol[N];
    int i, ld, ll, ls;
    int len;
    ld = ll = ls = 0;
    printf("Please intput the string: ");
    gets(str);
    len = strlen(str);
    // process
    for (i = 0; i < len; i++)
    {
        if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')
        {
            letter[ll++] = str[i];
        }
        else if (str[i] >= '0' && str[i] <= '9')
        {
            digital[ld++] = str[i];
        }
        else
        {
            symbol[ls++] = str[i];
        }
    }
    digital[ld] = '\0';
    letter[ll] = '\0';
    symbol[ls] = '\0';
    // output
    printf("\nDigistal string length = %d, Digitals: %s\n", ld, digital);
    printf("Letter string length = %d, Letters: %s\n", ll, letter);
    printf("Symbol string length = %d, Symbols: %s\n", ls, symbol);

    return 0;
}

p311.c

/*
编写一程序P311.C实现以下功能
  ①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。
  ②将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,
则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如:
    s1输入为"123456789",S2输入为"abcdefghijk",则输出的s1为:
       1a2b3c4d5e6f7g8h9ijk
  ③在屏幕上输出新生成的s1。
  编程可用素材:printf("Please input string1:")...、printf("Please input string2:")...、printf("\nstring1:...\n"...。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 256

int main(void)
{
    char s1[N], s2[N], s3[N];
    int l1, l2;
    int i, j = 0;
    printf("Please input string1:");
    gets(s1);
    printf("Please input string2:");
    gets(s2);
    l1 = strlen(s1);
    l2 = strlen(s2);
    if (l2 == 0)
    {
        printf("\nstring1:%s\n", s1);
        exit(0);
    }
    else if (l1 == 0)
    {
        strcpy(s1, s2);
        printf("\nstring1:%s\n", s1);
        exit(0);
    }
    else
    {
        for (i = 0; i < (l1 > l2 ? l2 : l1); i++)
        {
            s3[j++] = s1[i];
            s3[j++] = s2[i];
        }
        for (; i < (l1 > l2 ? l1 : l2); i++)
        {
            if (l1 > l2)
            {
                s3[j++] = s1[i];
            }
            else
            {
                s3[j++] = s2[i];
            }
        }
        s3[j] = '\0';
    }
    strcpy(s1, s3);
    printf("\nstring1:%s\n", s1);
    return 0;
}

p726.c

/*
编写一程序P726.C实现以下功能
  从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。
  注意:
  (1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
  (2)若用户输入时输入了很多字符,则仅读入前100个字符。
  (3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
  (4)编程可用素材:printf("input a string: ")、printf("\nThe string lenth is: …、printf("\nThe string is: …。
*/
#include <stdio.h>
#define N 101

int main(void)
{
    char str[N];
    char ch;
    int i = 0;
    int len = 0;
    printf("input a string: ");
    while ((ch = getchar()) != '\n' && i < 100 && ch != EOF)
    {
        str[i++] = ch;
    }
    len = i;
    str[i] = '\0';
    printf("\nThe string lenth is: %d", len);
    printf("\nThe string is: %s", str);
    return 0;
}

p743.c

/*
编写一程序P743.C实现以下功能
  从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。
注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。编程可用素材:printf("Input a string: ")、printf("\nThe result is: ")。
*/
#include <stdio.h>
#include <string.h>
#define N 128

int main(void)
{
    char str[N];
    int len;
    int i;
    printf("Input a string: ");
    gets(str);
    len = strlen(str);
    printf("\nThe result is: ");
    for (i = 0; i < len; i++)
    {
        printf("%c", str[len - i - 1]);
    }
    return 0;
}

p750.c

/*
编写一程序P750.C实现以下功能
  输入字符串s(约定:字符数≤100字节),将字符串s中所有字符‘*’删除,并将修改后的字符串显示出来。
编程可用素材:printf("Please input a string: ")、printf("\nThe result is: ")。
*/
#include <stdio.h>
#include <string.h>
#define N 101

int main(void)
{
    char str1[N], str2[N];
    int i, j = 0;
    int len;
    printf("Please input a string: ");
    gets(str1);
    len = strlen(str1);
    strcpy(str2, str1);
    printf("\nThe result is: ");
    for (i = 0; i < len; i++)
    {
        if (str2[i] != '*')
        {
            str1[j++] = str2[i];
        }
    }
    str1[j] = '\0';
    printf("%s", str1);
    return 0;
}

p771.c

/*
编写一程序P771.C实现以下功能
  编程在一个已知的字符串(约定:字符数≤127字节)中查找最长单词,输出最长单词的长度。
  注意事项:
  (1)只考虑输入的字符串中仅含空格和其它可见字符,仅用空格用来分隔不同单词。
  (2)字符串中可能只有1个单词。
  (3)字符串中可能1个单词都没有,此时最长单词的长度为0。
  (4)编程可用素材:printf("please input a string:\n")...、printf("\nmax_length of the string is: %d\n"...。
*/
#include <stdio.h>
#include <string.h>

#define N 128
int main(void)
{
    char str[N];
    int i, len, count, max;
    printf("please input a string:\n");
    gets(str);
    len = strlen(str);
    count = 0;
    for (i = 0; i < len; i++)
    {
        if (str[i] == ' ')
        {
            count = 0;
        }
        if (str[i] != ' ')
        {
            count++;
            printf("%d\n", count);
            if (max < count)
            {
                max = count;
            }
        }
    }
    printf("\nmax_length of the string is: %d\n", max);
    return 0;
}

p772.c

/*
编写一程序P772.C实现以下功能
  对从键盘输入的一行字符(约定:字符数≤127字节)进行排序(按每个字符的ASCII值由小到大)并输出。
注意:程序中不能使用库函数gets、fgets或使用同名的变量、函数、单词,
编程可用素材:printf("input the string: ")...、printf("\nResult: ")...。
*/
#include <stdio.h>
#define N 128

int main(void)
{
    char str[N], ch;
    int i = 0;
    int j;
    int len;
    printf("input the string: ");
    while ((ch = getchar()) != '\n' && i < 128)
    {
        str[i++] = ch;
    }
    str[i] = '\0';
    len = i;
    printf("%s", str);
    // sort
    for (i = 0; i < len - 1; i++)
    {
        for (j = 0; j < len - i - 1; j++)
        {
            if (str[j] > str[j + 1])
            {
                ch = str[j];
                str[j] = str[j + 1];
                str[j + 1] = ch;
            }
        }
    }
    printf("\nResult: ");
    printf("%s", str);
    return 0;
}

p827.c

/*
编写一程序P827.C实现以下功能
  从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出长度最长的字符串的长度。
编程可用素材:
printf("Please input the first string:\t");
printf("Please input the second string:\t");
printf("Please input the third string:\t");
printf("\n最长的字符串长度为:…;
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
    char s1[N], s2[N], s3[N];
    int l1, l2, l3, max;
    printf("Please input the first string:\t");
    gets(s1);
    l1 = strlen(s1);
    printf("Please input the second string:\t");
    gets(s2);
    l2 = strlen(s2);
    printf("Please input the third string:\t");
    gets(s3);
    l3 = strlen(s3);
    max = l1;
    if (max < l2)
    {
        max = l2;
    }
    if (max < l3)
    {
        max = l3;
    }
    printf("\n最长的字符串长度为:%d", max);

    return 0;
}

p828.c

/*
编写一程序P828.C实现以下功能
  从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出最大的字符串。
编程可用素材:
printf("Please input the first string:\t");
printf("Please input the second string:\t");
printf("Please input the third string:\t");
printf("\n最大字符串是:…;
*/
#include <stdio.h>
#include <string.h>
#define N 128
int main(void)
{
    char s1[N], s2[N], s3[N];
    char tmp[N];
    printf("Please input the first string:\t");
    gets(s1);
    printf("Please input the second string:\t");
    gets(s2);
    printf("Please input the third string:\t");
    gets(s3);
    strcpy(tmp, s1);
    if (strcmp(tmp, s2) < 0)
    {
        strcpy(tmp, s2);
    }
    if (strcmp(tmp, s3) < 0)
    {
        strcpy(tmp, s3);
    }
    printf("\n最大字符串是:%s", tmp);

    return 0;
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐