【实验内容】
Part1: 验证性内容 这部分自行运行程序,并理解体会循环的用法。无需写在实验博客中。
Part2: 补足程序,使程序符合题目要求并正确运行
- 编程找出5个整数中的最大数和最小数,并输出找出的最大数和最小数。 算法思路描述:
-
/* 编程找出5个整数的最大数和最小数 《C语言程序设计教程学习指导》p122实验内容(3) */ #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: 编程练习
- 编程输出101-200之间所有素数,并输出这一区间内素数个数。
-
//编程输出101-200之间所有素数,并输出这一区间内素数个数。 #include<stdio.h> #include<math.h> int isprime(int m); int main(){ int i,n=0; for(i=101;i<=200;i++) { if(isprime(i)){ printf("%4d",i); n++; } } printf("素数个数有%d个\n",n); return 0; } int isprime(int m) { int k; for (k=2;k<=sqrt(m);k++) if(m%k==0) return 0; return 1; }
- 将一个长整型数s的每一数位上的奇数依次取出来,构成一个新的数,起高位仍在高位,低位仍在低位,例如, s=20199102时,t中的值为1991
-
//将一个长整型数s的每一数位上的奇数依次取出来,构成一个新的数,起高位仍在高位,低位仍在低位 #include<stdio.h> int main() { printf("Enter a number:\n"); long int s,y; int a,b,d,x,s0; a=0,b=1; d=1,x=0,y=0; scanf("%ld",&s); s0=s; while(s0!=0) { s0=s0/10; a++; } for(b=1;b<=a;b++) { x=s%10; s=s/10; if(x%2==1) { y=y+x*d; d=d*10; } else y=y+0; } printf("new number is :%d\n",y); return 0; }
- 拓展(*选做*):修改上述程序,使得它可以实现多组判断,直到用户 按下Ctrl+D或Ctrl+E结束。
-
//将一个长整型数s的每一数位上的奇数依次取出来,构成一个新的数,起高位仍在高位,低位仍在低位 #include<stdio.h> #include <stdlib.h> int main() { printf("Enter a number:\n"); long int s,y; int a,b,d,x,s0; a=0,b=1; d=1,x=0,y=0; while (scanf("%ld",&s)){ s0=s; while(s0!=0) { s0=s0/10; a++; } for(b=1;b<=a;b++) { x=s%10; s=s/10; if(x%2==1) { y=y+x*d; d=d*10; } else y=y+0; } printf("new number is :%d\n",y); } return 0; system("pause"); }
- 编写程序,实现从键盘上输入n和a,根据公式s=1/a+2/aa+3/aaa+…+n/(a..a)计算s的值,并输出。
-
//编写程序,实现从键盘上输入n和a,根据公式s=1/a+2/aa+3/aaa+…+n/(a..a)计算s的值,并输出。 #include<stdio.h> #include<math.h> int main() { int n,a,i,b; double s,c; printf("Enter n and a:\n"); scanf("%d%d",&n,&a); b=a; s=1.0/a; for(i=2;i<n;i++) { b=b+a*pow(10,i-1); c=i/b; s=s+c; } printf("s=%f\n",s); return 0; }
- 拓展(*选做*):修改上述程序,使得它可以实现多组判断,直到用户 按下Ctrl+D或Ctrl+E结束。
-
//编写程序,实现从键盘上输入n和a,根据公式s=1/a+2/aa+3/aaa+…+n/(a..a)计算s的值,并输出。 #include<stdio.h> #include <stdlib.h> int main() { int n,a,i,b; double s,c; printf("Enter n and a:\n"); while (scanf("%ld%ld",&n,&a)) { b=a; s=1.0/a; for(i=2;i<n;i++) { b=b*10+a; c=i/b; s=s+c; } printf("s=%lf\n",s); } system("pause"); return 0; }
【实验总结与体会 】
本次实验中的收获:对循环结构了解熟悉了点,学会了如何计算一个数字的位数,如何取一个数各位数
遇到的问题:后两个程序有误,但是实在找不着错误,还请大佬们有空帮忙瞅一眼,感谢!;
还是容易语法错误