c语言基础循环练习题,C语言练习题:循环部分

C语言练习题:循环部分(20题)

求一正整数限定内所有素数

/*

__author__ = 'xiaofeizhang'

函数作用:求一正整数限定内所有素数

*/

#include

#include

#include

int main(void){

int num;

bool isprime = true;

printf("请输入一个正整数:");

scanf("%d", &num);

if(num==0 || num==1){

printf("%d不是素数", num);

exit(0);

}

for (int j=2; j<=num; j++){

for (int i=2; i<=sqrt(j); i++){

if (j%i == 0){

isprime = false;

break;

}

else{

isprime = true;

}

}

if (isprime == true){

printf("%d是素数\n", j);

}

}

return 0;

}

/*

请输入一个正整数:100

2是素数

3是素数

5是素数

7是素数

11是素数

13是素数

17是素数

19是素数

23是素数

29是素数

31是素数

37是素数

41是素数

43是素数

47是素数

53是素数

59是素数

61是素数

67是素数

71是素数

73是素数

79是素数

83是素数

89是素数

97是素数

--------------------------------

Process exited after 1.651 seconds with return value 0

请按任意键继续. . .

*/

求一正整数的各个位数显示,并求和

/*

__author__ = 'xiaofeizhang'

函数作用:正整数的各个位数显示,并求和

*/

#include

int main(void){

int num, num_copy, sum=0;

printf("请输入一个正整数:");

scanf("%d", &num);

num_copy = num;

while(num){

printf("%d\n", num%10);

sum += num%10;

num /= 10;

}

printf("%d的各位求和为:%d", num_copy, sum);

return 0;

}

/*

请输入一个正整数:123

3

2

1

123的各位求和为:6

--------------------------------

Process exited after 1.567 seconds with return value 0

请按任意键继续. . .

*/

迭代求值

/*

__author__ = 'xiaofeizhang'

函数作用:迭代求值

*/

#include

int main(void){

int max, i=0, sum=0, j=0;

printf("请输入本次迭代的最大值:");

scanf("%d", &max);

for(;i<=max; ){

sum +=i;

i=i+2;

j++;

}

printf("%d之内的偶数叠加的值为:%d\n", max, sum);

printf("迭代了%d次", j);

return 0;

}

/*

请输入本次迭代的最大值:12

12之内的偶数叠加的值为:42

迭代了7次

--------------------------------

Process exited after 3.905 seconds with return value 0

请按任意键继续. . .

*/

设定次数,猜数字

/*

__author__ = 'xiaofeizhang'

函数作用:有奖竞猜

*/

#include

#include

#include

int main(void){

int num, symbol, max=5;

srand(time(NULL));

num = rand()%100+1;

printf("预设值的结果为:%d\n", num);

printf("有奖竞猜下:");

scanf("%d", &symbol);

for(int i=1; i<=max; i++){

if (symbol!=num){

if (symbol>num){

printf("小伙子,猜大啦\n");

printf("再猜一次:");

scanf("%d", &symbol);

}

else{

printf("小伙子,猜小啦\n");

printf("再猜一次:");

scanf("%d", &symbol);

}

if (i==max-1){

printf("非常抱歉,小伙子,不行呀,在加油吧");

}

}

else{

printf("哎呦,不错仅仅花费了%d次,就猜到是%d", i, num);

break;

}

}

return 0;

}

/*

预设值的结果为:81

有奖竞猜下:31

小伙子,猜小啦

再猜一次:53

小伙子,猜小啦

再猜一次:70

小伙子,猜小啦

再猜一次:81

哎呦,不错仅仅花费了4次,就猜到是81

--------------------------------

Process exited after 19.45 seconds with return value 0

请按任意键继续. . .

*/

设定次数10次,猜数字

#include

#include

#include

int main(void){

int num, symbol, max=1;

srand(time(NULL));

num = rand()%100+1;

printf("请输入你本次猜的值为:");

scanf("%d", &symbol);

while (num!=symbol){

if (symbol>num){

printf("小伙子,猜大啦\n");

printf("再猜一次:");

scanf("%d", &symbol);

}

else{

printf("小伙子,猜小啦\n");

printf("再猜一次:");

scanf("%d", &symbol);

}

max++;

}

printf("哎呦不错哟,仅仅用了%d次,就猜到我心中的%d了", max, num);

return 0;

}

