题解"/>
PTA 《组织星期信息》题解
组织星期信息
题目描述:
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
输入格式:
输入第一行给出一个正整数repeat (0<repeat<10),为repeat次运算次数。接下来给出repeat个字符串的信息。
输出格式:
每个字符串信息占一行,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。
输入样例 :
3
Tuesday
Wednesday
year
输出样例:
3
4
-1
代码:
#include<stdio.h>
#include<string.h>
int main()
{int repeat,index=0;const char *a[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};char b[100];scanf("%d",&repeat);//输入次数for(int i=1;i<=repeat;i++) { scanf("%s",&b);//输入每个字符串信息for(int j=0;j<7;j++)//循环查找if(strcmp(b,a[j])==0) index=j+1;//利用strcmp函数将b和a[j]比对if(index!=0) printf("%d\n", index);else printf("-1\n");index=0;}return 0;
}
解析:
1.如果将“const char *a[7]”写成“char *a[7]”,将会得到以下报错
这个意思是:已弃用从字符串常量到‘char*’的转换,因为理论上,我们传给函数的字面常量是没法被修改的。
对比:
char *背后的含义是:给我个字符串,我要修改它。
const char *背后的含义是:给我个字符串,我只要读取它。
2.strcmp函数的使用方法:
一般形式:strcmp(字符串1s1,字符串2s2) 需要使用头文件#include<string.h>
当s1>s2时,返回正数
当s1=s2时,返回值= 0
当s1<s2时,返回为负数
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
如:
1."A"<"B" 2."A"<"AB" 3."Apple"<"Banana" 4."A"<"a" 5."compare"<"computer"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
更多推荐
PTA 《组织星期信息》题解
发布评论