C语言字符串长度,追加,赋值,逆序,回文数(拆数和拼数)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
求字符串长度
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("不是回文数"); }