美文网首页
练习题2

练习题2

作者: 全無 | 来源:发表于2017-12-15 10:27 被阅读23次
练习题目.png

1、在显示器上输出字符串 I am a student

#include<stdio.h>
int main(void)
{
    printf(" I am  not  a stdudent\n");
    return 0;
}

3、输入一个角度,计算x对应的正切值(提示:math.h中tan()函数)
180°等于1弧度。
角度(angle):
弧度(radian):

#include<stdio.h>
#include <math.h>
#define PI 3.1415926   //必须指定确切的数

int main(void)
{
    double x = 0;
    
    printf("Enter a value: ");
    scanf("%lf",&x);
    
    x = (PI * x )/180;     //角度和弧度的转换规则
    
    printf(" tan(x) = %.0lf\n",tan(x));

    return 0;
}

错误

#include <stdio.h>
#include <math.h>

#define PI 3.14159265

int tan (void)
{
    double  x = 0;
    printf("Enter the value: \n");
    scanf("%lf",&x);
    
    
    x = tan ( x * PI / 180.0 );
    
    printf ("The tangent of %f degrees is %f.\n", x, tan(x) );
    return 0;
}

2、从键盘上输入三个学生的考试成绩,计算其平均分并输出。(不存储上面的分数)
(1) 不使用数组解决平均分问题
存在问题一:
不清楚使用什么类型的数据类型
存在问题二:
不知道到怎么转换类型

#include<stdio.h>
int main(void)
{
      int count = 3;
      double grades =0L;
      double  sum  =0L;
      float  average =0;
   
     for( unsigned int i = 0; i<count; ++i)
     {
             printf("请输入三个学生的成绩: \n");
             scanf("%ld",&grades);
             sum += grades;
      }
     
     average = (double)sum / count ;
     printf("这三个学生的平均分%lf: \n",average); 
     return 0;
}

(2)不是用数组计算平均分(存储分数)