实现捐款到10万元,并求得每人平均捐款值

/*

__author__ = 'xiaofeizhang'

函数作用:实现捐款到10万元,并求得每人平均捐款值

*/

#include

#include

int main(){

float num,total=0,ave;

int i;

for(i=1;i<=1000;i++){

printf("请输入捐款金额:");

scanf("%f",&num);

total=total+num;

if(total>=100000)

break;

}

ave=total/i;

printf("捐款人数为:%d,平均捐款数目:%f",i,ave);

getch();

return 0;

}

/*

请输入捐款金额:1000

请输入捐款金额:1230

请输入捐款金额:3210

请输入捐款金额:123333

捐款人数为:4,平均捐款数目:32193.250000

*/

while循环,实现叠加

/*

__author__ = 'xiaofeizhang'

函数作用:while循环,实现叠加

*/

#include

int main(void){

int i=0, n, sum=0;

printf("请输入你想计算叠加数到:");

scanf("%d", &n);

while (i<=n){

sum += i;

i++;

}

printf("%d之内的叠加运算的结果为:%d", n, sum);

return 0;

}

/*

请输入你想计算叠加数到:12

12之内的叠加运算的结果为:78

--------------------------------

Process exited after 4.607 seconds with return value 0

请按任意键继续. . .

*/

计算一个公式

/*

__author__ = 'xiaofeizhang'

函数作用:计算一个公式

*/

#include

#include

int main(void){

int i, n;

double result=1;

printf("请输入参数(1-100): ");

scanf("%d", &n);

if (n==0){

printf("本次没包含0在内");

exit(0);

}

if (n==1){

printf("本次计算的结果为:1");

exit(0);

}

for (i=2; i<=n; i++){

result = 1.0/(1+result);

}

printf("本次计算的结果为:%f", result);

return 0;

}

/*

请输入参数(1-100): 31

本次计算的结果为:0.618034

--------------------------------

Process exited after 2.53 seconds with return value 0

请按任意键继续. . .

*/

斐波那契数列40项

/*

__author__ = 'xiaofeizhang'

函数作用: 斐波那契数列40项

*/

#include

int main(void){

int f1=1, f2=1, f3;

printf("%12d%12d", f1, f2);

for (int i=3; i<=40; i++){

f3 = f1+f2;

f1 = f2;

f2 = f3;

printf("%12d", f3);

if (i%5==0){

printf("\n");

}

}

return 0;

}

/*

1 1 2 3 5

8 13 21 34 55

89 144 233 377 610

987 1597 2584 4181 6765

10946 17711 28657 46368 75025

121393 196418 317811 514229 832040

1346269 2178309 3524578 5702887 9227465

14930352 24157817 39088169 63245986 102334155

--------------------------------

Process exited after 0.02965 seconds with return value 0

请按任意键继续. . .

*/

计算一数的阶乘

/*

__author__ = 'xiaofeizhang'

函数作用: 计算一数的阶乘

*/

#include

int main(void){

int i,n,result=1;

printf("说想算多少以内的阶乘:");

scanf("%d", &n);

if (n==0){

printf("0的阶乘为1");

}

else{

for (i=1;i<=n;i++){

result *=i;

}

printf("%d的阶乘为:%d", n, result);

}

return 0;

}

/*

说想算多少以内的阶乘:12

12的阶乘为:479001600

--------------------------------

Process exited after 2.506 seconds with return value 0

请按任意键继续. . .

*/

计算两个年份之间平年的年数,并输出

/*

__author__ = 'xiaofeizhang'

函数作用:计算两个年份之间平年的年数,并输出

*/

#include

#include

