• 信协第一学期考核


    (普通题一题20分) 共七道题 选做

    题目一:数组(array

    从键盘输入一个长度为N(比如10)的整型数组,第一行输出小于零的数,第二行输出零的个数,第三行输出大于零的数,维持原数组顺序,不进行排序。

     输入描述 :第一行键盘输入 n,第二行输入n个数。

    输出描述:

    第一行输出小于零的数,第二行输出零的个数,第三行输出大于零的数。

    样例输入:

    10

    2  -5  -89  75  0  -89  0  93  48  0

    样例输出:

    -5  -89  -89

    3

    2  75  93  48

     解答:

    #include <stdio.h>
    #include <stdlib.h>
    #define N 15
    int main()
    {
        int n,a[N],i,count=0;
        char c;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<n;i++)
        {
            if(a[i]<0)
            {
                printf("%4d",a[i]);
            }
        }
        printf(" ");
        for(i=0;i<n;i++)
        {
            if(a[i]==0)
            {
                count++;
            }
        }
        printf("%4d ",count);
        for(i=0;i<n;i++)
        {
            if(a[i]>0)
            {
                printf("%4d",a[i]);
            }
        }
    }

    题目二:计算两个整数的最大公约数

    按如下函数原型,采用欧几里德算法编写计算两个整数的最大公约数的函数Gcd()。欧几里德算法,也称辗转相除法。其基本思想是:对正整数ab,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。

    /* 函数功能:计算ab的最大公约数,输入负数时返回-1 */

    int Gcd(int a, int b)

    要求如下:

    1)从键盘任意输入的两整数

         主函数调用Gcd()函数,并输出两整数的最大公约数。

    2Gcd函数原型为:

         int Gcd(int a, int b);

         如果输入的数不是正整数,则返回-1

         否则,返回两个数的最大公约数。

    3**输入提示信息格式要求:"Input a,b: "

           输入两个整数时用,号分隔

         **输出提示信息要求:

         如果输入的数不是正整数,则输出"Input error! "

    否则按如下格式输出"Gcd=%d "

     解答:

    #include<stdio.h>

    void main()

    {

    int a,b,c;

    int gcd(int,int);

    printf("input two integers:");

    scanf("%d%d",&a,&b);

    if(a,b<=0)

        {

            printf("Input error! ");

        }

    c=gcd(a,b);

    printf("Greatest commondivisor is %d ",c);

    }

    int gcd(int x,int y)

    {

    int t;

    while(y)

    {

    t=x%y;

    x=y;

    y=t;

    }

    return x;

    }

    题目三:计算圆的面积。

    要求:

    1)圆的半径r的值为110(包括110)之间的正整数;

    2)用符号常量定义PI3.14

    3)当圆的面积小于50时输出圆的面积并对圆的面积求累加和,

         大于等于50时结束循环;

    4)输出累加和的结果

    5)不用数组编程

    **要求输入提示信息为:无输入提示信息和输入数据

    **要求输出格式为:

    1"area=%.2f "                

    2"sum=%.2f "

     解答:

    #include <stdio.h>
    void main ()
    {
        int r;
      float s;
      float PI=3.14;
      float sum=0;
      for(r=1;r<11;r++)
      {
           s=PI*r*r;
      if(s<50)
      {
          printf("%f",s);
          sum+=s;
      }
      else
      {
          printf("%f",sum);

    break;
      }
      }

      return 0;
    }

    题目四:汉语数字

    输入一个整形数,按汉语习惯输出

    要求

    输入提示信息为:请输入数字:

    提示信息为:汉语为:

    样例:

    请输入数字:1052

    汉语为:一千零五十二

     解答:

    # include <stdio.h>
    # include <string.h>

    void ChangeType1(char * px, char * pn, char * pw, int len);


    int main(void)
    {
    char x[100];
    char num[10][] = {'零','一','二','三','四','五','六','七','八','九'};
    char wei[4][] = {'','十','百','千'};
    char danwei[3][] = {'','万','亿'};
    int len;
    int lx;
    char * pn = num, * pn2 = num2, * px = x, * pw = wei, * pw2 = wei2, * pdw = danwei

    printf("请输入数字:");
    lx=strlen(x);
    for(i=0;i<lx;i++)
    x[i]=x[i]-'0';
    for(i=0;i<lx;i++)
    {
    d=lx-i;
    puts(num2[x[i]]);
    if(d==2||d==6||d==10)
    puts(wei[0]);
    if(d==3||d==7||d==11)
    puts(wei[1]);
    if(d==4||d==8||d==12)
    puts(wei[2]);
    if(d==5)
    puts(danwei[0]);
    if(d==9)
    puts(danwei[1])
    }??????

    题目五:统计师的难题

    一天统计师小明收到上司的一大串文字,让小明找出其中的数字,英文和其他

    内容(空格与其他字符)的个数,请你写程序帮助小明解决这个问题。

    输入

    输入可能有多组测试用例,每个用例包含一行字符。

    输出

    每个用例包括 3 个整数,分别代表英文个数、 数字个数、其他内容个数,整数间以空格分隔。

    样例输入

    adfawef12345 *&

    AFSAF587

    样例输出

    7 5 3

    5 3 0

    解答:

    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[])
    {
     int n=0,i;;
     printf("请输入行数:");
     scanf("%d",&n);
     char** s;
     s=(char**)malloc(sizeof(char*)*n);
     for(i=0;i<n;i++)
     {
      s[i]=(char*)malloc(sizeof(char)*128);
     }
     for(i=0;i<n;i++)
     {
      scanf("%s",s[i]);
     }
     for(i=0;i<n;i++)
     {
      int len=strlen(s[i]);
      int j,alpha=0,digit=0,other=0;
      for(j=0;j<len;j++)
      {
       if(s[i][j]>='0' && s[i][j]<='9')
       {
        digit++;
       }
       else if((s[i][j]>='A' && s[i][j]<='Z') || (s[i][j]>='a' && s[i][j]<='z'))
       {
        alpha++;
       }
       else
       {
        other++;
       }
      }
      printf("%d %d %d ",alpha,digit,other);
     }
     return 0;
    }

    题目六:人民币

    100元人民币兑换10,5元和1元的纸币(每一种都要有)50,请用穷举法编程计算共有几种兑换方案,每种方案各兑换多少张纸币.     

    ****输入提示信息要求为:无

    ****输出格式要求为:

    "x = %d, y = %d, z = %d "

    "count = %d "

     解答:

    #include <stdio.h>

    int main ()

    {

       int x,y,z,count=0;

       for(x=0;x<=5;x++)

       {

           for(y=1;y<11;y++)

           {

               z=50-x-y;

               if(10*x+5*y+z==100);

               {

                   count++;

                   printf("x=%d,y=%d,z=%d ",x,y,z);

               }

           }

    题目七:素性检测

    从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"It is a prime number"。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出"It is a prime number"。

    输入提示信息:"Input m:"

    输入格式:"%d"

    输出格式:

    是素数时输出"It is a prime number "

    否则输出用"%d = ","%d * "

    运行示例1:

    Input m:90↙

    90 = 2 * 3 * 3 * 5

    运行示例2:

    Input m:13↙

    It is a prime number

     解答:

    #include <stdio.h>
    #include <stdlib.h>

    void main()
    {
        int a,b,i,f[10]={0},t=0,flag=1;
        scanf("%d",&a);
        b=a;
        for(i=2;i<a;)
        {
            if(b%i==0)
            {
                f[t]=i;
                b/=i;
                t++;
                flag=0;
            }
            else
            {
                i++;
            }
        }
        if(flag)
        {
            printf("It is a prime number");
        }
        else
        {
            printf("%d = ",a);
            for(t=1;f[t]!=0;t++)
            {
                printf("%2d *",f[t-1]);
            }
            printf("%2d",f[t-1]);
        }
    }

    题目八:正弦

    已知求正弦sin(x)的近似值的多项式公式为:

    sin(x)=x−x 3  3!  +x 5  5!  −x 7  7!  +⋯+(−1) n x 2n+1  (2n+1)!  +…

    要求输入xe,按上述公式计算sin(x)的近似值,要求计算的误差小于给定的e

    **输入格式要求:"%f%f" 提示信息:"Enter x & eps:"

    **输出格式要求:"sin(%f)=%f "  "%d,sin(%f)=%f "

    程序运行示例如下:

    Enter x & eps:5 0.000001

    sin(5.000000)=-0.958924

    13,sin(5.000000)=-0.958924

    (提高题部分一题40分)共3题 选做

    提高题一:堆栈

    堆栈是数据结构中的重要线性结构,最先进入栈中的元素最后才能出栈,现在

    给出三种操作指令(进栈,出栈,查询栈中中位数),请你根据指令输出当前

    操作的是哪个值,其中如果栈中数量为偶数,中位数定义为其中较小的元素,

    比如栈中元素自底向上为 3 1 4 2,那么中位数为 2

    输入

    第一行输入给出所输入指令的总条数 N<1000,随后 N 行给出每个指令:

    Push k 代表将 k 入栈, k 为小于 500 的正整数, Pop 代表出栈, Find 代表查

    询栈中中位数。

    输出

    针对每个输入的指令,如果是 Pop Find 操作则输出相应操作的元素。指令

    非法则输出“Error”

    样例输入

    12

    Pop

    Find

    Push 3

    Find

    Push 2

    Find

    Push 1

    Find

    Pop

    Pop

    Pop

    Pop

    样例输出

    Error

    Error

    3 2 2 1 2 3

    Error

    提高题二:结构体
    定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院系,要求在随意输入5个学生的相关信息后,按照学号从小到大顺序输出这些学生的信息。 
    输入:
    先输入5名学生的信息,按学号顺序排序输出后在输入要统计的院系名称 
    输出
    先按学号从小到大的顺序输出学生信息 
    样例输入
    zhang3 20149003 M 信息系 
    zhang5 20149005 F 信息系 
    zhang10 20149010 F 管理系 
    zhang1 20149001 M 会计系 
    zhang9 20149009 M 会计系 
    样例输出
    zhang1 20149001 M 会计系 
    zhang3 20149003 M 信息系 
    zhang5 20149005 F 信息系 
    zhang9 20149009 M 会计系 
    zhang10 20149010 F 管理系 

    提高题三:字符串插入

    通过指针实现字符串插入的功能,一个字符串插入到另一个字符串的任意位置要求将源字符串srcStr连接到目的字符串dstStr任意位置

    输入:

    字符串srcStrabc

    字符串dstStrhahaha

    插入dstStr的第几位:3

    输出:

    结果为:hahabcaha

  • 相关阅读:
    MySQL 基本字段类型
    《将博客搬至CSDN》
    【转载·收藏】 html5手机网站自适应需要加的meta标签
    SQL LIKE操作符 Thinkphp
    Thinkphp判断值是否为空
    Thinkphp重复字段过滤
    Thinkphp框架删除确认对话框
    PHP微信公众平台开发高级篇——群发接口(慕课网学习笔记)
    通过当前cateid来判断切换tab
    js获取当前页面的url中id
  • 原文地址:https://www.cnblogs.com/ln-0407/p/8053878.html
Copyright © 2020-2023  润新知