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");
}