吉林大学2015年研究生考试软件专硕967

一
//编写一个程序,对输入的任意字符串,统计并输出其中每个英文小写字母在该字符串中出现的次数
思想:此题简单,主要是是输出字符对应的数组的元素值时,需要用到ASCALL
#include
#include
#include
#define N 100

void count(char arr[],int time[])
{
    int i;
    for(i=0;arr[i]!='\0';i++)
    {
        if(arr[i]>='a'&&arr[i]<='z')
        {
            time[arr[i]-97]++;
        }
    }
}
int main()
{
    char arr[N];
    int i,j,time[26];
    for(i=0;i<26;i++)//初始值都是0次
        time[i]=0;
    gets(arr);
    count(arr,time);
    for(i=0;i<26;i++)
    {
        if(time[i]>0)
        {
            printf("%c出现的次数是%d\n",i+97,time[i]);
        }

    }
    return 0;
}

二
//有整数文法的定义如下,编写程序实现,对于给定的任意的串符合上述文法,则输出;若不是,则输出错误
//注解;此题判断给的字符串是否是数字字符,编译原理
思想: 用char类型的数组STR接受字符串,遍历字符串,如不出现出数字外的其他字符,则正确。
#include
#include
#include
#define N 50
int jude(char str[])
{
    int i;
    char s;
    for (i = 0; (s = str[i]) != '\0'; i++)//此部分最好借助字符s
    {
        if (s>'9' || s<'0')
            return 0;
    }
    return 1;
}
int main()
{
    char str[N];
    gets(str);
    if (jude(str))
        puts(str);
    else
        printf("错误\n");
    return 0;
}

第三题;
//螺旋矩阵是证书的一种排列方式。编程实现10X10的螺旋矩阵
//此题对于我来说太难了,看了大神的之后,恍然大悟,如梦初醒。
//可以肯定的是,考试现场的我肯定做不出来
#include
#include
#define M 10
int main()
{
    int A[M][M];
    int i, j, T, n = 1;
    T = M;
    while (T>0)
    {
        //保持行不变,列变。向右顺序加一
        for (j = M - T; j= M - T; j--)
        {
            A[T - 1][j] = n;
            n++;
        }
        //保持列不变,行变。向上顺序加一
        for (i = T - 2; i>M - T; i--)
        {
            A[i][M - T] = n;
            n++;
        }
        //向内缩一圈
        T--;
    }
    for (i = 0; i
#include
#include
#define N 6 //集合元素的总个数
#define M 2 //子集元素的个数
int main()
{
    //定义数组
    int A[N] = {1,2,3,4,5,6};
    //定义二进制数组
    int Bin[N] = { 0 };
    int i,n,j,k;
    //N位的二进制数字,共有2^N个,循环2^N遍,每次 Bin[0]+1
    for (i = 0; i < pow(2, N); i++)
    {
        n = 0;
        Bin[0]++;
        //Bin加一后,整理二进制数组
        for (j = 0; j < N; j++)
        {
            Bin[j + 1] += Bin[j] / 2;
            Bin[j] = Bin[j] % 2;
        }
        //遍历二进制数组,统计二进制数组中值为1的个数
        for (j = 0; j < N; j++)
        {
            if (Bin[j] == 1)
                n++;
        }
        //如果n=M,则达到规定的子集数据元素个数,此时输出
        if (n == M)
        {
            k = 0;//标记位置
            printf("{");
            for (j = 0; j < N; j++)
            {
                if (Bin[j] == 1)
                {
                    if (k == 0)
                    {
                        printf("%d", A[j]);
                        k = 1;
                    }
                    else
                    {
                        printf(",%d", A[j]);
                    }
                }
            }
            printf("} ");
        }
    }
    return 0;
}

附上求一个集合的子集代码
#include
#include
#define len 11
int set[len]={0,1,2,3,4,5,6,7,8,9,10};
int main()
{
    int n,t,i;
    int temp;
    scanf("%d",&n);
    if(n>0&&n

 

你可能感兴趣的:(吉林大学2015年研究生考试软件专硕967)