C语言字符串长度,追加,赋值,逆序,回文数(拆数和拼数)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

求字符串长度

字符串复制

字符串追加

例:从键盘输入一串字符以回车结束判断其中数字字符的个数

如果让你输出字符串个数和字符串本身就需要用到数组

逆序问题

数值或字符串

 将一个含有10个元素的整形数组逆序存放后输出

逆序引出回文

输入一个字符串逆序后输出

回文问题

回文字符

输入一个字符判断是不是回文

 回文数

输入一个数判断是不是回文数


求字符串长度

n可以不用

#include<stdio.h>
void main()
{
    int i=0, n = 0;
    char s[100];
    gets(s);
    while (s[i] != '\0')
    {
        n++;
        i++;
    }    
    printf("长度为%d", n);
}

字符串复制

#include<stdio.h>
void main()
{
    char a[40], b[40];
    int i = 0;
    gets(a);
    while (a[i] != '\0') {
        b[i] = a[i];
        i++;
    }
    b[i] = '\0';
    puts(b);
}

字符串追加

#include<stdio.h>
void main()
{
    //把字符串b拼接到字符串a
    char a[40], b[20];
    int i = 0, j = 0;
    gets(a);
    gets(b);
    while (a[i] != '\0')//统计a的长度,找到\0
        i++;
    while (b[j] != '\0')//从长度后开始追加
    {
        a[i] = b[j];
        i++;
        j++;
    }
    a[i] = '\0';
    printf("\n");
    puts(a);
}

例:从键盘输入一串字符以回车结束判断其中数字字符的个数

#include<stdio.h>
void main()
{
    int i=0;
    char s;
    while ((s=getchar())!= '\n') {
        if (s >= '0' && s <= '9') i++;
    }
    printf("%d", i);
}

如果让你输出字符串个数和字符串本身就需要用到数组

#include<stdio.h>
void main()
{
    char arr[10];
    int i = 0,n = 0;
    while ((arr[i] = getchar()) != '\n') {
        if (arr[i] >= '0' && arr[i] <= '9') n++;
        i++;
    }
    arr[i] = '\0';
    printf("%d\n", n);
    printf("%s", arr);
}

逆序问题

数值或字符串

n个数字符要交换 n/2次

a[i]与a[n-i-1]交换 

 将一个含有10个元素的整形数组逆序存放后输出

#include<stdio.h>
void main()
{
    int i, arr[10], temp,n=0;
    //输入
    for (i = 0; i < 10; i++)
        scanf("%d", &arr[i]);
    n = i;
    //逆序
    for (i = 0; i < n / 2; i++) {
        temp = arr[i];
        arr[i] = arr[n - 1 - i];
        arr[n - 1 - i] = temp;
    }
    //输出逆序后的数组
    for (i = 0; i < 10; i++)
        printf("%4d", arr[i]);
}

逆序引出回文

输入一个字符串逆序后输出

#include<stdio.h>
void main()
{
    char s[100], temp;
    int i = 0, n = 0;
    scanf("%s", s);
    //统计个数,找\0位置
    while (s[i++] != '\0') n++;
    for (i = 0; i < n / 2; i++) {
        temp = s[i];
        s[i] = s[n - 1 - i];
        s[n - 1 - i] = temp;
    }
    printf("%s", s);
}

回文问题

和上面一个道理 从交换变成了比较

回文字符

输入一个字符判断是不是回文

#include<stdio.h>
#include<string.h>
void main()
{
    char s[100];
    int n, i;
    gets(s);//输入
    n = strlen(s);//求长度
    for (i = 0; i < n / 2; i++) 
        if (s[i] != s[n - 1 - i]) break;
    //加一个站岗的,看看是从哪里出来的
    if (i >= n / 2) printf("是回文数");
    else printf("不是回文数");
}

 回文数

两种方法 第一种分解 第二种 求它 的逆序数如果这个逆序数和本身相同那么即时回文数

输入一个数判断是不是回文数

求逆序数会分解数和构造数就会求了

#include<stdio.h>
void main() {
    int num,t=0,s=0,num1;
    printf("请您输入一个数:");
    scanf("%d", &num);
    num1 = num;//一会要拆,先存一下它
    do {
        t = num % 10;//从后面开始取
        s = s * 10 + t;//拼接
        num = num / 10;//取完了把个位干掉
    } while (num);//   num!=0
    if (s == num1) printf("是回文数");
    else printf("不是回文数");
}

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6