循环练习
1.我有一个数组是int nArr[10] = {1,2,3,4,5,6,9,8,7,0};
请使用循环结构,输出数组中的每一个值。
int main()
{
//遍历操作,全部输出
//遍历,就是每一个元素访问一次
int nArr[10] = { 1,2,3,4,5,6,9,8,7,0 };
for (int i = 0; i < 10; i++)
{
printf("%d ", nArr[i]);
}
return 0;
}
2.请在数组中寻找7这个数值,然后输出它所在的位置
int main()
{
//遍历操作,全部输出
//遍历,就是每一个元素访问一次
int nArr[10] = { 1,2,7,4,5,6,9,8,3,0 };
for (int i = 0; i < 10; i++)
{
if (nArr[i]==7)
{
printf("7这个元素所在的位置为%d", i);
break;
}
}
return 0;
}
3.从键盘输入一个数,判断这个数在不在数组中,在的话输出yes,不在的话输出no
方法1:
int main()
{
//遍历操作,全部输出
//遍历,就是每一个元素访问一次
int nArr[10] = { 1,2,7,4,5,6,9,8,3,0 };
int nNum = 0;
printf("please input a number:");
scanf_s("%d",&nNum);
int i = 0;
//当i自增到10的时候,就说明数组中,没有这个数
//此时的条件,也不满足了,就退出循环了
for ( ;i < 10; i++)
{
if (nArr[i]== nNum)
{
break;
}
}
//i不为10就说明找到了
if (i!=10)
{
printf("yes");
}
//i为10就说明没找到
else
{
printf("no");
}
return 0;
}
方法2:
int main()
{
//遍历操作,全部输出
//遍历,就是每一个元素访问一次
int nArr[10] = { 1,2,7,4,5,6,9,8,3,0 };
int nNum = 0;
printf("please input a number:");
scanf_s("%d",&nNum);
int nFind = 0;
for (int i = 0;i < 10; i++)
{
if (nArr[i]== nNum)
{
nFind = 1;
break;
}
}
if (nFind==1)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
4.我们打印出这个图形
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
int main()
{
for (int n = 2; n <= 10; n++)
{
for (int i = 1; i < n; i++)
{
printf("%d ", i);
}
printf("\n");
}
}
5.打印一个99乘法表
int main()
{
for (int n = 1; n <=9; n++)
{
for (int i = 1; i <= n; i++)
{
printf("%d*%d=%d ", i, n, i * n);
}
printf("\n");
}
}
6.鸡兔同笼问题
问:有一群鸡和一群兔子在一个笼子里,总共有脚110个,头40个,请问鸡和兔子分别多少只。
int main()
{
int nCount = 0;
//假设鸡是i只
//假设兔子是j只
for (int i = 0; i < 40; i++)
{
for (int j = 0; j < 40; j++)
{
if (i+j==40&&2*i+4*j == 110)
{
printf("鸡是%d只 兔子是%d只\n", i, j);
}
nCount++;
}
}
printf("我们循环了%d次解决了这个问题\n",nCount);
return 0;
}
使用break来减少循环次数:
int main()
{
int nCount = 0;
//假设鸡是i只
//假设兔子是j只
int nFind = 0;
for (int i = 0; i < 40; i++)
{
for (int j = 0; j < 40; j++)
{
if (i+j==40&&2*i+4*j == 110)
{
printf("鸡是%d只 兔子是%d只\n", i, j);
nFind = 1;
break;
}
nCount++;
}
if (nFind==1)
{
break;
}
}
printf("我们循环了%d次解决了这个问题\n",nCount);
return 0;
}
我们可以使用1重循环解决这个问题
因为如果鸡有i只,那么兔子就是40-i
如果兔子有i只,那么鸡就是40-i
int main()
{
int nCount = 0;
//假设鸡是i只
//假设兔子是j只
for (int j = 0; j < 27; j++)
{
if (j*4+(40-j)*2==110)
{
printf("鸡是%d只 兔子是%d只\n", 40-j,j);
break;
}
nCount++;
}
printf("我们循环了%d次解决了这个问题\n",nCount);
return 0;
}