第二周编程作业
- 题目内容:
输入2 个字符串S1 和S2,要求删除字符串S1 中出现的所有子串S2,即结果字符串中不能包含S2。
提示:输入数据的设计使得不可能出现输出为空的情况。
输入格式:
输入分别给出2 个每个不超过80 个字符长度的不带空格的非空字符串,对应S1 和S2。
输出格式:
在一行中输出删除字符串S1 中出现的所有子串S2 后的结果字符串。
输入样例:
Thisisatest is
输出样例:
Thatest
//输入2 个字符串S1 和S2,要求删除字符串S1 中出现的所有子串S2
#include <stdio.h>
#include <string.h>
int main(void)
{
char s1[80]="";
char s2[80]="";
printf("请输入两个字符串:\n");
scanf("%s %s", s1, s2);
int num, cnt;
char *p = NULL;
while ( strstr(s1, s2) ) {
num = strlen(s1);
p = strstr(s1, s2);
cnt = strlen(p);
for( int i=0; i<strlen(s2); i++ ) {
*p++ = '\0';
}
strcpy(s1+num-cnt, p);
}
printf("%s\n",s1);
return 0;
}
-
题目内容:
无线电台的RS制信号报告是由三两个部分组成的:
R(Readability) 信号可辨度即清晰度.
S(Strength) 信号强度即大小.其中R位于报告第一位,共分5级,用1—5数字表示.
1)–Unreadable
2)–Barely readable, occasional words distinguishable
3)–Readable with considerable difficulty
4)–Readable with practically no difficulty
5)–Perfectly readable报告第二位是S,共分九个级别,用1—9中的一位数字表示
1)–Faint signals, barely perceptible
2)–Very weak signals
3)–Weak signals
4)–Fair signals
5)–Fairly good signals
6)–Good signals
7)–Moderately strong signals
8)–Strong signals
9)–Extremely strong signals
现在,你的程序要读入一个信号报告的数字,然后输出对应的含义。如读到59,则输出:
Extremely strong signals, perfectly readable.
请以字符串数组的方式来实现这个程序。
输入格式:
一个整数,信号报告。整数的十位部分表示可辨度,个位部分表示强度。输入的整数范围是[11,59]中的个位不为0的数字,这个范围外的数字不可能出现在测试数据中。
输出格式:
一句话,表示这个信号报告的意义。按照题目中的文字,先输出表示强度的文字,跟上逗号和空格,然后是表示可辨度的文字,跟上句号。注意可辨度的句子的第一个字母是小写的。注意这里的标点符号都是英文的。
输入样例:
33
输出样例:
Weak signals, readable with considerable difficulty.
//读入一个信号报告的数字,然后输出对应的含义
#include<stdio.h>
#include<string.h>
int main(){
char S[9][50] = { {"Fanint signals, barely perceptible"}, {"Very weak signals"},
{"Weak signals"}, {"Fare signals"}, {"Fairly good signals"}, {"Good signals"},
{"Moderately strong signals"},
{"Strong signals"},{"Extremely strong signals"} };
char R[5][50] = { {"uneradable"}, {"barely redable, occasional words distinguishable"},
{"readable with considerable difficulty"}, {"readable with practically no difficulty"},
{"perfectly readable"} };
int num;
printf("输入一个[11,59]内的整数(信号报告):\n");
scanf("%d", &num);
while( num<11||num>59 ) {
printf("重新输入:\n");
scanf("%d", &num);
}
printf("%s, %s.", S[num%10-1], R[num/10-1]);
return 0;
}