c语言循环程序示例课堂练习.pptx
文本预览下载声明
1
方法一:数列是正、负相间的,在这里可用一个“开关”变量 t 来解决符号的问题。
main()
{ float s=0;
int t=1,i ;
for(i=1;i101;i++)
{ s+=1.*t / i ; t= -t ; }
printf(s=%f\n,s);
}
[例] 求 s=1-1/2+1/3-1/4+… +1/99-1/100。
2
方法二:分别求出正项和s1(奇数倒数)与负项和s2(偶数倒数),则s=s1-s2.
main()
{ float s,s1=0,s2=0;
int i;
for(i=1;i101;i+=2)
{ s1+=1.0/ i;
s2+=1.0/(i+1); }
s=s1-s2;
printf(s=%f\n,s);
}
3
[例] 输入若干字母,将它们变成其后的第四个字母, A--E, W--A.非字母字符忽略。
思路:
1.建立循环, 循环结束以输入回车符为准 while (c=getchar()!=’\n’)
2. 判断输入是否是字符,否则忽略
if ((c=’a’ c=’z’) || (c=’A’ c=’Z’))
3.变成其后的第四个字母 c=c+4;
4. 若变换后超出z时,要轮回.
If ((c’Z’ c‘a’)||(c’z’)) c=c-26
…A…Z….a….z…..
4
#include “stdio.h”
main()
{ char c;
while (c=getchar()!=’\n’) {
if ((c=’a’ c=’z’) || (c=’A’ c=’Z’)){
c=c+4;
if ((c’Z’ c=’a’ )||(c’z’)) c=c-26;
}
printf(“%c”,c);
}
}
5
[例] 输入30个0~9的字符数字,计算数字串中有多少个奇数,偶数和零 .
思路:
输入30个字符数字char num,而不是整数
30个字符的输入和30个数字的输入的区别
字符可以连续输入30个 009764146589…...
数字输入必须是用空格,Tab键或回车隔开
0 0 9 7 6 4 1 4 6 5 8 9 … …
将字符变成数字后判断奇偶 i=num-’0’;
字符数字的ASCII码:48 49 50 51 52 53 54 55 56 57
6
步骤:
计数变量n1,n2,n3初始值设为零;
输入1个字符num;
循环变量初值为1;
若i=30,重复
字符变成数字,num=num-’0’
判断num是否为0
判断num%2的值
循环变量i++
再输入1个字符num
输出n1,n2,n3的值。
7
main()
{ int i, n1=0,n2=0,n3=0;
char num;
scanf(“%c”,num);
for (i=1;i=30;i++)
{ num=num-’0’;
if (num==0) n1++;
if (num%2) n2++;
else n3++;
scanf(“%c”,num);
}
printf(‘There are %2d evens, %2d odds, %2d zeros ”,n1,n2,n3,);}
8
[例] 输入一个整数,计算它的位数.并反向输出.
分析:设一个数13579,一位一位地切下末位
循环结束条件: num==0;
同时计数 count=count+1;
135
1357
13579
7
9
5
13
bit
bit=num%10
num=num/10
1357
9
135
7
13
5
3
1
3
9
main()
{ long int num;
int count = 0;
printf(“Please enter an integer:\n”);
scanf(“%ld”,num);
do {
printf(“%d”,num%10);
num = num /10;
count + +;
} while (num !=0 );
printf(“ %d digits.”, count);
}
10
*
***
*****
显示全部