练习题2.2.2

这篇博客讨论了如何在不知道正确答案的情况下,根据两个人的答案来确定他们得分的最大值和最小值。通过假设一个人全对并计算另一个与之匹配的答案数量来得到最大得分,而最小得分则为两人答案全不一致的情况。文章提供了C语言的代码实现,处理了答案输入时没有空格分隔的情况。
摘要由CSDN通过智能技术生成
  1. 成绩出来就知道了(难度:B-

/*考试结束了,云云和舟舟开始对答案。

一共有n道单选题,每道题都有ABCD四个选项,每道题正确得 1 分,错误不得分。

云云和舟舟互相知道了他们每道题选择的选项。

他们想知道,两个人得分之和有可能达到的最大值和最小值是多少?*/

输入描述:

第一行输入一个正整数(1≤n≤6666)代表一共有n道题,

第二行输入n个字符('A'、'B'、'C'、'D'中的一种),用空格隔开。代表云云的选项。

第三行输入n个字符('A'、'B'、'C'、'D'中的一种),用空格隔开。代表舟舟的选项。

输出描述:

得分之和的能达到的最大值和最小值。

用空格隔开。

思路:因为正确答案未知,则假设其中一人全对,统计另外一个人与其答案相同个数,即为题目所求最大值,最小值即为2者都错即为0.

知识点:构造字符串数组,并比较同一位置是否相同。

代码:

#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
char a[6667]={};
char b[6667] ={};
for(int i = 0;i<n;i++)
{
    scanf("%s",a);//scanf会以空格作为结束标志
}
for(int j = 0;j<n;j++)
{
    scanf("%s",b);
}
int s = n;
for(int k = 0;k<n;k++)
{
    if(a[k] == b[k])
    {
        s = s + 1;
    }
}
printf("%d\n",s);//最大值 

printf("%d",0);//最小值
    return 0;
}

现在,我们将问题升级:假设输入答案时中间不以括号隔开又该如何处理?

#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
getchar();//清除回车 ,不然会对后面造成影响 ,推荐自行查阅scanf的工作原理 。 
char a[6667]={};
char b[6667] ={};
for(int i = 0;i<n;i++)
{
    scanf("%c",&a[i]);
}
getchar();//清除回车 
for(int j = 0;j<n;j++)
{
    scanf("%c",&b[j]);
}
getchar();//同上 
int s = n;
for(int k = 0;k<n;k++)
{
    if(a[k] == b[k])
    {
        s = s + 1;
    }
}
printf("%d\n",s);//最大值 
 
printf("%d",0);//最小值
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值