作者:Happyer
单位:湖北文理学院
代码长度限制:16 KB
时间限制:400 ms
内存限制:64 MB
题目内容:
编写程序,判断用户的判断题答对了几题。 说明: 1--标准答案是一个字符串,仅列出了正确的题号([0,n-1],n为题目数量)。考虑到可视性与题目的数量,从ASCII码表中的字符‘0’(‘0’的ASCII码值为48)开始,依次表示下标0,1,2,……,具体地,字符ch代表的正确编号为ch-'0',如标准答案串为 "a?A",因为这三个字符的ASCII码值分别是97,63,65,故表示只有49,15,17三题是正确的,其余皆为错误。 2--以十个判断题为例,用户提交的答案应该是长度为十的字符串,字符的位置代表了题号,表示正确的字符有['T','t','Y','y','1'],其它均表示为假。 如以下字符串表示用户认为十个题目中前五个是正确的,后五个是错误的:"YytT10nNfF"。
输入格式:
输入内容有三行: 第一行,一个表示题目数量的正整数(取值范围在【5,80】内)。 第二行,一个表示标准答案中正确的编号集的字符串(从ASCII表的字符0开始计数0),题目保证标识无误,但未必是有序排列。 第三行,用户提交的答题选项:一个长度与题目数量一致的字符串,表示对应每一题的判断情况(用单字符表示正确否,约定:YyTt1之一均表示正确,其它为不正确)。
输出格式:
输出用户判断题回答正确数量(多少题与标准答案相同)。
输入样例:
15
907246<=>
yfYtnT101nyNtyY
输出样例:
8
代码如下:
#include<stdio.h>
#include<string.h>
#define N 1000
int main(void){
int a[N],b[N];
int mp[N];
int n;
char temp[]={'Y','y','T','t','1'};
for(int i=0;temp[i]!='\0';i++){
mp[(int)temp[i]]=1;
}
scanf("%d",&n);
getchar();
int ans=0;
char c;
for(;(c=getchar())&&c!='\n';){
int ch=c;
a[ch]=1;
}
for(int i=0;i<n;i++){
int ch=getchar();
if(mp[ch])
b[i+'0']=1;
}
for(int i='0';i<n+'0';i++){
ans+=(a[i]==b[i]);
}
printf("%d",ans);
}
虽然对了,但是真不知道该怎么写!!(求大神讲解)