int main(void){

int year_min, year_max;

printf("请输入起始年份:");

scanf("%d", &year_min);

printf("请输入终止年份:");

scanf("%d", &year_max);

if (year_min>year_max){

printf("小伙子,算数不好,要好好学呀");

exit(0);

}

for (int i=year_min; i<=year_max; i++){

if ((i%4==0&&i%100!=0) || (i%400==0)){

continue;

}

else{

printf("%d是平年\n", i);

}

}

return 0;

}

/*

请输入起始年份:1984

请输入终止年份:2018

1985是平年

1986是平年

1987是平年

1989是平年

1990是平年

1991是平年

1993是平年

1994是平年

1995是平年

1997是平年

1998是平年

1999是平年

2001是平年

2002是平年

2003是平年

2005是平年

2006是平年

2007是平年

2009是平年

2010是平年

2011是平年

2013是平年

2014是平年

2015是平年

2017是平年

2018是平年

--------------------------------

Process exited after 6.785 seconds with return value 0

请按任意键继续. . .

*/

计算一公式

/*

__author__ = 'xiaofeizhang'

函数作用:计算一公式

*/

#include

#include

int main(void){

int m;

double result=1;

printf("说,这次想算多少以内的算法1-100: ");

scanf("%d", &m);

if (m==0){

printf("它不在基本的计算中哟");

exit(0);

}

if (m==1){

printf("本次计算的结果为:1");

exit(0);

}

for (int i=2; i<=m; i++){

result = result - 1.0/(i*i);

}

printf("本次计算的结果为:%f", result);

return 0;

}

/*

说,这次想算多少以内的算法1-100: 20

本次计算的结果为:0.403837

--------------------------------

Process exited after 2.763 seconds with return value 0

请按任意键继续. . .

*/

do···while实现奇数叠加

/*

__author__ = 'xiaofeizhang'

函数作用:do···while实现奇数叠加

*/

#include

int main(void){

int i=1, n, sum=0;

printf("请输入你想计算叠加数到:");

scanf("%d", &n);

do {

sum += i;

i=i+2;

}while(i<=n);

printf("%d 之内的奇数叠加运算的结果为:%d", n, sum);

return 0;

}

/*

请输入你想计算叠加数到:31

31 之内的奇数叠加运算的结果为:256

--------------------------------

Process exited after 3.213 seconds with return value 0

请按任意键继续. . .

*/

求各项求和的和

/*

__author__ = 'xiaofeizhang'

函数作用:求各项求和的和

*/

#include

int main(void){

int n, sum_part=0;

double sum=0;

printf("请输入n的取值:");

scanf("%d", &n);

for (int i=1; i<=n; i++){

for (int j=1; j<=i; j++){

sum_part += j;

}

sum += 1.0/sum_part;

sum_part = 0;

}

printf("和为:%f", sum);

return 0;

}

/*

请输入n的取值:4

和为:1.600000

--------------------------------

Process exited after 8.868 seconds with return value 0

请按任意键继续. . .

*/

求解 3x+5y+7z=100的所有非负数整数解

/*

__author__ = 'xiaofeizhang'

函数作用:求解 3x+5y+7z=100的所有非负数整数解

*/

#include

int main(void){

int x, y, z, sum;

for (x=1; x<=33; x++){

for(y=1; y<=20; y++){

for (z=1; z<=14; z++){

sum = 3*x+5*y+7*z;

if (sum == 100){

printf("解为:%d, %d, %d\n", x, y, z);

}

}

}

}

return 0;

}

/*

解为:1, 4, 11

解为:1, 11, 6

解为:1, 18, 1

解为:2, 2, 12

解为:2, 9, 7

解为:2, 16, 2

解为:3, 7, 8

解为:3, 14, 3

解为:4, 5, 9

解为:4, 12, 4

解为:5, 3, 10

解为:5, 10, 5

解为:6, 1, 11

解为:6, 8, 6

解为:6, 15, 1

解为:7, 6, 7

解为:7, 13, 2

解为:8, 4, 8

解为:8, 11, 3

解为:9, 2, 9

解为:9, 9, 4

解为:10, 7, 5

解为:11, 5, 6

解为:11, 12, 1

解为:12, 3, 7

解为:12, 10, 2

解为:13, 1, 8

解为:13, 8, 3

解为:14, 6, 4

解为:15, 4, 5

解为:16, 2, 6

解为:16, 9, 1

解为:17, 7, 2

解为:18, 5, 3

解为:19, 3, 4

解为:20, 1, 5

解为:21, 6, 1

解为:22, 4, 2

解为:23, 2, 3

解为:26, 3, 1

解为:27, 1, 2

--------------------------------

Process exited after 0.8456 seconds with return value 0

请按任意键继续. . .

*/

