PAT|中國大學MOOC-翁愷-C語言程式設計習題集33-36
10-1. 在字串中查詢指定字元(15)
輸入一個字串S,再輸入一個字元c,要求在字串S中查詢字元c。如果找不到則輸出“Not found”;若找到則輸出字串S中從c開始的所有字元。
輸入格式:
輸入在第1行中給出一個不超過80個字元長度的、以回車結束的非空字串;在第2行中給出一個字元。
輸出格式:
在一行中按照題目要求輸出結果。
輸入樣例1:
It is a black box
b
輸出樣例1:
black box
輸入樣例2:
It is a black box
B
輸出樣例2:
Not found
#include <stdio.h>
#include <string.h>
int main()
{
char a;
char str[90];
int len, i, p, flag;
gets(str);
a = getchar();
len = strlen(str);
flag = 0;
for (i = 0; i <= len - 1; i++)
{
if (str[i] == a)
{
p = i;
flag = 1;
break;
}
}
if (flag == 0 )
{
printf("Not found");
}
else
{
for (i = p; i <= len - 1; i++)
{
printf("%c", str[i]);
}
}
return 0;
}
10-2. 刪除字串中的子串(20)
輸入2個字串S1和S2,要求刪除字串S1中出現的所有子串S2,即結果字串中不能包含S2。
輸入格式:
輸入在2行中分別給出不超過80個字元長度的、以回車結束的2個非空字串,對應S1和S2。
輸出格式:
在一行中輸出刪除字串S1中出現的所有子串S2後的結果字串。
輸入樣例:
Tomcat is a male ccatat
cat
輸出樣例:
Tom is a male.
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100];
char str2[100];
int len1, len2, i, j, k,flag,n,count;
count = 0;
gets(str1);
gets(str2);
len1 = strlen(str1);
len2 = strlen(str2);
for (i = 0; i <= len1 - 1; i++)//計算出現下面首字母的次數,也是進行分隔字元篩選的迴圈次數
{
if (str1[i] == str2[0])
{
count++;
}
}
for (n = 1; n <= count - 1; n++)
{
for (i = 0; i <= len1 - 1; i++)//從第一位開始遍歷字串2的首字母
{
if (str1[i] == str2[0])
{
flag = 0;
for (j = i; j <= i + len2 - 1; j++)//從字串一擷取字串二長度的字元
{
if (str1[j] != str2[j - i])//判斷兩組字元是否相對
{
flag = 1;
break;
}
}
if (flag == 0)//長得相同就將右邊的字元向左移字串2的長度,並且將字串1減去該長度
{
for (k = i; k <= len1 - 1; k++)
{
str1[k] = str1[k + len2];
}
len1 = len1 - len2;
}
}
}
}
for (i = 0; i <= len1 - 1; i++)//輸出處理後字串
{
printf("%c", str1[i]);
}
return 0;
}
10-3. 字串逆序(15)
輸入一個字串,對該字串進行逆序,輸出逆序後的字串。
輸入格式:
輸入在一行中給出一個不超過80個字元長度的、以回車結束的非空字串。
輸出格式:
在一行中輸出逆序後的字串。
輸入樣例:
Hello World!
輸出樣例:
!dlroW olleH
#include <stdio.h>
#include <string.h>
int main()
{
char str[10000];
int len, i;
gets(str);
len = strlen(str);
for (i = len - 1; i >= 0; i--)
{
printf("%c", str[i]);
}
return 0;
}
10-4. 字串迴圈左移(20)
輸入一個字串和一個非負整數N,要求將字串迴圈左移N次。
輸入格式:
輸入在第1行中給出一個不超過100個字元長度的、以回車結束的非空字串;第2行給出非負整數N。
輸出格式:
在一行中輸出迴圈左移N次後的字串。
輸入樣例:
Hello World!
2
輸出樣例:
llo World!He
#include <stdio.h>
#include <string.h>
int main()
{
char str[250];
int num, len, i;
gets(str);
scanf("%d", &num);
len = strlen(str);
for (i = len; i <= 2 * len - 1; i++)
{
str[i] = str[i - len];
}
num = num%len;
for (i = num; i <= num+len-1; i++)
{
printf("%c", str[i]);
}
return 0;
}