实验三
part1:验证性内容
一元二次方程求解
// 一元二次方程求解 // 重复执行, 直到按Ctrl+D或Ctrl+E结束 // #include <math.h> #include <stdio.h> #include <stdlib.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)) { 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 = %f, x2 = %f\n", x1, x2); } else { real = -b/(2*a); imag = sqrt(-delta) / (2*a); printf("x1 = %f + %fi, x2 = %f - %fi\n", real, imag, real, imag); } } printf("Enter a, b, c:\n"); } system("pause"); return 0; }
猜数游戏
// 猜数游戏 // 程序运行时自动生成1~100之间的随机数,提示用户猜 // 如果用户猜的数等于随机数,提示用户猜对了,程序结束 // 否则,如果用户猜的数小于随机数,提示用户低了,用户继续猜 // 如果用户猜的数大于随机数,提示用户高了,用户继续猜 // 程序循环运行直到用户猜对为止 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int guessNumber; // 存放程序运行时生成的1~100之间的随机整数 int ans; // 存放用户猜的数字 srand((time(0))); // 以时间函数作为随机种子 guessNumber = 1 + rand()%100; // 生成1~100之间的随机数 do { printf("your guess number is(1~100): "); scanf("%d", &ans); if(ans < guessNumber) printf("%d is lower than the number.\n", ans); else if(ans > guessNumber) printf("%d higher then the number.\n", ans); }while(ans != guessNumber); printf("Congratulations. you hit it~\n"); system("pause"); // 在devc中运行时,这一行可以去掉 return 0; }
part2补足程序,使程序符合题目要求并正确运行
编程找出5个整数中的最大数和最小数,并输出找出的最大数和最小数。
#include <stdio.h> #include <stdlib.h> int main() { int number, max, min, n; n=1; printf("输入第%d个数 ", n); scanf("%d", &number); max = number; min = number; while(n<5) { n++; printf("输入第%d个数 ", n); scanf("%d", &number); if(number>max) max = number; else if(number<min) min = number; } printf("最大数为: %d\n", max); printf("最小数为: %d\n", min); system("pause"); return 0; }
part3:编程练习
1.输出101~200之间素数和素数个数
#include<stdio.h>
#include<math.h>
int isprime(int n);
int main()
{
int i,j;
j=0;
for(i=101;i<=200;i++)
{
if(isprime(i))
printf("%4d",i);
if(i%25==0)
printf("\n");
}
for(i=101;i<=200;i++)
{
if(isprime(i))
j=j+1;
}
printf("\n101~200之间共有素数个数:%d",j);
return 0;
}
int isprime(int n)
{
int k;
for(k=2;k<=sqrt(n);k++)
if(n%k==0)
return 0;
return 1;
}
按照老师的建议修改过后 在一次循环中完成
int isprime(int n); int main() { int i,j; j=0; for(i=101;i<=200;i++) { if(isprime(i)) { printf("%4d",i); j=j+1; } if(i%25==0) printf("\n"); } printf("\n101~200之间共有素数个数:%d",j); return 0; } int isprime(int n) { int k; for(k=2;k<=sqrt(n);k++) if(n%k==0) return 0; return 1; }
2.将一个长整型数s的每一数位上的奇数依次取出来,构成一个新的数,起高位仍在高位,低位仍在低位。
#include<stdio.h> #include<math.h> int main() { long n; int t,p,m; t=0; p=1; printf("Enter a number:"); scanf("%ld",&n); while(n) { m=n%10; if(m%2!=0) { t=t+m*p; p=p*10; } n=n/10; } printf("new number is:%ld\n",t); return 0; }
3.实现从键盘上输入n和a,根据公式s=1/a+2/aa+…+n/(a…a)计算s的值并输出。
#include<stdio.h> int main() { int i,a,n,k=0; double s=0.0; printf("Enter n and a:"); scanf("%d %d",&n,&a); for(i=1;i<=n;i++) { k=k*10+a; s=s+(double)i/k; } printf("\ns=%lf",s); return 0; }
实验总结与体会
通过实验对循环有了更好的理解和运用,编写的程序较上次来看简单了点。但还是会犯小错误,并且自己看很久也找不到,希望下次细心些。