求两个数的最大公约数

/*

__author__ = 'xiaofeizhang'

函数功能:求两个整数的最大公约数和最小公倍数(枚举法,辗转消除法,更相减损法)

*/

#include

int main(void){

int m, n, t, minimum_common_multiple;

printf("请输入第一参数, 第二个参数:");

scanf("%d, %d", &m, &n);

minimum_common_multiple = m*n;

// m中放小的整数,n中放大的整数

if(m>n){

t = m;

m = n;

n = t;

}

// %%%%%%%%%%%%%%%%%%%%%%%%

// 枚举法

for(int i=m; i>=1; i--){

if(n%i==0 && m%i==0){

printf("枚举法\n");

printf("%d和%d的最小公倍数数为:%d\n", m, n, minimum_common_multiple/i);

printf("%d和%d的最大公约数为:%d\n", m, n, i);

printf("\n");

break;

}

}

// 辗转消除法

int x, y, tmp;

x = m;

y = n;

tmp = 1;

while(tmp){

tmp = y%x;

if (tmp==0){

printf("辗转消除法\n");

printf("%d和%d的最小公倍数数为:%d\n", m, n, minimum_common_multiple/x);

printf("%d和%d的最大公约数为:%d\n", m, n, x);

printf("\n");

}

else {

y = x;

x = tmp;

}

}

// 更相减损法

int w, z, a;

w = m;

z = n;

a = 1;

while(a){

a = w%z;

if (a==0){

printf("更相减损法\n");

printf("%d和%d的最小公倍数数为:%d\n", m, n, minimum_common_multiple/z);

printf("%d和%d的最大公约数为:%d\n", m, n, z);

printf("\n");

}

else {

w = z;

z = a;

}

}

return 0;

}

/*

请输入第一参数, 第二个参数:99,120

枚举法

99和120的最小公倍数数为:3960

99和120的最大公约数为:3

辗转消除法

99和120的最小公倍数数为:3960

99和120的最大公约数为:3

更相减损法

99和120的最小公倍数数为:3960

99和120的最大公约数为:3

--------------------------------

Process exited after 10.33 seconds with return value 0

请按任意键继续. . .

*/

求一正整数限定内所有素数

/*

__author__ = 'xiaofeizhang'

函数作用:求一正整数限定内所有素数

*/

#include

#include

#include

int main(void){

int num;

bool isprime = true;

printf("请输入一个正整数:");

scanf("%d", &num);

if(num==0 || num==1){

printf("%d不是素数", num);

exit(0);

}

for (int j=2; j<=num; j++){

for (int i=2; i<=sqrt(j); i++){

if (j%i == 0){

isprime = false;

break;

}

else{

isprime = true;

}

}

if (isprime == true){

printf("%d是素数\n", j);

}

}

return 0;

}

/*

请输入一个正整数:100

2是素数

3是素数

5是素数

7是素数

11是素数

13是素数

17是素数

19是素数

23是素数

29是素数

31是素数

37是素数

41是素数

43是素数

47是素数

53是素数

59是素数

61是素数

67是素数

71是素数

73是素数

79是素数

83是素数

89是素数

97是素数

--------------------------------

Process exited after 1.651 seconds with return value 0

请按任意键继续. . .

*/

数列12,22,32,···,202的和

/*

__author__ = 'xiaofeizhang'

函数功能:求数列12,22,32,···,202的和 三种方法(for,while,do···while)

*/

#include

