700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 实验五 循环结构程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书

实验五 循环结构程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书

时间:2019-02-09 09:05:56

相关推荐

实验五 循环结构程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书

实验6.1

//程序功能:输入一个整数n,求1/1-2/3+3/5-4/7+5/9-6/11+……的前n项之和#include <stdio.h>int main(){int i, n;float sum = 0, flag = 1.0;printf("Input n:");scanf("%d", &n);for (i = 1; i <= n; i++) //循环n次{sum = sum + flag * i / (2 * i - 1); //累加一项flag = -flag; //改变累加项的符号}printf("Sum = %f\n", sum);system("pause");return 0;}

实验6.2

//程序功能:求前n项阶乘之和#include <stdio.h>int main(){int n, i;double sum = 0, product = 1; //声明并赋初值printf("Input n:");scanf("%d", &n);for (i = 1; i <= n; i++){product = product * i; //计算阶乘sum = sum + product; //累加一项}printf("sum = %Lf\n", sum);system("pause");return 0;}

实验6.3

//利用级数n(n<=1e-6),求cos(x)的值#include <stdio.h>#include <math.h> //引入头文件#define EPS 1e-6 //宏定义EPS=1e-6int main(){double n = 1, cosx, t;float x;printf("Please input x:");scanf("%f", &x);t = 1;cosx = 0;do{cosx = cosx + t;t = -t * x * x / ((2 * n) * (2 * n - 1)); //计算第n项的阶乘n = n + 1;} while (fabs(t) > EPS); //循环终止条件:第n项的绝对值小于1e-6printf("cos(%f)=%0.8f\n", x, cosx);system("pause");return 0;}

实验6.4

/*程序功能:统计输入字符中,英文(letters),空格(space),数字(digit)和其他字符(other的个数)*/#include <stdio.h>int main(){char ch;int letters = 0, spaces = 0, digit = 0, other = 0;printf("Please input some characters: \n");while ((ch = getchar()) != '\n') //输入回车键终止循环{if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))letters++; //计算字母else if (ch == ' ')spaces++; //计算空格else if (ch >= '0' && ch <= '9')digit++; //计算数字elseother++; //计算其他字符}printf("letters = %d, spaces = %d\n", letters, spaces);printf("digit=%d, others = %d\n", digit, other);system("pause");return 0;}

实验6.5

//程序功能:求e的近似值#include <stdio.h>#define EPS 1e-8int main(){double e = 1, fact = 1;long n = 0;do{n++;fact *= n;e = e + 1 / fact;} while ((1 / fact) > EPS);//当(1/fact)< EPS 时,假,跳出循环printf("e=%0.8f\n", e);system("pause");return 0;}

实验6.6

//输入一个整数,判断该数是否是完数(真因数之和等于数本身),如6,28,496#include <stdio.h>int main(){int m, sum = 0, n = 1;printf("Please input a integer(>1): ");scanf("%d", &m);do{if (m % n == 0) //判断是否为因子sum = sum + n;n++;} while (n <= m - 1);if (sum == m) //满足此条件为完数printf("%d is a complete number.\n", m);elseprintf("%d isn't a complete number.\n", m);system("pause");return 0;}

实验6.7

//输入任意字符串,将其中字母直接输出,数字逆序输出#include <stdio.h>int main(){char ch;long m = 0, n = 0, nx = 0;while ((ch = getchar()) != '\n'){if (ch >= '0' && ch <= '9')m = m * 10 + (ch - '0');else{putchar(ch);}}//printf("%d", m);n = m;while (m != 0){nx = (nx * 10) + (m % 10);m = m / 10;}printf("\n%ld reverse number is %ld\n", n, nx);system("pause");return 0;}

实验6.8

//从键盘输入一批学生的成绩(以负数结束),计算平均分,并统计不及格成绩的个数#include <stdio.h>int main(){int num, n;float score, total = 0;num = 0;n = 1;printf("Please input score # %d(0~100): ", n);scanf("%f", &score);for (; score >= 0; n++){if (score < 60)num++;total = total + score;printf("Please input score # %d(0~100): ", n + 1);scanf("%f", &score);}printf("The average score is %.2f.\n", total / (n - 1));printf("The numbers between 0 and 59 is %d.\n", num);system("pause");return 0;}

实验6.9

//从键盘输入一行以回车结束的字符,统计并输出字符的个数#include <stdio.h>int main(){int i = 0;char ch;while ((ch = getchar()) != '\n'){putchar(ch);i++;}printf("\nThere are %d characters.\n", i);system("pause");return 0;}

实验6.10

//从键盘输入一个整数,计算并输出它是几位数#include <stdio.h>int main(){int i = 0, num, k;方法1:do{printf("Please enter a integer(>0): \n");scanf("%d", &num);} while (num < 0); //输入负数要求重新输入////方法2://input://{//printf("Please enter a integer(>0): \n");//scanf("%d", &num);//}//if (num < 0)goto input;//输入负数要求重新输入k = num;while (k > 0){k /= 10;i++;}printf("%d is a %d-digit number.\n", num, i);system("pause");return 0;}

实验6.11

