实验8 字符数据及串

1121 定义存贮字符串的数组

在下面程序中填充定义字符数组的语句,使程序完整。
#include "stdio.h"
#include "string.h"
int main()
{   char s[80]; /*define a array named s to store string*/
    strcpy(s, "abcdefghijklmn");
    printf("%s", s);
    return 0;
}

1122 字符串的合并

从键盘输入3个字符串(每个字符串以回车符做为结束标志),将3个字符串以输入先后顺序合并到字符串s中,请填空使用程序完整。
#include "stdio.h"
#include "string.h"
main()
{
    char s[100]="";
    char a[30];
    gets(a);strcat(s,a);​//strcat将两个char类型连接。​
    gets(a);strcat(s,a);//
    gets(a);strcat(s,a);//
    printf("%s", s);
}

1123 字符串的输入与输出 

下面程序实现从键盘读入字符串,然后输出到屏幕,请填充必要的语句。
输入样例
Wang
输出样例
What's your name?
Your name is Wang
#include "stdio.h"
main()
{   char  s[50];
    printf("What's your name?\n");
    scanf("%s",s);/*iput your name from the keyboard*/
    //gets(s);输入也可以。注意输出时是%s,不是%c
    printf("Your name is ");
    printf("%s", s);  /*output your name*/
}

1145 回文串

读入一行字符串(不多于80个字符,以回车结束),判断该字符串是否为回文串(即从左向右拼写与从
右向左拼写是一样的),是则输出Y,不是则输出N。
输入格式
一行字符串
输出格式
是则输出Y,不是则输出N
输入样例
abba
输出样例
Y
提示
或
input:abcba
output:Y
或
input:abc
output:N
#include "stdio.h"
#include "string.h"
main()//用strlen
{
	int i,j,flag=1;
    char s[100];
    scanf("%s",s);
    for(i=0, j=strlen(s)-1;i<j; i++, j--)
        if(s[i]!=s[j])
        {
            flag=0;
            break;
        }
   if(flag==1)
        printf("Y");
    else
        printf("N");
}

1050 寻找字符串

由键盘输入两个字符串(假设第一个字符串必包含第二个字符串,如第一个字符串为ABCDEF,第二个为CDE,
则CDE包含在ABCDEF中),现要求编程输出第二字符串在第一行字符串中出现的位置。
(如果第二个字符串在第一个字符串中出现多次,则以最前出现的为准)
输入样例
ABCDEFG
DE
输出样例
4
提示:因为DE在ABCDEFG中的第4个字符处出现
//标程
#include  "stdio.h"
main()
{   int i,j;
    char a[80], b[80];
    gets(a); gets(b);
    for(i=0;a[i]!='\0';i++)
    {    for(j=0;b[j]!='\0';j++)
             if(a[i+j]!=b[j]) 
                break;//a与b对应值不相等时,跳出内循环,开始a中下一个数的比较
         if(b[j]=='\0') break;//当b中的值都比较完相等时,同样跳出外循环
    }
    if (a[i]!='\0')
     printf("%d",i+1);//只要a不是i数个比较完了,i的值已经要轮空,就是有相等的
    else printf("Not Found");
}
#include <stdio.h>
#include <string.h>
int main()
{
   char a[100];char b[100];
int i=0,r=0,n1=0,n2=0,x=0,judge=0;
gets(a);
gets(b);
n1=strlen(a);n2=strlen(b);
for(i=0;i<n1;i++){
    if(b[0]==a[i]){
    r=i+1;
        while(b[x]==a[i+x]){
        x++;
        judge++;
        if(judge==n2){
        printf("%d",r);
        }
}
}
}
}

1  回文串的判断 

回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过80个字符,以回车结束),判断能否通过去掉0个或1个字符,使得字符串成为回文串,如果可以输出Y,否则输出N
输入格式
一行字符
输出格式
Y或N
输入样例
abca

输出样例
Y
提示:提示,去掉c字符,即可成为回文串

//应该对的
/*0 1 2 。。。i i+1 ...... j-1 j .....n在满足i+1<j-1的情况下,两头往中间扫
a[i]==a[j],则继续;如a[i]==a[j-1]或者a[i+1]=a[j],则需要插入,
做一个需要插入的标记(如计数),同时移动相应的指针跳过不等的字符,继续比下去,
直到两指针的前沿相遇并穿过(前沿能相遇并穿过说明小于4个字符了)。*/
#include "stdio.h"
#include "string.h"
int main()
{
int n;
char a[100];
 scanf("%s",a);
int i,j,flag;
n=strlen(a);
i=0;
j=n-1;
flag=0; //做的一个需要插入的标记
while ( (flag<2) // only need 0 or 1 character
&& ((i+1)<=(j-1)) // have character to compare
)
{
if (a[i]==a[j]) {i++; j--;}
else if (a[i]==a[j-1]) {flag++; i++; j-=2;}
else if (a[i+1]==a[j]) {flag++; i+=2; j--;}
else flag=2;
}
if (flag<2) printf("Y");
else printf("N");
return 0;
}
//错的
#include "stdio.h"
#include "string.h"
main()//用strlen
{
	int i,j,flag=1,k;
    char s[100];
    scanf("%s",s);
    for(i=0, j=strlen(s)-1;i<j; i++, j--)
     {

        if(s[i]!=s[j])
        {
            flag=0;
            break;
        }
     }
   if(flag==1)
       {
        printf("Y");
        return 0;
       }
    else
        for(k=0,flag=1;k<strlen(s)-1;k++)
    {
         for(i=0, j=strlen(s)-1;i<j; i++, j--)
     {
         if(i==k)
            continue;
         else if(s[i]!=s[j])
        {
            flag=0;
            break;
        }
     }
    }
        if(flag==1)
        printf("Y");
        else
        printf("N");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值