循环语句相关练习
4、*写出Fibonacci数列的前40项(不用数组解决该问题)
//求斐波那契数列的前40项
//0 1 1 2 3 5 8 13 21
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=0;
int b=1;
int c;
printf("第1项:1\n");
for(int i=2;i<=40;i++)
{
c = a + b;
a = b;
b = c;
printf("第%d项:%d\n",i,c);
}
return 0;
}
老师标准代码:
void func4()//fibonacci
{
long long int i,f1 = 1,f2 = 1;
for(i = 1 ; i <= 20; i++)
{
printf("%10lld%10lld",f1,f2);
if(i % 2 == 0)
printf("\n");
f1 += f2;
f2 += f1;
}
}
5、*嵌套循环引入:九九乘法表的输出
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int j;
printf("九九乘法表\n");
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
int sum = j * i;
printf("%d*%d=%d\t",j,i,sum);
}
printf("\n");
}
exit(0);
}
老师的代码:
void func5()
{
int i,j;
for(i = 1; i <= 9 ; i++)
{
for(j = 1 ; j <= i ; j++)
printf("%2d*%-2d=%-3d",i,j,i * j);
printf("\n");
// printf((i==j) ? "%4d\n" : "%4d", i*j);
}
}
6、*百钱买百鸡
//100块钱买一百只鸡 最大值问题,只要公鸡x<=20;y<=33
//条件:鸡的数量sum<=100;money<=100;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,y,z;
for(x=0;x<100;x++)
{
for(y=0;y<100;y++)
{
for(z=0;z<100;z++)
{
if( 5*x+3*y+z/3 ==100 && x+y+z==100 && z%3==0)
{
printf("公鸡=%d 母鸡=%d 小鸡=%d\n",x,y,z);
}
}
}
}
}
老师的代码:
void func6()
{
int x,y,z;
for(x = 0 ; x < 20; x++)
{
for(y = 0 ; y < 33; y++)
{
z = 100-x-y;
if(z % 3 == 0 && 5*x + 3*y + z/3 == 100)
printf("%d %d %d\n",x,y,z);
}
}
}
8、输出阶梯状ABCD
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch; //A
int sh;
for(ch=65;ch<=70;ch++)
{
for(sh=ch;sh<=70;sh++)
{
printf("%c",sh);
}
printf("\n");
}
}
9、输出阶梯状_PEDCB
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
int sh;
int i;
for(ch=70;ch>=65;ch--)
{
for(sh=70;sh>=ch;sh--)
{
printf("%c",sh);
}
printf("\n");
for(i=70;i>=ch;i--)
{
printf("_");
}
}
exit(0);
}
老师的代码:
void func9()
{
char ch = 'F';
int i,j;
for(i = 0 ; i < LINE; i++)
{
for(j = 0; j <= i-1; j++)
putchar('_');
for(j = 0,ch = 'F' ; j <= i; j++,ch--)
putchar(ch);
putchar('\n');
}
}
10、输出钻石型
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
int line = 7; //定义六行
int l;
int k;
int space; //定义空行的数量 (line-1)/2
for(l=1;l<=4;l++)
{
for(i=1;i<=(line-1)/2;i++)
{
printf("_");
}
for(k=1;k<=2*(line-1);k++)
{
printf("*");
}
for(j=1;j<=(line-1)/2;j++)
{
printf("_\n");
}
}
}
11、从终端随机输入N个数,求和
#include <stdio.h>
#include <stdlib.h>
int main()
{
int sum=0;
int fig;
int i=1;
printf("End when you input a 0\n");
while(1)
{
printf("Input %d figure\n",i);
i++;
if( scanf("%d",&fig) !=i);
return 1;
sum = sum + fig;
if(fig == 0)
break;
}
printf("%d\n",sum);
}
12、从终端实现循环输入
每次输入时随机输入数字,输出如下功能:
#define AA 64
int main()
{
int num ; //要输入的数字
int ch;
int sh;
scanf("%d",&num);
ch = AA +num;
if(num == 3)
{
oh = 67;
}
for(ch;ch>=65;ch--)
{
for(sh=oh;sh>=ch;sh--)
{
printf("%c",sh);
}
printf("\n");
}
}
13、实现大小写字符的转换:
//实现大小写字符的转换
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
int ret;
printf("Input a letter\n");
ch = getchar();
if(ch<=90 && ch>=65)
{
ret = ch + 32;
printf("%c->%c\n",ch,ret);
}
else if(ch<=122 && ch>=97)
{
ret = ch -32;
printf("%c-%c\n",ch,ret);
}
}
14、*是否是质数
#include <stdio.h>
#include <stdlib.h>
int main()
{
int pri,n,i; //
printf("wc -l 计算有多少个\n");
for(pri=30000000;pri<=30000200;pri++)
{
int a=0;
for(i=2;i<=pri/2;i++)
{
if(pri%i == 0)
{
a++;
}
}
if(a==0)
{
printf("%d is prime \n",pri);
}
}
exit(0);
}
//wc -l 计算有多少个
老师的
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
#define MIN 0
int main()
{
int max=MIN,min=MAX,score;
while(scanf("%d",&score) == 1 && score != -1)
{
if(score > MAX || score < MIN)
{
printf("Please again input\n");
continue;
}
min = score < min ? score : min;
max = score > max ? score : max;
}
printf("min = %d\n",min);
printf("max = %d\n",max);
exit(0);
}
15、输入圆的面积,大于100停止
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14159
int main()
{
int r; //圆的面积
int i=1;
float area;
while(1)
{
printf("Input %d circle\n ",i);
i++;
scanf("%d",&r);
area= PI*r*r; //公式
printf("This circle area = %lf\n",area);
if(area>100)
break;
}
exit(0);
}
16、输入十个整数计算平均值以及整数的个数
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num; //输入的数字
int num_zheng=0; //输入数字是正数的个数
int num_sum; //输入数字是正数的总和
float num_aver; //输入数字的平均值
int i;
for(i=1;i<=10;i++)
{
printf("Input %d number\n",i);
scanf("%d",&num);
if(num>0)
{
num_zheng++;
num_sum += num;
}
}
num_aver = num_sum/num_zheng; //计算平均值
printf("num_zheng = %d\n",num_zheng);
printf("num_aver = %.2f\n",num_aver);
exit(0);
}
17、判断最大值问题
#include <stdio.h>
#include <stdlib.h>
int main()
{
int grade;
int min=100;
int max=0;
int i=0;
while(1)
{
printf("Input %d grade\n",i);
scanf("%d",&grade);
if( grade>100 || grade < 0)
{
printf("error\n");
break;
}
if(grade>max && grade!=0) //判断是否为最小的
{
max = grade;
}
if(grade<min && grade!=0) //判断是否是最大的
{
min = grade;
}
i++;
if(grade==0)
break;
}
printf("max = %d\n",max);
printf("min = %d\n",min);
}