第五次作业

实验一:

1.输入两个正整数mn(要求m<=nm!+(m+1)!+(m+2)!…+n!

#include<stdio.h>
int main()
{
 int m,n,j,s1;
 float sum=0;
 printf("请输入两个正整数m和n,且m<n ");
 scanf("%d%d",&m,&n);
 while(m<0||n<0||m>n)
 {
  printf("请按要求输入m和n的值 ");
  scanf("%d%d",&m,&n);
 }
 for(;m<=n;m++)
 {
  s1=1;
  for(j=1;j<=m;j++)
  {
   s1=s1*j;
  }
  sum=s1+sum;
  }
   printf("所求阶乘的值为%f",sum);
 
  return 0;
 }

 

实验二:

 2.输出1000以内的所有完数。所谓完数是指这个数恰好等于除他本身外的所有因子之和。例,6的因子为1,2,3,6=1+2+3,所以6是完数。 

#include<stdio.h>
int main()
{
    int m,i,s;
  printf("1000以内所有完数有:");
for(m=1;m<=1000;m++) { s=0; for(i=1;i<m;i++) { if(m%i==0) { s=s+i; } } if(s==m) { printf("%d 0",m); } } return 0; }

 

实验三:

   3.奇偶归一猜想——对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1   n = 11,得序列:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1(共有14个步骤)  题目输入正整数n,求这个n多少步能归一 

#include<stdio.h>
int main()
{
    int x,i; 
    printf("请输入一个正整数x
");
    scanf("%d",&x);
    i=0; 
    if(x<=0)
    {
        printf("请输入正整数"); 
    }
    do
        {
            if(x%2==0)
        {
            x=x/2;
        }
        else
        {
            x=3*x+1;
        }
        i++;
    }while(x!=1);
    printf("这个x经过%d步能归一",i);
    return 0;
}

附加题一:

1.输入一个正整数n,输出2/1+3/2+5/3+8/5+…的前n项之和,保留2位小数,该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

#include<stdio.h>
int main()
{
    int n,i;
    float sum=0,a=2.00,b=1.00,c;
    printf("请输入一个正整数
");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        sum=a/b+sum;
        c=a+b;
        b=a;
        a=c;
     } 
     printf("前n项之和为%.2f",sum);
     return 0;
  }  

附加题二:

2.凯撒密码(caeser)的原理:每一个字母按字母表顺序向后移3位,如a加密后变成db加密后变成e……x加密后变成ay加密后变成bz加密后变成c。例如:“baidu”用凯撒密码法加密后字符串变为“edlgx”。试写一个算法,将键盘输入的文本字符串(只包含az的字符)进行加密后输出。 

#include<stdio.h>
#include<stdlib.h>
int main()
{
   char letter;
   printf("请输入字符 ");
   scanf("%c",&letter);
   while(letter!=' ')
  {
  if(letter>='a'&&letter<='w')
  {
   letter=letter+3;
   printf("%c",letter);
  }
  else if(letter>='x'&&letter<='z')
  {
   letter=letter-23;
   printf("%c",letter);
  }
  else
  {
   printf("请完全输入小写字符 ");
   fflush(stdin);  
  }
      scanf("%c",&letter);
 }
 return 0;
}

识点总结:

1  循环语句的嵌套是当执行内层循环到不符合条件后执行外层循环,之后再执行 内层循环;

2  当for语句的括号里不够三个语句时不要忘记两个分号;          

3  当变量需要赋值时必要时要靠近语句赋值;                                                                                                                                        个语句时也要

4  do  while语句后要加分号;

5  字符型变量后加一个=再加上数字代表的是那个数字所对应的字符

6  适当地方要记得用清屏语句fflush(stdin); 这个语句包含在#include<stdlib.h>库文件夹中;

  

原文地址:https://www.cnblogs.com/myfdpk/p/6020942.html