int main(void){

// for循环

int i, sum_for=0;

for (i=1; i<=20; i++){

sum_for += 10*i+2;

}

printf("for循环求法\n");

printf("数列12,22,32,···,202的和为:%d\n", sum_for);

printf("\n");

// while循环

int j=1, sum_while = 0;

while(j<=20){

sum_while += 10*j+2;

j++;

}

printf("while循环求法\n");

printf("数列12,22,32,···,202的和为:%d\n", sum_while);

printf("\n");

// do···while循环

int k=1, sum_do_while = 0;

do {

sum_do_while += 10*k+2;

k++;

}while(k<=20);

printf("do···`while循环求法\n");

printf("数列12,22,32,···,202的和为:%d\n", sum_do_while);

return 0;

}

/*

for循环求法

数列12,22,32,···,202的和为:2140

while循环求法

数列12,22,32,···,202的和为:2140

do···`while循环求法

数列12,22,32,···,202的和为:2140

--------------------------------

Process exited after 0.556 seconds with return value 0

请按任意键继续. . .

*/

100-1000之间的水仙花数

/*

__author__ = 'xiaofeizhang'

函数作用:100-1000之间的水仙花数

*/

#include

int main(void){

int i, j, k, m, n;

for (i=100; i<1000; i++){

j = i/100; // 百分位

k = i%100/10; // 十分位

m = i%10; // 个位

if (i == j*j*j+k*k*k+m*m*m){

printf("%d是水仙花数\n", i);

}

}

return 0;

}

/*

153是水仙花数

370是水仙花数

371是水仙花数

407是水仙花数

--------------------------------

Process exited after 0.4438 seconds with return value 0

请按任意键继续. . .

*/

模拟实现:学生成绩管理系统

/*

__author__ = 'xiaofeizhang'

函数作用:模拟实现:学生成绩管理系统

*/

#include

#include

#include

int main(void){

int choice;

while(1){

system("cls");

printf("\t\t\t*********学生成绩管理系统***********\n");

printf("\t\t\t* 1. 从文件读取学生的成绩 *\n");

printf("\t\t\t* 2. 添加学生的成绩 *\n");

printf("\t\t\t* 3. 显示学生的成绩 *\n");

printf("\t\t\t* 4. 按照姓名查找学生的成绩 *\n");

printf("\t\t\t* 5. 按照姓名学生的成绩 *\n");

printf("\t\t\t* 6. 统计学生的总成绩和平均成绩*\n");

printf("\t\t\t* 7. 统计学生的人数 *\n");

printf("\t\t\t* 8. 给学生成绩排名 *\n");

printf("\t\t\t* 9. 保存学生的成绩 *\n");

printf("\t\t\t* 0. 退出 *\n");

printf("请输入选项:0-9: ");

scanf("%d", &choice);

switch (choice){

case 0:

printf("谢谢使用\n");

exit(0);

case 1:

printf("从文件读取学生的成绩\n");

break;

case 2:

printf("添加学生的成绩\n");

break;

case 3:

printf("显示学生的成绩\n");

break;

case 4:

printf("按照姓名查找学生的成绩\n");

break;

case 5:

printf("按照姓名学生的成绩\n");

break;

case 6:

printf("统计学生的总成绩和平均成绩\n");

break;

case 7:

printf("统计学生的人数\n");

break;

case 8:

printf("给学生成绩排名\n");

break;

case 9:

printf("保存学生的成绩\n");

break;

default:

printf("\n输入不对\n");

break;

}

printf("按任意键继续...\n");

getch();

}

return 0;

}

/*

*********学生成绩管理系统***********

* 1. 从文件读取学生的成绩 *

* 2. 添加学生的成绩 *

* 3. 显示学生的成绩 *

* 4. 按照姓名查找学生的成绩 *

* 5. 按照姓名学生的成绩 *

* 6. 统计学生的总成绩和平均成绩*

* 7. 统计学生的人数 *

* 8. 给学生成绩排名 *

* 9. 保存学生的成绩 *

* 0. 退出 *

请输入选项:0-9: 3

显示学生的成绩

按任意键继续...

*/

你可能感兴趣的:(c语言基础循环练习题)