新学C的新手用三种不同的循环语句写出同样要做的运算
本帖最后由 gwgirl 于 2021-12-13 11:20 编辑#include<stdio.h>
//1、两数交换
voidExchange()
{
int a = 3;
int b = 6;
a = a + b;
b = a - b;
a = a - b;
printf("a=%d b=%d\n", a, b);
}
//2、将一个数组中的数倒序输出
void ReverseOutput()
{
int a = { 0,1,2,3,4 };
//do--while循环
int k = 4;
do
{
printf("%d ", a);
k--;
}
while (k>=0);
printf("\n");
//while循环
int i = 4;
while (i >= 0)
{
printf("%d ", a);
}
printf("\n");
//for循环
for ( int j = 4; j >=0; j--)
{
printf("%d ", a);
}
printf("\n");
}
//3、找出数组里最大的值(求最小值<换为>即可)
void OutputMax()
{
int a = { 2,0,60,5,3,7 };
//do--while循环
int k = 1;
int Max = a;
do
{
if (Max<a)
{
Max = a;
}
k++;
} while (k<6);
printf("%d \n", Max);
//while 循环
int i = 4;
int Max1 = a;
while (i >= 0)
{
if (Max1 < a)
{
Max1 = a;
}
i--;
}
printf("%d \n", Max1);
//for 循环
int Max2 = a;
for ( int j = 1;j < 6; j++)
{
if (Max2<a)
{
Max2 = a;
}
}
printf("%d \n", Max2);
}
//4、数组所有的元素想加,将结果返回
void ArrSum()
{
int a = { 1,0,9,5,3,7 };
int k = 0;
int Sum1=0;
//do--while 循环
do
{
Sum1 += a;
k++;
} while (k<6);
printf("%d\n", Sum1);
//while 循环
int i = 0;
int Sum = 0;
while (i < 6)
{
Sum += a;
i++;
}
printf("%d\n", Sum);
//for 循环
int Sum2=0;
for (int j = 0;j < 6; j++)
{
Sum2 += a;
}
printf("%d\n", Sum2);
}
//5、打印数组里的所以值
void Arrprinnt()
{
int a = { 1,0,9,5,3,7 };
//do --- while 循环
int j = 0;
do
{
printf("%d ", a);
j++;
} while (j<6);
printf(" \n");
//while 循环
int i = 0;
while (i < 6)
{
printf("%d ", a);
i++;
}
printf(" \n");
//for 循环
for (intk = 0; k < 6; k++)
{
printf("%d ", a);
}
}
//6、将两个等长数组相同的位置相加,存储到另外一个等长的数组中
void ArrsSum()
{
int a = { 1,2,9,5,3,7 };
int b = { 10,20,90,50,30,70 };
int sum = { };
//do --- while 循环
int j = 0;
do
{
sum = a + b;
printf("%d ", sum);
j++;
} while (j<6);
printf("\n");
//while 循环
int i = 0;
while (i < 6)
{
sum = a + b;
printf("%d ", sum);
i++;
}
printf("\n");
//for 循环
for (intk = 0; k < 6; k++)
{
sum = a + b;
printf("%d ", sum);
}
printf("\n");
}
//7、写一个函数int prime(int x),如果x是素数返回值为1,否则返回0;素数是不能被自身和1整除的数;
//do --- while循环 return只能只用一次do while 、while里面用printf替换
int Prime(int x)
{
int j = 2;
int r = 1;
do
{
if (x % j == 0)
{
r = 0;
break;
}
else
j++;
} while (j < x);
printf("%d\n", r);
//while 循环
int i = 2;
int r1 = 1;
while (i < x)
{
if (x % i == 0)
{
r1 = 0;
break;
}
i++;
}
printf("%d\n", r1);
//for 循环
for (int i = 2; i < x; i++)
{
if (x%i==0)
{
return 0;
}
}
return 1;
}
//8、将数组的值两两比较,将最大的值存放到最后一个位置;
void ArrCmp()
{
//do --- while 循环
int a = { 80,10,20,90,50,30 };
int Max;
int i = 0;
int j = 0;
do
{
if (a > a)
{
Max = a;
a = a;
a = Max;
}
i++;
} while (i < 5);
do
{
printf("%d ", a);
j++;
} while (j < 6);
printf("\n");
//while 循环
int b = { 8,1,2,9,5,3 };
int Max1;
int i1 = 0;
int j1 = 0;
while (i1 < 5)
{
if (b > b)
{
Max1 = b;
b = b;
b = Max1;
}
i1++;
}
while (j1 < 6)
{
printf("%d ", b);
j1++;
}
printf("\n");
//for 循环
int c = { 801,101,201,901,501,301 };
int Max2;
for (int ii = 0; ii < 5; ii++)
{
if (c > c)
{
Max2 = c;
c = c;
c = Max2;
}
}
for (int jj = 0; jj < 6; jj++)
{
printf("%d ", c);
}
printf("\n");
}
int main()
{
//1、两数交换
printf("两数交换\n");
Exchange();
//2、将一个数组中的数倒序输出
printf("将一个数组中的数倒序输出\n");
ReverseOutput();
//3、找出数组里最大的值,并返回(求最小值<换为>即可)
printf("找出数组里最大的值,并返回(求最小值<换为>即可\n");
OutputMax();
//4、数组所有的元素想加,将结果返回
printf("数组所有的元素想加,将结果返回\n");
ArrSum();
//5、打印数组里的所以值
printf("打印数组里的所以值\n");
Arrprinnt();
//6、将两个等长数组相同的位置相加,存储到另外一个等长的数组中
printf("将两个等长数组相同的位置相加,存储到另外一个等长的数组中\n");
ArrsSum();
//7、写一个函数int prime(int x),如果X是素数返回值为1,否则返回0;
printf("写一个函数int prime(int x),如果X是素数返回值为1,否则返回0\n");
printf("%d\n", Prime(7));
//8、将数组的值两两比较,将最大的值存放到最后一个位置;
printf("将数组的值两两比较,将最大的值存放到最后一个位置\n");
ArrCmp();
return 0;
}
请问3的Do while 是否少比较一个数组? ffiiss 发表于 2021-12-13 02:43
请问3的Do while 是否少比较一个数组?
对的,感谢提醒,已修改,忘记k=1啦!{:7_236:} 看看!学习学习! 我来瞅瞅怎么防止OD 谁说没有免费的午餐,这里就有啊 谢谢分享 谢谢分享 顶帖,不仅谢谢楼主,也能赚HB 谢谢分享