2012年机试 容易 略
//2012年机试 第一组是做的是输入一个字符串,统计其中的字母、数字、空格等
#include <stdio.h>
int main()
{
int a,b,c,d,ch;
a=b=c=d=0;//计数器初始化为0.
while((ch=getchar())!='\n')//循环读取字符,到换行结束。
{
if(ch>='0' && ch<='9')//数字
a++;
else if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))//字母
b++;
else if(ch==' ')//空格
c++;
else //其它
d++;
}
printf("%d %d %d %d\n", a,b,c,d);//输出结果。
return 0;
} 第二组做的是计算1!+2!+3!+...+n!。要求要高效并且求程序运算所耗时间。(高效的正确时间复杂度应为O(n))
自己:最好修改为long long 注意数据的取值范围
#include<stdio.h>
int main()
{int i,n;
int m=1;
int sum=0;
printf("请输入n的值:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m=m*i;
sum=sum+m;
}
printf("1!+2!+3!+...+n!的值=%d\n",sum);
return 0;
} 递归版:
public static void sum(int number) {
int sum = 0;
int temp = 0;
for(int i=1; i<=number; i++) {
temp = function2(i);
sum += temp;
}
System.out.println(sum);
}
public static int function2(int number) {
if(number == 1) {
return 1;
}else {
return function2(number-1)*number;
}
} 其他类似难度的C语言整理:
