作业
1,输出一维数组的回文数字
void Palindrome(int arr[],int n)
#include<stdio.h>
void Palindrome(int a[],int n){
int i,j,temp,sign,len;
int a1[100];
for(i=0;i<n;i++){
temp = a[i];
len = 0;
while(temp>0){
a1[len++] = temp%10;
temp /= 10;
}
sign = 1;
for(j=0;j<len/2;j++){
if(a1[j] != a1[len-1-j]){
sign = 0;
break;
}
}
if(sign == 1){
printf("%d\n",a[i]);
}
}
}
int main(){
int a[]={12321,131,212,23,212,32,1,2,32,123};
int n = sizeof(a)/sizeof(int);
int i;
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n回文数:\n");
Palindrome(a,n)
return 0;
}
2,实现字符串匹配
例如:char str[]=”ababcabcdabcde” char str1[]=”abca”
输出子串在主串的下标2出现
void BF(char str[],char str1[]) //str是主串 str1是子串
#include <stdio.h>
#include <string.h>
void BF(char d[],char s[]){
int dlen = strlen(d);
int slen = strlen(s);
int i,j,sign,count=0;
char c = s[0];
for(i=0;i<dlen;i++){
if(d[i] == c){
sign = 1;
for(j=1;j<slen;j++){
if(d[i+j] != s[j]){
sign = 0;
break;
}
}
if(sign == 1){
count++;
printf("子串在主串下标%d出现\n",i);
}
}
}
if(count==0){
printf("子串未在主串中出现\n");
}
}
int main(int argc, const char *argv[])
{
char d[100]="";
char s[100]="";
printf("请输入主串:\n");
scanf("%s",d);
printf("请输入子串:\n");
scanf("%s",s);
BF(d,s);
return 0;
}
3,实现字符串逆置
void MyStrrev( char str[] )
#include <stdio.h>
#include <string.h>
void MyStrrev(char str[]){
char c;
int len = strlen(str);
int i;
for(i=0;i<len/2;i++){
c = str[i];
str[i] = str[len-1-i];
str[len-1-i] = c;
}
}
int main(int argc, const char *argv[])
{
char str[100]="";
printf("请输入一个字符串:\n");
gets(str);
MyStrrev(str);
printf("字符串逆置后:\n");
puts(str);
return 0;
}