Java 中英文识别[数组分离]
import java.util.regex.Matcher;
public class test {
public static void main (String[] args)
{
String s1 ="做错事情,需要道歉的时候,说:I'am sorry. 现在请你说一遍";
char [] array = new char[50];//大小要提前设定会浪费,可以改成接下来两篇自己输入
int t = 0;
StringBuffer s = new StringBuffer(s1);
for (int k=0;k<s.length();k++ )
{
char c = s.charAt(k);
if(isChinese(c))
{
if(t == 0||isChinese(s.charAt(k-1))!=true)
{
array[t]='\"';
t++;
}
array[t]=c;
t++;
if(k!=s.length()-1){
if(!isChinese(s.charAt(k+1)))
{
array[t]='\"';
t++;
array[t]=',';
t++;
}
}
if(k==s.length()-1){
array[t]='\"';
t++;
break;
}
}
else
{
if(t == 0||isChinese(s.charAt(k-1))==true)
{
array[t]='\"';
t++;
}
array[t]=c;
t++;
if(k!=s.length()-1){
if(isChinese(s.charAt(k+1)))
{
array[t]='\"';
t++;
array[t]=',';
t++;
}
}
if(k==s.length()-1){
array[t]='\"';
t++;
break;
}
}
}
System.out.print(array);
}
//判断是不是英文
public static boolean isChinese(char c)
{
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)
{
return true;
}
return false;
}
}
数字之和定值
- C魔方求和(自动设置阶数malloc)
#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
int ** get(int row, int line)
{
int **p = NULL;
p = (int**)malloc(sizeof(int*)*row);
for (int i=0; i<row; i++)
p[i] = (int*)malloc(sizeof(int)*line);
return p;
}
void free(int **p, int row)
{
int i, j;
for (i = 0; i<row; i++)
free(p[i]);
free(p);
}
int main(void) {
int n;
redo1:
printf("请输入一个奇数:");
scanf_s("%d", &n);
if (n % 2 == 0)
{
goto redo1;
}
redo2:
int **mofang = get(n, n);
int i = 0;
int j = n / 2;
//魔方和算法
for (int k = 1; k <= n * n; k++) {
mofang[i][j] = k;
if (k % n == 0) {
i = (i + 1) % n;
}
else {
i = (i - 1 + n) % n;
j = (j + 1) % n;
}
}
//输出
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n; j++)
{
printf("%5d", mofang[i][j]);
}
printf("\n");
}
printf("请任意输入0来释放内存或其他数字继续魔方测试:");
scanf_s("%d", &n);
if (n == 0)
//退出程序
free(mofang, n);
else
goto redo2;
}
2.c++数组定值求和全部情况(借鉴 附:线上测试条件不好,可以实现自己添加,基本实现,可能小改)
#include<vector>
#include<iostream>
using namespace std;
vector<int> ivec;
//int clock ;
void findSum(int arr[], int n, int sum)
{
if (sum <= 0 || n <= 0)return;
if (arr[n] == sum){
vector<int>::iterator it;
for (it = ivec.begin(); it != ivec.end(); ++it)
cout << *it << "+";
cout << arr[n] << endl;
}
ivec.push_back(arr[n]);
findSum(arr, n - 1, sum - arr[n]);
ivec.pop_back();
// clock++;
findSum(arr, n - 1, sum);
}
int main(void)
{
//int n=5;
//printf("请输入你将输入的数组长度:\n");
//scanf("%d", &n);
//int *arr = new int[n];
int arr[] = {1,2,3,4,5,6,7,8};
// printf("请依次输入你的数组:\n");
// for (int i = 0; i < n; ++i)
// {
// printf("数组元素序号:%d \n", i + 1);
// scanf("%5d", &arr[i]);
// }
// printf("请输入你所要求的和:\n");
// int m=5;
// scanf("%5d", &m);
findSum(arr,(sizeof(arr) / sizeof(arr[0]))- 1, 12);
// printf("一共有:%d对\n", clock);
}
补充:
malloc 申请二维数组代码很详细,小改就可以用
补充:
在数组找到和为给定值的多个数代码可以研究下