这个程序的问题在于我会判断输入是否非法,但我不知道怎么判断是否为重复数值,之前看到的写法对于我又有点太过复杂
编写程序,实现以下功能:
首先,提示用户输入5个不大于10的正整数(分5次提示,每次输入1个整数);
然后,每次用户输入数值后,判断用户输入数值是否符合要求,如果不符合则输出错误信息并终止运行;
最后,判断用户输入的5个整数是否有重复,并输出结果(“您输入的数据包含重复值” 或者 “您输入的数据不包含重复值”)。
注意:此题需要提交3个运行结果截图,分别对应合法有重复值、合法无重复值和非法的输入。
#include <stdio.h>
int main()
{
int nums[5];
int i, j;
printf("请输入5个不大于10的正整数:\n");
// 分5次提示用户输入数字,如果输入不符合要求则终止程序
for (i = 0; i < 5; i++) {
printf("请输入第%d个整数:", i+1);
scanf("%d", &nums[i]);
if (nums[i] <= 0 || nums[i] > 10) {
printf("输入错误!请输入1到10之间的整数。\n");
return 0;
}
}
// 判断是否有重复数字
for (i = 0; i < 4; i++) {
for (j = i + 1; j < 5; j++) {
if (nums[i] == nums[j]) {
printf("您输入的数据包含重复值。\n");
return 0;
}
}
}
printf("您输入的数据不包含重复值。\n");
return 0;
}
#include <stdio.h>
int ti[11] = { 0 }; //用来存储每道题的回答情况0或者1,0表示错误,1表示正确
//提醒:数组ti的编号实际用1-10
//score表示当前得分,num是当前第num道题目
void f(int score, int num)
{
if (num == 11)//10道题目全部做完
{
if (score == 100)
{
int i = 0;
for (i = 1; i <= 10; i++)
printf("%d", ti[i]);
printf("\n");
}
}
else //10道题目没有做完
{
ti[num] = 1; //讨论第num道题目的正确情况
f(score * 2, num + 1);
ti[num] = 0; //讨论第num道题目的错误情况
f(score - num, num + 1);
}
}
int main(void)
{
f(10, 1);//从基础分10分开始,从第1题开始
return 0;
}