编写程序,实现以下功能:
问题是这样的:
首先,提示用户输入5个不大于10的正整数(分5次提示,每次输入1个整数);
然后,每次用户输入数值后,判断用户输入数值是否符合要求,如果不符合则输出错误信息并终止运行;
最后,判断用户输入的5个整数是否有重复,并输出结果(“您输入的数据包含重复值” 或者 “您输入的数据不包含重复值”)。
注意:此题需要提交3个运行结果截图,分别对应合法有重复值、合法无重复值和非法的输入。
但是怎么才能每次输入数据之后都提示再次输入数据呢?这个循环我不会啊
#include <stdio.h>
int main() {
int numbers[5];
int i, j, num;
// 提示用户输入五个正整数
printf("请依次输入5个不大于10的正整数:\n");
for (i = 0; i < 5; i++) {
while (1) {
printf("请输入第%d个数:", i+1);
scanf("%d", &num);
if (num <= 0 || num > 10) {
printf("输入错误,请输入1~10之间的整数\n");
}
else {
int flag = 0;
for (j = 0; j < i; j++) {
if (numbers[j] == num) {
flag = 1;
break;
}
}
if (flag) {
printf("输入错误,不能重复输入相同的数\n");
}
else {
numbers[i] = num;
break;
}
}
}
}
// 判断是否有重复值
int has_duplicate = 0;
for (i = 0; i < 4; i++) {
for (j = i+1; j < 5; j++) {
if (numbers[i] == numbers[j]) {
has_duplicate = 1;
break;
}
}
if (has_duplicate) {
break;
}
}
if (has_duplicate) {
printf("您输入的数据包含重复值\n");
}
else {
printf("您输入的数据不包含重复值\n");
}
return 0;
}
在上述代码中,我们首先创建了一个数组 numbers 来存储用户输入的五个正整数。然后使用 for 循环和 while 循环,每次提示用户输入一个正整数,并使用条件判断结构检测用户输入是否符合要求(是整数、在 1~10 之间、没有重复),如果不符合要求则输出错误信息并要求用户重新输入。如果用户输入符合要求,则将其添加到数组 numbers 中,并执行下一次循环。
循环结束后,我们使用两个嵌套的 for 循环来判断数组中是否有重复值。如果有重复值,则输出包含重复值的提示,否则输出不包含重复值的提示。
不知道你这个问题是否已经解决, 如果还没有解决的话:#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;
}