//计算级数的值#include <stdio.h>#include <math.h> //引入头文件#define EPS 1e-8 //宏定义EPS=1e-6int main(){float total = 1, t = 1, x;long n = 0;printf("Please input x: ");scanf_s("%f", &x);do{n++;t = -t * (x / n); //求每部分total = total + t; //求和} while (fabs(t) > EPS); //跳出循环条件printf("total = %0.8f\n", total);system("pause");return 0;}

实验7.1

//输出100以内能被3整除且个位数为6的所有整数#include <stdio.h>int main(){//方法一//int i,j;//for (i=0; i<10; i++)//{//j=i*10+6;//if (j%3!=0)//continue;//printf("%d\n",j);//}//方法二int i;for (i = 6; i < 100; i++)if (i % 3 == 0 && i % 10 == 6)printf("%d\n", i);getchar();return 0;}

实验7.2

//求大于2且满足下列条件的最小偶数: 该数被3,4,5,6除时余数均为2#include <stdio.h>int main(){int i = 4;while (1){if ((i % 3 == 2) && (i % 4 == 2) && (i % 5 == 2) && (i % 6 == 2)){printf("%d\n", i);break;}i = i + 2;}getchar();return 0;}

实验7.3

//输出四位整数中满足: 该数的9倍恰好是其反序数的数(如1234→4321)#include <stdio.h>int main(){int i, n, m, nx;for (n = 1000; n < 10000; n++){m = n; //将n赋值给mnx = 0;for (i = 0; i < 4; i++){nx = nx * 10 + m % 10; //求m的逆序数m /= 10;}if (n * 9 == nx) //判断9n是否等于n的逆序数printf("%8d-->%8d\n", n, nx);}getchar();return 0;}

实验7.4

//输出即是素数又是回文数的三位整数#include <stdio.h>#include <math.h>int main(){int i, j = 0, n, m, k, flag;for (n = 100; n < 1000; n++){flag = 0; //标志置0k = sqrt(n * 1.0);for (i = 2; i <= k; k++) //判断是否为素数{if (n % i == 0){flag = 1; //标志置为1,非素数break;}if (flag)continue; //判断下一个数k = n;m = 0;while (k > 0) //求其反序数{m = m * 10 + k % 10;k /= 10;}if (m == n) //条件满足,则是要找的数{printf("%d\t", n);if (++j % 5 == 0)printf("\n");}}}getchar();return 0;}//素数: 一个大于1的自然数,除了1和它本身外,不能被其他自然数整除//回文数: 如123321

实验7.5

//输出0~200000范围内具有如下特征的数:组成该数的各位数字阶乘之和等于该数本身(如145=1!+4!+5!)#include <stdio.h>int main(){long n, m, sum, p;int i, j = 0, k;for (n = 1; n < 200000; n++){m = n;sum = 0; // 累加和置零while (m){k = m % 10; //取出一位数字p = 1;for (i = 2; i <= k; i++) //求阶乘p *= i;sum += p; //累加阶乘和m /= 10;}if (sum == n) //阶乘与原数相等,则满足条件{printf("%ld\t", n);if (++j % 2 == 0)printf("\n");}}getchar();return 0;}

实验7.6

//输出两位正整数的"平方镜反数"(该数的平方与该数的反序数的平方互为反序数,如12*12=144,21*21=441)#include <stdio.h>int main(){int i, j, n, m, t;for (i = 10; i < 100; i++){j = i % 10 * 10 + i / 10; //求两位数的反序数m = i * i;n = j * j;t = 0;while (n) //求平方数的反序数{t = t * 10 + n % 10;n /= 10;}if (m == t)printf("(%d,%d)\n", i, j);}getchar();return 0;}

实验7.7

//输入级数n, 使用嵌套循环求e值#include <stdio.h>int main(void){int i, j, n;double e = 1, fact;printf("Input n:");scanf("%d", &n);for (i = 1; i <= n; i++){fact = 1;for (j = 1; j <= i; j++)fact = fact * j;e = e + 1.0 / fact;}printf("e=%.2f\n", e);getchar();getchar();return 0;}

实验7.8

//将一个整数分解为质因数相乘{注:每个合数都可以写成几个质数(也可称为素数)相乘的形式}#include<stdio.h>int main(){int n; // 输入的整数int i; // 最小质数printf("输入一个整数:");scanf("%d",&n);printf("%d=",n);// n>=2才执行下面的循环for(i=2; i<=n; i++){while(n!=i){if(n%i==0){printf("%d*",i);n=n/i;}else break;}}printf("%d\n",n);getchar();getchar();return 0;}

实验7.9

// 输出*的菱形图#include <stdio.h>int main(){for (int i=1;i<=4;i++)//打印前4行{for (int m = i; 4 - m > 0; m++)//控制行首的缩进printf(" ");for (int k=1;k<=(2*i-1);k++)//打印字符{printf("%s"," *");}printf("\n");}for (int i = 3; i > 0; i--)//打印后3行{for (int m = i; 3-m>=0 ; m++)//控制行首的缩进printf(" ");for (int k = 1; k <= (2 * i - 1); k++)//打印字符{printf("%s", " *");}printf("\n");}system("pause");return 0;}

实验五 循环结构程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打 仅供参考)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。