int c1 = 0, c2 = 0; char ch;
while((ch = getchar()) !=’#’)
switch(ch) { case ‘a’:
case ‘h’: c1++; default: c2++; }
printf(“c1=%d,c2=%d\\n”, c1, c2); return 0; }
三.程序设计题
1.分类统计字符个数:输入一行字符,统计出其中的英文字母、空格、数字和其他字符的个数。试编写相应程序。 解答:
#include
char op;
int letter,blank,digit,other;
printf(\op=getchar();
}
letter=blank=0; digit=other=0; while(op!='\\n'){ }
printf(\ return 0;
if(op==' ')blank++;
else if(op>='a'&&op<='z'||op>='A'&&op<='Z')letter++; else if(op>='0'&&op<='9')digit++; else other++; op=getchar();
2.使用函数累加由n个a构成的整数之和:输入两个正整数 a 和 n,求 a+aa+aaa+aa…a(n个a)之和。要求定义和调用函数fn(a,n),它的功能是返回aa……a(n个a)。例如,fn(3,2)的返回值是33。试编写相应程序。 解答:
#include
int a, i, n;
long sn;
long fn(int a, int n); scanf(\ sn=0;
for(i=1;i <= n; i++) sn = sn + fn(a, i); printf(\
return 0; }
long fn(int a, int n) { int i; long tn; tn = 0;
for(i = 1; i <= n; i++) tn = 10 * tn + a; return tn; }
3.使用函数输出指定范围内的函数:输入两个正整数m和n(1<=m,n<=1000),输出m~n之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数
factorsum(number),它的功能是返回 number 的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。试编写相应程序。 解答:
#include
int m,n;
printf(\ scanf(\
printf(\
scanf(\ printf(\完全数是:\ for(;m<=n;m++) if(factorsum(m)==1) printf(\ return 0; }
int factorsum(int number) {
int i,sum;
if(number==1) return 1; sum=0;
for(i=1;i<=number/2;i++) if(number%i==0) sum=sum+i; if(sum==number)return 1; return 0; }
4.使用函数输出指定范围内的Fibonacci数:输入两个正整数m和n(1<=m,n<=10000),输出 m~n之间所有的Fibonacci数。Fibonacci序列(第 1 项起):1 1 2 3 5 8 13 21……要求定义并调用函数 fib(n),它的功能是返回第 n 项 Fibonacci 数。例如,fib(7)的返回值是 13。试编写相应程序。 解答:
#include
int i,m,n,f;