实验3 c语言的分支结构、循环语句、函数综合应用编程1
实验一
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 int main() { int x,n; srand(time(0)); //以当前系统时间作为随机种子 for(n=1;n<=N;n++) { x=rand()%100; //生成一个0~99之间的随机整数 printf("%3d",x); } printf("\n"); return 0; }
实验二
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 1 int main() { int x,n,a; printf("猜猜2021年5月哪一天会是你的luck day\n"); printf("开始喽,你有三次机会,猜吧(1~31):\n"); srand(time(0)); x=rand()%30+1; for(n=1;n<=3;n++) { scanf("%d",&a); if(a>x) { printf("你猜的日期晚了,luck day悄悄跑溜到前面啦\n"); } else if(a<x) { printf("你猜的日期早了,luck day还没到呢\n"); } else break; } printf("次数用完啦,偷偷告诉你:5月,你的luck day是%d号",x); return 0; }
实验三
#include <stdio.h> #include <math.h> int main(){ long int s; int n,x,i; while(printf("Enter a number:"),scanf("%ld",&s)!=EOF){ x=0; i=0; while(s!=0){ n=s%10; s=s/10; if(n%2!=0){ x=x+n*pow(10,i); i++; } } printf("new number is:%ld\n\n",x); } return 0; }
实验四
#include<stdio.h> #include<math.h> void solve(double a,double b, double c); int main() { double a,b,c; printf("Enter a,b,c:"); while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF) { solve(a,b,c); printf("Enter a,b,c:"); } return 0; } void solve(double a,double b, double c) { double x1,x2; double delta,real,imag; if(a==0) printf("not quadratic equation.\n"); else { delta=b*b-4*a*c; if(delta>=0) { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("x1=%.2f,x2=%.2f\n",x1,x2); } else { real=-b/(2*a); imag=sqrt(-delta)/(2*a); printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n",real,imag,real,imag); } } }
不能,返回值只能返回一个值,而一元二次方程的根有两个而且还分实部和虚部两部分
实验五
#include<stdio.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 a,sum,b; double result; b=1; sum=1; result=0; for(a=1;a<=n;a++) { sum=sum*a; result=result+b*1.0/sum; b=-b; } return result; }
实验六
#include<stdio.h> #include<math.h> #include<stdlib.h> int isPrime(int n); int main() { int x,y; int c=0; for(x=101;x<200;x++) { y=isPrime(x); if(x==y) {printf("%d ",y,c++); if(c%5==0) printf("\n");} } printf("\n100到200之间的素数个数为:%d\n",c); return 0; } int isPrime(int n) { int i,m,s; m=sqrt(n); for(i=2;i<=m;i++) { if(n%i==0) break; } if(i>m&&n>1) { s=n; return s; } else return 0; }
要把细节处理好,不然最后一个程序会毁在一个细节上