1,
与预期结果一样
static的作用就是给一个变量赋一个初始值,在第二次执行到该语句时,不会再次给变量赋值
2,
void printSymbol(int n,char symbol) { int i; for(i=0;i<n;i++) { printf("%c",symbol); } return; }
3,
void printSymbol(int n,char symbol) { if(n==1) { printf("%c",symbol); return ; } else { printf("%c",symbol); printSymbol(n-1,symbol); } }
我认为迭代更好,问题越简单,就要用简单的方法,当问题变复杂的时候,递归的效果才能更好
4,
#include<stdio.h> #include<math.h> int isPrime(int n); int main() { int a,b,i,x=0; printf("请输入判定范围:"); scanf("%d %d",&a,&b); for(i=a;i<=b;i++) { if(isPrime(i)==1) continue; else { printf("%d ",i); x++; } if(x%10==0) printf("\n"); } printf("\n%d~%d之间一共有%d个非素数",a,b,x); return 0; } int isPrime(int n) { int i; for(i=2;i<sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) return 1; else return 0; }
5,
#include <stdio.h> #include<math.h> long fun(long s); // 函数声明 int main() { long s, t; printf("Enter a number: "); while (scanf("%ld", &s) != EOF) { t = fun(s); // 函数调用 printf("new number is: %ld\n\n", t); printf("Enter a number: "); } return 0; } long fun(long s) { long t=0; int a,x1,x2,i,e=1,w[e]; for(a=0;;a++) { if(s/pow(10,a)==0) break; } for(i=1;i<a;i++) { x1=pow(10,i); x2=pow(10,i-1); if((s%x1)/x2%2==0) continue; else { w[e]=(s%x1)/x2; e++; } } for(i=1;i<e;i++) t+=w[i]*pow(10,i-1); return t; }
6,
#include <stdio.h> #include<math.h> double fun(int n); // 函数声明 int main() { int n; double s; printf("Enter n(1~10): "); while (scanf("%d", &n) != EOF) { s = fun(n); // 函数调用 printf("n=%d,s=%f\n\n",n,s); printf("Enter n(1~10): "); } return 0; } double fun(int n) { int i,t=1; double b,a[i]; for(i=0;i<n;i++) { t=t*(i+1); a[i]=1.0/t*pow(-1,i); } for(i=0;i<n;i++) { b+=a[i]; } return b; }