当前位置:文档之家› c语言学习(2)

c语言学习(2)

?#include
#include
#include

// 用于案例4的求解Fibonacci对应数值的函数
int fibonacci(int num)
{
int i1 = 1;
int i2 = 1;
int result = 1;
int i;
for(i = 3; i<=num; i++)
{
result = i1 + i2;
i1 = i2;
i2 = result;
}
return result;
}

int main(void)
{
// 1.从整数1开始,逐个累加,直到和超过1000停止,打印此时累加到的那个整数
/*
int total = 0;
int i = 1;
while(total < 1000)
{
total += i;
i++;
}
printf("从1累加到%d,其和为%d。", i-1, total);
*/
/*
* (1)和超过1000时,累加到的整数是i-1,而不是i,为什么?
* (2)如何用for循环来实现?
*/

// 2.计算Fibonacci序列中第N个元素的值
/*
int N = 10;
int i1 = 1;
int i2 = 1;
int result = 1;
int i;
for(i = 3; i<=N; i++)
{
result = i1 + i2;

i1 = i2; // 原先i2的值赋给i1,从而i1的值为它原先所代表元素的后一个元素值。
i2 = result; // 前两个数之和赋给i2,从而i2代表它原先所代表元素的后一个元素值。
}
printf("Fibonacci序列第%d个元素的值为%d\n", N, result);
*/
/*
* (1)Fibonacci序列特点:第1、2个元素的值为1,从第3个元素起,每个元素的值是前两个元素之和
* (2)编程算法:设定两个变量i1,i2,初始时分别代表第1个元素和第2个元素值;
* 从第3个元素起,首先计算该元素本身的Fibonacci值放在result变量中;然后将i1设置为第2个元素值,将i2设置为第3个元素值;
* 依次类推,到第m个元素时,先算出第m个元素对应的Fibonacci值,然后i1被设置为第m-1个元素值,i2设置为第m个元素值,以便进行下一轮循环
* 循环结束时,result就是该元素对应的Fibonacci值。
* (3)请尝试计算第50个元素的Fibonacci值,会有怎样的结果?
*/

// 3.打印Fibonacci序列中前N个元素的值
/*
int N = 20;
int i1 = 1;
int i2 = 1;
int result;
int i;
printf("1\t1\t"); //先打印前两个元素的值
for(i=3;i<=N;i++)
{
result = i1 + i2;
printf("%d\t", result);
i1 = i2;
i2 = result;
}
printf("\n");
*/

// 4.不断要求用户输入一个正整数,并计算该正整数对应的Fibonacci值。如果用户输入0,则退出循环
/*
int num;
int result;
printf("请输入要计算的整数值:(0退出)");
scanf("%d", &num);
while(num != 0)
{
result = fibonacci(num);
printf("%d对应的Fibonacci数值是:%d\n", num, result);
printf("请输入要计算的整数值:(0退出)");
scanf("%d", &num);
}
*/
/*
* (1)请注意本

例是如何演示不断请求用户输入的
*/

// 5.不断要求用户输入一个考试分数(1~100之间),如果用户输入0,则退出输入。分别统计60分以下、60~69,70~79, 80~89和90分以上的人数。
/*
int num;
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
int count5 = 0;
printf("请输入成绩,1~100之间的整数:(0退出)");
scanf("%d", &num);
while(num != 0)
{
if (num < 60)
count1++;
else if (num < 70)
count2++;
else if (num < 80)
count3++;
else if(num < 90)
count4++;
else
count5++;

printf("请输入成绩,1~100之间的整数:(0退出)");
scanf("%d", &num);
}
printf("60分以下:%d人,60~69分:%d人,70~79分:%d人, 80~89分:%d人,90分以上:%d人\n",
count1, count2, count3,count4,count5);
*/
/*
* (1)仔细理解if-else if-else的含义
* (2)在循环中使用if语句是一种常见的操作
*/

// 6.不断要求用户输入一个1~9之间的数字,如果用户输入0,则退出输入。计算0~9每个数字输入了几次。
/*
int c1,c2,c3,c4,c5,c6,c7,c8,c9;
c1 = c2 = c3 = c4 = c5 = c6 = c7 = c8 = c9 = 0;
int num;
printf("请输入1~9之间的整数:(0退出)");
scanf("%d", &num);
while(num != 0)
{
switch(num)
{
case 1: c1++;break;
case 2: c2++;break;
case 3: c3++;break;
case 4: c4++;break;
case 5: c5++;break;
case 6: c6++;break;
case 7: c7++;break;
case 8: c8++;break;
case 9: c9++;break;
}
printf("请输入1~9之间的整数:(0退出)");
scanf("%d", &num);
}
printf("1:%d次,2:%d次,3:%d次,4:%d次,5:%d次,6:%d次,7:%d次,8:%d次,9:%d次\n",
c1,c2,c3,c4,c5,c6,c7,c8,c9);
*/
/*
* (1)理解switch-case的用法
* (2)一定在要case后添加break语句
* (3)尝试使用if-else if-else改写此程序
*/

// 7.猜数字。系统自动生成一个0~99内的随机数,用户输入一个整数,如果与该随机数相同,提示成功;否则告知用户应往更大或更小方向猜
/*
srand((unsigned)time(NULL));
int secretNum = rand()%100;
int guess;
int times = 1;
printf("输入你猜的结果(0~99):");
scanf("%d", &guess);
while(guess != secretNum)
{
if (guess > secretNum)
{
printf("请往更小的数猜:");
scanf("%d", &guess);
}
else
{
printf("请往更大的数猜:");
scanf("%d", &guess);
}
times++;
}
printf("猜对了,用了%d次

。\n", times);
*/
/*
* (1)随机数生成函数需要stdlib.h;如果以当前时间为随机种子,还需要time.h
* (2)如果不设定随机种子,那么每次程序启动调用rand函数生成的随机序列都会相同。因此每次程序启动,都需要一个不同的种子。
* (3)time(NULL)函数用于返回当前时间(从1970年1月1日0点0分0秒到目前位置的秒数)
* (4)srand用于设置随机种子
* (5)rand将生成一个32位随机整数。如果希望产生0~99之间的随机数,可将该整数对100取余
*/


// 8.猜数字,使用break语句
/*
srand((unsigned)time(NULL));
int secretNum = rand()%100;
int guess;
int times = 1;
printf("输入你猜的结果(0~99):");
scanf("%d", &guess);
while(true)
{
if (guess == secretNum)
{
printf("猜对了,用了%d次。\n", times);
break;
}
else if (guess > secretNum)
{
printf("请往更小的数猜:");
scanf("%d", &guess);
}
else
{
printf("请往更大的数猜:");
scanf("%d", &guess);
}
times++;
}
*/
return 0;
}

相关主题
文本预览
相关文档 最新文档