zoukankan      html  css  js  c++  java
  • 有关C++程序设计基础的各种考题解答参考汇总

    早先年考研的主考科目正是【算法与数据结构】,复习得还算可以。也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考。


    【1】

    原题目地址:https://zhidao.baidu.com/question/1574956570322831900.html?entry=qb_uhome_tag

    题目:
    C语言的题目,求大神来看看
    小学生算术学习系统。不断的从键盘输入两个整数级一个运算符(+-*/)之一,并输入计算结果。若计算结果正确,则显示“很好,做对了。”负责献世“做错了,再做一次“。系统规定,只能输入三次答案。当第三次输入答案任然错误时,系统将显示正确答案。本系统要求有”是否继续”的提示,用户输入“y”,表示继续,输入“n”表示结束

    答:

    #include <stdio.h>
    #include <time.h>
    #include <windows.h>
    #include <stdlib.h>
     
    int main()
    {
        int a,b,Suan;
        int sum;       //用户输入答案
        int C;         //正确答案
        int D;         //正确余数
        int yu = 0;          //输入的余数
        int t = 0;           //开关变量(求余数)
        int i = 3;
        int temp = NULL;
        char Insert = NULL;
        srand(time(NULL));
     
    Q:   a = rand()%100;
         b = rand()%100;
        Suan = rand()%100;
        t = 0;
        if(Suan <=25)
        {
            C = a+b;
            printf("%d+%d=? :
    ",a,b);
            temp = 1;
            D = 0;
            yu = 0;
        }
        else if(Suan > 26 && Suan <= 50)
        {
            C = a-b;
            printf("%d-%d=? :
    ",a,b);
            temp = 2;
            D = 0;
            yu = 0;
        }
         else if(Suan > 50 && Suan <= 75)
        {
            C = a*b;
            printf("%d*%d=? :
    ",a,b);
            temp = 3;
            D = 0;
            yu = 0;
        }
        else if(Suan > 75 && Suan <= 100)
        {
            C = a/b;
            D = a%b;
            t = 1;
            printf("%d/%d=? (商):
    ",a,b);
            temp = 4;
        }
    A:   if(5 == temp)
         {
            printf("%d+%d=? :
    ",a,b);
         }
         if(6 == temp)
         {
            printf("%d-%d=? :
    ",a,b);
         }
         if(7 == temp)
         {
            printf("%d*%d=? :
    ",a,b);
         }
         if(8 == temp)
         {
            printf("%d/%d=? (商):
    ",a,b);
         }
     
         if(temp <= 4)
        {
            temp++;
            temp++;
            temp++;
            temp++;
         }
     
         scanf("%d",&sum);
         if(t == 1)
         {
            printf("余数多少:");
            scanf("%d",&yu);
         }
     
        printf("
    ---------------------
    ");
     
         
         if(C == sum && D == yu)
                printf("很好,做对了。
    ");
         else
         {
             if(1 != i)
             {
                printf("做错了,再做一次!(你还有%d次机会)
    ",i-1);
                i--;
                goto A;
            }
             else
             {
                 if(t == 0)
                    printf("做错了!正确答案是 %d!
    ",C);
                 else
                 {
                    printf("做错了!正确答案(商)是 %d!
    ",C);
                    printf("(余数)是 %d!
    ",D);
                 }
                //i = 3;
            }
             
         }
         i = 3; 
            printf("-----------------------------------------------
    ");
             printf("是否继续<y/n>:
    ");
     
    P:       scanf("%c",&Insert);
            if('y' == Insert)
                goto Q;
            if('n' == Insert)
                exit(-1);
            else
            {
                Insert = NULL;
                goto P;
            }
     
         system("pause");
         return 0;
    }
    

    【2】

    原题目地址:https://zhidao.baidu.com/question/1495135027232307579.html?entry=qb_uhome_tag

    题目:
    求解c语言指针问题

    #include<stdio.h>
    #include<conio.h>
    #define N 2
    #define M 4
    
    double *calculate1(double (*p)[M], double *p1) { 
      int i, j; 
      double s=0; 
      for (j=0; j<M; j++) { 
        for (i=0; i<N; i++) { 
          s+=*(*p+j); 
          p++;
        } 
        for (i=0; i<N; i++) p--; 
        *(p1+j)=s; 
        s=0;
      } 
      p1=p1-M; 
      return p1;
    }
    void main() { 
      int m; 
      double score[N][M]={0, 1, 2, 3, 4, 5, 6, 7}, sbj[M], (*p)[M]=score, *p1=sbj; 
      p1=calculate1(p, p1); 
      for (m=0; m<M; m++) printf("
    第%d科总分为%.1lf
    ", m+1, *(p1+m));
    }
    
    

    score[N][M]表示N个学生的M门科目的成绩,算出各科的总分
    为什么结果是这样
    image

    答:

    #include<stdio.h>
    #include<conio.h>
    #include <windows.h>
    #define N 2
    #define M 4
    void calculate(double (*p)[M],double *p1)
    {
        int i,j;
        double s=0;
        /*for(i=0;i<N;i++)
        {
            for(j=0;j<M;j++)
            {
                printf("%f	",*(*(p+i)+j));
            }
            putchar(10);
        }*/
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                //printf("%f	",*(*(p+j)+i));
                s+=*(*(p+j)+i);
            }
            *(p1+i)=s;
            s=0;
        }
        return;
    }
    int main()
    {
        int m;
        double score[N][M]={0,1,2,3,4,5,6,7},sbj[M],
            (*p)[M]=score,*p1=sbj;
        calculate(p,p1);
        for(m=0;m<M;m++)
            printf("
    第%d科总分为%.1lf
    ",m+1,*(p1+m));
     
        system("pause");
        return 0;
    }
    

    我读不懂你的程序,很多都不需要的。你可以参照我写的!有问题可以追问!

    【3】

    原题目地址:https://zhidao.baidu.com/question/1895405030720891420.html?entry=qb_uhome_tag

    题目:
    求C语言大神助攻解决这几道问题
    image
    image

    答:

    
    /*******/
    /***1***/
    /*******/
    #include<stdio.h>
    #include <windows.h>
     
    int Judge(char a[],char b[])
    {
        int i,j;
        for(i=0,j=0; a[i]!='' ; i++,j++)
        {
            if(a[i] == b[j])
                continue;
            if(a[i] > b[j])
                return 1;
            if(a[i] < b[j])
                return -1;
        }
        return 0;
    }
     
    int main()
    {
        int m = NULL;
        char str1[5] = "abc";
        char str2[5] = "abb";
        puts(str1);
        putchar(10);
        puts(str2);
        m = Judge(str1,str2);
     
        if(m == 1)
            printf("[>]
    ");
        else if(m == -1)
            printf("[<]
    ");
        else
            printf("[=]
    ");
     
        system("pause");
        return 0;
    }
     
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
     
    /*******/
    /***2***/
    /*******/
     
    #include<stdio.h>
    #include <windows.h>
     
    int main()
    {
     
        float sum = 1.0;
        int ss;
        int s=1,s1=1;
        printf("sum=1/1");
        while(1.0/s >= 1e-6)
        {
            sum += 1.0/s;
        printf(" +1/%d",s);
            ss = s1;
            s1 = s;
            s += ss;
             
        }
        sum += 1.0/s;
        printf(" +1/%d",s);
        printf(" = %f
    ",sum);
     
        system("pause");
        return 0;
    }
     
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
     
    /*******/
    /***3***/
    /*******/
     
    #include<stdio.h>
    #include <windows.h>
     
    void Func(int a[][4])
    {
        int i,j,t = 0;
        for(i=0; i<4; i++)
        {
            for(j=0; j<4; j++)
            {
                if(a[j][i] > 0)
                    t++;
            }
            if(t>=1)
            {
                printf("%d
    ",i);
                t = 0;
            }
        }
        return;
    }
     
    int main()
    {
        int a[4][4];
        int i,j;
        for(i=0; i<4; i++)
            for(j=0; j<4; j++)
                scanf("%d",&a[i][j]);
         
        for(i=0; i<4; i++)
        {
            for(j=0; j<4; j++)
                printf("%d	",a[i][j]);
            putchar(10);
        }
     
        putchar(10);
        Func(a);
     
        system("pause");
        return 0;
    }
     
    /*******/
    /***4***/
    /*******/
     
    #include <stdio.h>
    #include <windows.h>
     
    void Connect(char a[],char b[],char c[])
    {
        int i,j;
        for(i=0; a[i]!=''; i++)
            c[i] = a[i];
        for(j=0; b[j]!=''; j++)
            c[i++] = b[j];
        c[i]='';
        return;
    }
     
    int main()
    {
        int m = NULL;
        char str1[5] = "abc";
        char str2[10] = "bcde";
        char str3[20];
        printf("str1=");
        puts(str1);
        putchar(10);
        printf("str2=");
        puts(str2);
        putchar(10);
        Connect(str1,str2,str3);
        printf("str3=");
        puts(str3);
     
        system("pause");
        return 0;
    }
     
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
     
    /*******/
    /***5***/
    /*******/
     
    #include<stdio.h>
    #include <windows.h>
     
    int main()
    {
        int i;
        float sum=0;
        double f1=1.0,f2=1.0,t;
        printf("sum=");
        while(sum<=100.0)
        {
            sum += f1/f2;
            printf(" +%f/%f",f1,f2);
            t=f2;
            f2=f2+f1;
            f1=t;
        }
        printf("= %.2f
    ",sum);
     
        system("pause");
        return 0;
    }
     
    ////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////
     
    /*******/
    /***6***/
    /*******/
     
    #include<stdio.h>
    #include <windows.h>
     
    void Func(int a[][4])
    {
        int i,j,t = 0;
        for(i=0; i<4; i++)
        {
            for(j=0; j<4; j++)
            {
                if(a[i][j] > 0)
                    t++;
            }
            if(t>=1)
            {
                printf("%d
    ",i);
                t = 0;
            }
        }
        return;
    }
     
    int main()
    {
        int a[4][4];
        int i,j;
        for(i=0; i<4; i++)
            for(j=0; j<4; j++)
                scanf("%d",&a[i][j]);
         
        for(i=0; i<4; i++)
        {
            for(j=0; j<4; j++)
                printf("%d	",a[i][j]);
            putchar(10);
        }
     
        putchar(10);
        Func(a);
     
        system("pause");
        return 0;
    }
    

    请你叫我雷锋,帮你做了这么多题!有问题欢迎追问!
    (哈哈,当时心情肯定不错,帮忙做了那么多题目,啊哈哈~)

  • 相关阅读:
    快速排序
    冒泡排序
    mysql 拷贝表插入新的表
    http协议
    nginx错误日志error_log日志级别
    MySQL数据库远程访问的权限
    mysql create database 指定utf-8编码
    MYSQL日志
    linux常用命令
    java学习--基础知识进阶第六天--集合&迭代器、增强for & 泛型、常见数据结构、List子体系
  • 原文地址:https://www.cnblogs.com/sharpeye/p/15354034.html
Copyright © 2011-2022 走看看