#include<stdio.h>
int main(void)
{
    double sum = 0;
    float   average =0;

   int grade 0 = 0, gade1 = 0, grade2= 0;    
   printf("Enter the three grades,\n");
   scanf("%d%d%d",&grade0,&grade1,&grade2);

   sum = grade0 +grade1 +grade2;
   average = sum / 3.0f;
  
   printf("这三个学生的平均分%lf: \n",average); 
   return 0;

(3) 使用数组解决平均问题

#include<stdio.h>
int main(void)
{
   int grades[3];
   int count = 3;
   double sum =0;
   float average = 0;

   printf("请输入成绩: \n");
   
    for(unsigned int i = 0; i < count ; ++i)
    {
          printf("
          scanf("%ld",&grades[i]);
          sum += grades[i]
   }
     average = sum / count;
    printf("这三个学生的平均分%lf: \n",average); 
     return 0;
}

4、输入两个数,输出其中的大者

#include <stdio.h>
int main(void)
{
   int  a = 0;
   int  b = 0; 

   printf("请输入两个数: \n");
   scanf("%d  %d",&a,&b);
   if(a>b)
   {
       printf(" Max number is %d,"a);
   }
   else
   {
       printf("Max number is %d", b);
   }
    return 0;
}

9、从键盘输入两个数,求出其中的大者。

#include<stdio.h>
int main(void)
{
    int x = 0;
    int y = 0;
    int z = 0;
    
    printf("请输入两个数: \n");
    scanf("%d %d",&x,&y);
    
    if(x >y)
    {
        z=x;
    }
    else
    {
        z=y;
    }
    printf("Max number is %d\n",z);
    return 0;
}

6、从键盘输入两个数,求出这两个数中的小者并将结果输出。

#include stdio.h>
int main(void)
{
    int a = 0;
    int b = 0;
    printf("请输入两个数:\n");
    scanf("%d %d",&a,&b);

7、从键盘输入两个数,将这两个数交换之后输出。
(1)先存储,再取出来,交换之后再存储。(问题是取出来之后放在哪里呢?)
(2)由于数据都在内存中存储,把变量存入到盒子中,找到一个临时变量,把一个盒子的值赋值给一个变量,这个盒子就空了,然后另一值赋值给第一个盒子,第二个盒子就空了,再把临时变量的值赋给第二个变量,即可。
(3)有两个盒子,A盒子里面有两个黑色的球,B盒子里面有三个白色的球,
第一步是A盒子里的两个黑色的球+三个白色的球(就有5个球),第二步是把5个球减去3个白色的球(2个黑色的球),第三步是把5个球减去两个黑色的球(3个白色的球)
易读性

#include <stdio.h>

int main(void)
{
    int number1 = 0;
    int number2 = 0;
    
    printf("请输入两个数:\n");
    scanf("%d %d",&number1,&number2);
    
    printf("number1 = %d, number2 = %d\n",number1,number2);
    
    //1、number1 = number1 + number2;
    //2、number2 = number1 - number2;
    //3、number1 = number1 - number2;
    
    int temp = 0;
    
    temp = number1;
    number1 = number2;
    number2 = temp;
    
    printf("number1 = %d ,number2 = %d\n",number1,number2);
    
    
   
    return 0;
}

8、从键盘输入一个数,将该数的绝对值输出。

方法一

#include <stdio.h>

int main(void)
{
    int a = 0;
    
    printf("请输入一个数字: \n");
    scanf("%d",&a);
    
    if(a >=0)
    {
        printf("%d\n",a);
    }
    else
    {
        a = (-a);
        printf("%d\n",a);
    }
       return 0;
    
}

方法二: 求取绝对值 是fabs()函数 double类型的lf 、 、 float 类型的f

#include <stdio.h>
#include <math.h>

int main(void)
{
    float a = 0;
    
    printf("请输入一个数: ");
    scanf("%f",&a);
    
    printf("fabs(a) = %.0f\n",fabs(a));
    
    return 0;
}

5、求1~100的和。

#include<stdio.h>
int main(void)
{
   int count = 100;
   int sum = 0;

   //read the number of integers to be sum
   printf("\nEnter the number of integer you want to sum:\");
  scanf("%d",&count);

    //sum integers from 1 to count
   for(unsigned int i =0; i < count; ++i)
              sum += i;
   printf("\nTotal of the first %u number is %llu\n",count, sum);
   return 0;
}
输出结果为:
Enter the number of integers you want to sum:
Total of the first 10 integers is 55

10、编写一个程序,求1~100中的质数(素数)。
就是在所有比1大的整数中,除了1和它本身以外,不再有别的约数,(能被整除的个数小于<3)这种整数叫做质数
当被除数/除数的余数是零表示除数能被(被除数)整除
怎样判断一个数是质数呢?
问题一:练习这一题可以加深理解嵌套的for循环。
先判断条件,然后执行循环体,
问题二:运算符/和%的使用,如果使用{(i%j)==0}可以判断i 有多少个约数。只有1和它本身这两个约数的数是质数。
问题三:
自己没有真正的理解的内容,即使你抄下来了也不是你自己的东西。

#include <stdio.h>

int main1(void)
{
    for (int i = 2; i <= 100; i++) {
        // 判断 i 是否为质数
        int count = 0;
        for (int j = 1; j <= i; j++) {
            // 判断 i % j 是否为 0
            if (i % j == 0) {
                // 计数:计算 i 有多少个约数
                count += 1;
            }
        }
        
        // 判断约数的个数是否小于 3
        if (count < 3) {
            printf("%d 是质数\n", i);
        }
    }
    return 0;
}
#include <stdio.h>

int main() {
    int number = 0;
    printf("请输入一个整数(2 ~ 100):");
    scanf("%d", &number);
    
    int count = 0;
    for (int i = 1; i <= number; i++) {
        if (number % i == 0) {
            count += 1;
        } else {
            // Do nothing
        }
    }
    
    if (count < 3) {
        printf("%d 是质数\n", number);
    }
    return 0;
}

12、求1~100中的所有奇数之和。

#include<stdio.h>
int main(void)
{
    int sum = 0;
    int count = 0;

    printf("\nEnter the number you want to sum: ");
    scanf("%d", &count);


    for (unsigned int n = 0; n <= count; ++n)
    {
        sum += (2 * n + 1);

    }
    printf("1~100的所有基数和%d: \n", sum);
    return 0;
}

11、从键盘输入一个数并求其阶乘值
自己上午写的程序,到了晚上竟然忘记怎么写了。

#include <stdio.h>
int main(void)
{
    int a =0;
    int sum = 1;
    
    printf("请输入一个数:");
    scanf("%d",&a);
    
    for( int n =1; n<= a; ++n)
    {
        // sum= sum * [n(n-1)(n-2)(n-3)....4*3*2*1]
        sum *= n;
    }
    printf("%d!= %d\n",a,sum);
    return 0;
}

13、编写程序,要求从键盘输入N, 求1/3+2/4+3/5+。。。n-2/n
i 是循环控制变量的初值。n是循环判断的条件。
+=运算符是为了实现在本身基础上继续加;
问题一:
如何实现强制类型转换(不理解如何实现)
问题二:
for循环的具体操作不清楚。
问题三:
打印的操作的目的是什么呢?

#include <stdio.h>

int main(void)
{
    int n = 0;
    float result =0;
    
    printf("请输入一个不小于3的数: \n");
    scanf("%d",&n);
    
    for(int i = 3; i <= n; ++i)
    {
        result += (float)(i-2)/i;
    }
    
    printf("%f\n",result);
    
    return 0;
}

相关文章

网友评论

      本文标题:练习题2

      本文链接:https://www.haomeiwen.com/subject/xrneettx.html