实验三
任务1
#include<math.h>
#include<stdio.h>
int main(){
float a, b, c, x1, x2;
float delta, real, imag;
printf("Enter a, b, c: ");
while(scanf("%f%f%f",&a, &b, &c) != EOF){
if(a == 0)
printf("not quadratic equation.\n\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\n", x1, x2);
}
else{
real = -b/(2*a);
imag = sqrt(-delta)/(2*a);
printf("x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n\n",real, imag, real, imag);
}
}
printf("Enter a, b, c: ");
}
return 0;
}

任务2
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 5
int main(){
int x, n;
srand(time(0));
n = 0;
do{
n++;
x = rand()%10;
printf("%3d",x);
}while(n<N);
printf("\n");
return 0;
}

任务3
#include<stdio.h>
#include<math.h>
int main(){
int x=1, a=0, j=0;
for(int n=101;n<=200;n++){
for(int i=2;i<=sqrt(n);i++){
if(n % i == 0){
x=0;
break;
}
else
continue;
}
if(x==1)j+=1;
if(x==1 && (j-1)%5!=0){
printf("%6d",n);
a++;
}
else if(x==1 && (j-1)%5==0 && j!=1){
printf("\n");
printf("%6d",n);
a++;
}
else if(x==1 && (j-1)%5==0 && j==1){
printf("%6d",n);
a++;
}
x=1;
}
printf("\n");
printf("101~200之间共有%d个素数",a);
return 0;
}

任务4
#include <stdio.h>
#include <math.h>
long long chang(long long i){
long long len=1;
if(i<=0)
return 0;
else{
for(;i/10>0;i/=10)
len++;
return len;
}
}
int main(){
long long num,len,i,a;
printf("Enter a number:");
while(scanf("%lld",&num)!=EOF){
long long j=0;
for(len=chang(num);len>=0;len--){
i=pow(10,len);
a=num/i;
num=num%i;
if(a%2!=0)
j=j*10+a;
}
printf("New number is:%d\n",j);
printf("\n");
printf("Enter a number:");
}
return 0;
}

先计算输入数字的长度:求这个数字一共有多少位,再利用这位数结合10的指数运算,依次把输入数字每一位上的数字打出来,判断是否为奇数,是奇数就输出。
任务5
#include<stdio.h>
int a(int n){
int all;
if(n<=0)
return -1;
else if(n==1){
all = 1;
return all;
}
else{
all = n*a(n-1);
return all;
}
}
int main(){
int n,x=1;
double sum=0,y;
printf("Enter n(1`10):");
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++){
x=a(i);
y=1.0/x;
x=1;
if(i%2==0)
sum = sum + -1 * y;
if(i%2!=0)
sum = sum + y;
}
printf("n = %d, s = %lf\n",n,sum);
printf("\n");
sum=0;
printf("Enter n(1`10):");
}
return 0;
}

任务6
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int day,guess,i=3;
srand(time(0));
day=rand()%31+1;
printf("猜猜2020年12月哪一天会是你的luck day\n");
printf("开始喽,你有三次机会,猜吧:");
for(;i>=1;i--){
scanf("%d",&guess);
if(guess==day){
printf("\n");
printf("Bingo!\n");
i=10;
break;
}
else if(guess>day){
printf("\n");
printf("你猜的日期晚了,luck day悄悄溜到前面啦\n");
if(i!=1)
printf("再猜:");
continue;
}
else{
printf("\n");
printf("你猜的日期早了,luck day还没到呢\n");
if(i!=1)
printf("再猜:");
continue;
}
}
if(i==0){
printf("\n");
printf("次数用完啦,偷偷告诉你:12月,你的luck day是%d号。\n",day);
}
return 0;
}

实验总结:
算法有简单和复杂的区别,未接触函数之前,自己只能用比较复杂的方法设计算法,学了函数之后,终于可以把程序中的很多操作储存到另一个函数当中,
需要的时候直接调用即可,如此代码就变得简洁许多。同时,再面对比较复杂的一些算法的时候,自己可能无能为力,再怎么看还是发现不了错误。这个时候,最
好的办法就是向老师和同学交流求助。所以说,接下来还是要多多学习才好。
浙公网安备 33010602011771号