zoukankan      html  css  js  c++  java
  • C基础的练习集及测试答案(1-15)

    练习题:
    注:标有(课堂)字样的为课上练习,其他为课下练习
    基础题(50题)
    1、(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字)。

     1 //1、(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字)。
     2 
     3 #include<stdio.h>
     4 #define N 20
     5 int main(){
     6     char ch[N]={0};
     7     //while(gets(ch)!=NULL){
     8         //puts(姓名);
     9         gets(ch);
    10         puts(ch);
    11         puts("欢迎来到动物园");
    12         
    13         
    14     //}
    15     
    16     return 0;
    17 }

     1 //1、(课堂)编写程序,输出“XXX欢迎来到动物园!”(XXX是自己的名字)。
     2 
     3 #include<stdio.h>
     4 #define N 20
     5 int main(){
     6     char ch[N]={0};
     7     scanf("%s",ch);
     8     printf("%s欢迎来到动物园",ch);
     9         
    10         
    11     //}
    12     
    13     return 0;
    14 }


    2、(课堂)打印用*组成的字母C

    //2、(课堂)打印用*组成的字母C
    #include<stdio.h>
    
    int main(){
        
        printf("  ***
    ");
        printf(" *   *
    ");
        printf("*
    ");
        printf("*
    ");
        printf("*
    ");
        printf(" *   *
    ");
        printf("  ***
    ");
        return 0;
    }


    3、交换杯子里的液体。使用不同的整数代表液体,变量代表杯子。
    (课堂)方法1:中间变量法
    (课堂)方法2:三步异或法
    方法3:加和分减法

    #if 0
    交换杯子里的液体。使用不同的整数代表液体,变量代表杯子。
    (课堂)方法1:中间变量法
    (课堂)方法2:三步异或法
    #endif
    
    #include<stdio.h>
    
    void fun1(int *i,int *j){
        int temp;
        temp=*i;
        *i=*j;
        *j=temp;
            
    }
    void fun2(int *i,int *j){
        *i^=*j;
        *j^=*i;
        *i^=*j;
    }
    int main(){
        
        int i=3,j=9;
        printf("i=%d,j=%d
    ",i,j);
        fun1(&i,&j);
        printf("i=%d,j=%d
    ",i,j);
        fun2(&i,&j);
        printf("i=%d,j=%d
    ",i,j);
        
        return 0;
    }

    4、(课堂)使用宏定义PI来定义3.1415926,计算圆的面积。

    //4、(课堂)使用宏定义PI来定义3.1415926,计算圆的面积。
    #include<stdio.h>
    #define PI 3.1415926
    int main(){
        int length,perimiter;
        scanf("%d",&length);
        perimiter=length*2*PI;
        printf("周长:%d",perimiter);
    }


    5、(课堂)租船问题。
    写程序计算游客需要付的租船的费用。租船每小时30元。游客输入租船时间,计算出租船费用。租船费用=时间*每小时钱数+押金。
    要求押金与每小时钱数使用宏定义。

     1 #if 0
     2 5、(课堂)租船问题。
     3 写程序计算游客需要付的租船的费用。租船每小时30元。游客输入租船时间,计算出租船费用。租船费用=时间*每小时钱数+押金。
     4 要求押金与每小时钱数使用宏定义。
     5 #endif
     6 #include<stdio.h>
     7 #define unit 30
     8 #define deposite 100
     9 
    10 
    11 int main(){
    12     int time,total;
    13     printf("请输入时间");
    14     scanf("%d",&time);
    15     total=time*unit+deposite;
    16     printf("总价:%d",total);
    17     return 0;
    18 }


    6、(课堂)求以下数字的原码、反码、补码。(可以使用计算器)
    15(10进制)
    0xE3A4(16进制)

    一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同
    
    二、负整数的符号位固定为1,由原码变为补码时,规则如下:
    
          1、原码符号位1不变,整数的每一位二进制数位求反,得到反码
    
          2、反码符号位1不变,反码数值位最低位加1,得到补码


    7、输入一个整数(0~255),输出这个整数代表的ASCII码字符。

    #if 0
    7、输入一个整数(0~255),输出这个整数代表的ASCII码字符。

      解题思路:
      以%c形式输入以%d形式输出
      以%d形式输入以%c形式输出

    #endif
    #include<stdio.h>
    
    int main(){
        char ch;
        while(1){
            scanf("%d",&ch);
            printf("%c
    ",ch);
            
            
        }
        
        return 0;
    }












    7_1、输入整数代表的ASCII码字符,输出这个一个整数(0~255)。
     1 #if 0
     2 7_1、输入整数代表的ASCII码字符,输出这个一个整数(0~255)。

      解题思路:
      以%c形式输入以%d形式输出
      以%d形式输入以%c形式输出

     3 #endif
     4 #include<stdio.h>
     5 
     6 int main(){
     7     char ch;
     8     while(1){    
     9         scanf("%c",&ch);
    10         getchar();
    11         printf("%d
    ",ch);
    12     }
    13     
    14     return 0;
    15 }


    8、输入一个字符,判断这个字符是0~9之间的数字,还是大写字母,还是小写字母。若都不是输出错误信息。

     1 #if 0
     2 8、输入一个字符,判断这个字符是0~9之间的数字,还是大写字母,还是小写字母。若都不是输出错误信息。

      解题思路:
      多分支条件判断:

     3 #endif
     4 
     5 #include<stdio.h>
     6 
     7 int main(){
     8     char ch;
     9     scanf("%c",&ch);
    10     if(ch>='a'&&ch<='z'){
    11         printf("%d是小写字母",ch);
    12     }else if(ch>='A'&&ch<='Z'){
    13         printf("%d是大写字母",ch);
    14     }else if(ch>='1'&&ch<='9'){
    15         printf("%d是数字",ch);
    16     }else{
    17         printf("%d是特殊字符",ch);
    18     }
    19     
    20     return 0;
    21 }


    9、计算输入时间的下一秒。例如输入12 15 32,输出12:15:33;输入21 59 59,输出22:00:00。若输入非法时间(如输入小时是25、输入分钟/秒是61等情况)则报错。

     1 #if 0
     2 9、计算输入时间的下一秒。例如输入12 15 32,输出12:15:33;输入21 59 59,输出22:00:00 3 若输入非法时间(如输入小时是25、输入分钟/秒是61等情况)则报错。

      解题思路:
      一。多分支判断输入数据是否合法:
      二。数据转换规则:
      秒加一
      如果秒加一大于59
      则秒归零,分加一,此时如果分大于59
      则分归零,时加一,此时如果时大于23
      则时归零

      错误分析:
      一。数据转换不是多分支判断;

     4 #endif
     5 
     6 #include<stdio.h>
     7 void print(int time){
     8     printf("%d:错误数值",time);
     9 }
    10 
    11 int main(){
    12     int hour,minute,second;
    13     scanf("%d %d %d",&hour,&minute,&second);
    14     
    15     
    16     //判断数据是否合法
    17     if(0>hour||hour>23){
    18         print(hour);
    19         return 0;
    20     }else if(0>minute||minute>59){
    21         print(minute);
    22         return 0;
    23     }else if(0>second||second>59){
    24         print(second);
    25         return 0;
    26     }
    27     
    28     
    29     if((++second)>59){
    30         second=0;
    31         if((++minute)>59){
    32             minute=0;
    33             if((++hour)>23){
    34                 hour=0;
    35             }
    36         }
    37     }
    38     printf("%d,%d,%d",hour,minute,second);
    39     return 0;
    40 }


    10、(课堂)练习:从键盘输入5个学生的成绩(整数),要求输出总成绩(整数)和平均成绩(小数)

     1 //10、(课堂)练习:从键盘输入5个学生的成绩(整数),要求输出总成绩(整数)和平均成绩(小数)
     2 #include<stdio.h>
     3 
     4 int main(){
     5     
     6     int stu1,stu2,stu3,stu4,stu5;
     7     int sum;
     8     float ave;
     9     scanf("%d %d %d %d %d",&stu1,&stu2,&stu3,&stu4,&stu5);
    10     sum=stu1+stu2+stu3+stu4+stu5;
    11     ave=(float)sum/5;
    12     printf("sum=%d,ave=%f",sum,ave);
    13     return 0;
    14 }


    11、(课堂)读以下程序,猜想输出的结果,再执行程序检验自己的猜想
    #include <stdio.h>
    int main(void)
    {
    double y;
    float a = 2.0;
    int b =6,c=3;
    y = a*b/c-1.5+'A';
    printf("%f ",y);
    return 0;
    }


    12、(课堂)读以下程序,猜想输出的结果,再执行程序检验自己的猜想
    #include <stdio.h>
    int main()
    {
    int i = 8,j = 10,k = 12;
    int m,n,p;

    m = ++i;
    n = j--;
    p = (++m)*(n++)+(--k);
    printf("i=%d,j=%d,k=%d ",i,j,k);
    printf("m=%d,n=%d,p=%d ",m,n,p);
    return 0;
    }


    13、(课堂)设
    int a=3,b=4,c=5,d;
    分别求出下列表达式的d的值(即判断此表达式真假)

    333应该加括号
    1)d = a+b>c && b==c
    2)d = a || b+c && b-c
    3)d = !(a>b) && !c || 1
    4)d = !(x=a)&&(y=b)&&0(x和y均为int型,求出x和y的值)
    5)d = !(a+b)+c-1 && b+c/2


    14、(课堂)输入3个整数,从小到大输出

     1

      #if 0
      14、(课堂)输入3个整数,从小到大输出

      解题思路:
      将所有的项遍历,两两对比所有项。
      #endif

     2 #include<stdio.h>
     3 void jiao(int *a,int *b){
     4     (*a)^=(*b);
     5     (*b)^=(*a);
     6     (*a)^=(*b);
     7 }
     8 
     9 int main(){
    10     int a,b,c;
    11     scanf("%d %d %d",&a,&b,&c);
    12     if(a>b){
    13         jiao(&a,&b);
    14     }
    15     if(a>c){
    16         jiao(&a,&c);
    17     }
    18     if(b>c){
    19         jiao(&b,&c);
    20     }
    21     printf("%d %d %d",a,b,c);
    22     return 0;
    23 }


    15、(课堂)输入3个正整数作为3条线段的长度,判断这3条线段能否构成三角形。构成三角形的条件是:任意两边之和大于第三边

     1 

      #if 0
      15、(课堂)输入3个正整数作为3条线段的长度,判断这3条线段能否构成三角形。
      构成三角形的条件是:任意两边之和大于第三边

    
    

      解题思路:
      对三边长度进行排序
      找到三边中较短的两边,此两边之和大于第三边则可构成第三遍
      #endif

     2 #include<stdio.h>
     3 void jiao(int *a,int *b){
     4     (*a)^=(*b);
     5     (*b)^=(*a);
     6     (*a)^=(*b);
     7 }
     8 
     9 int main(){
    10     int a,b,c;
    11     scanf("%d %d %d",&a,&b,&c);
    12     if(a>b){
    13         jiao(&a,&b);
    14     }
    15     if(a>c){
    16         jiao(&a,&c);
    17     }
    18     if(b>c){
    19         jiao(&b,&c);
    20     }
    21     //printf("%d %d %d",a,b,c);
    22     if((a+b)>c){
    23         printf("%d %d %d 可以构成三角形",a,b,c);
    24     }else{
    25         printf("%d %d %d 不可以构成三角形",a,b,c);
    26     }
    27     return 0;
    28 }

  • 相关阅读:
    火币Huobi API Websocket
    火币Huobi API
    OKEX API(Websocket)
    OKEX API
    Linux下Miniconda量化环境安装
    Numba:高性能Python编译器
    十进制和十六进制互相转换
    JavaScript 原型和原型链
    Redux 进阶之 react-redux 和 redux-thunk 的应用
    Vue 中 $nextTick() 的应用
  • 原文地址:https://www.cnblogs.com/lanbofei/p/9428557.html
Copyright © 2011-2022 走看看