五道选择题:

1、以下 scanf 函数调用选项中, 错误的是( )

struct T
{
char name[20];
int age;
int sex;
} a[5], *pa=a;

A、scanf("%s",a[0].name);

B、scanf("%d", &pa[0].age);

C、scanf("%d",&(pa->age));

D、scanf("%d", pa->age);

2、关于指针下列说法正确的是【多选】( )
A、 任何指针都可以转化为void * B、 void *可以转化为任何指针
C、 指针的大小为8个字节           D、 指针虽然高效、灵活但可能不安全

3、请指出以下程序的错误【多选】( )

void GetMemory(char** p, int num)
{
    if (NULL == p && num <= 0)//1
        return;
    *p = (char*)malloc(num);
    return;
}
int main()
{
    char* str = NULL;
    GetMemory(&str, 80); //2
    if (NULL != str)
    {
        strcpy(&str, "hello"); //3
        printf(str); //4
    } 
    return 0;
} 

A、1      B、2      C、3     D、4

4、下面这个程序执行后会有什么错误或者效果【多选】( )

#define MAX 255
int main()
{
unsigned char A[MAX], i;
for(i = 0; i <= MAX; i++)
A[i] = i;
return 0;
}

A、 数组越界 B、 死循环 C、 栈溢出 D、 内存泄露

5、请问下列程序的输出是多少( )

#include<stdio.h>
int main()
{
    unsigned char i = 7;
    int j = 0;
    for (; i > 0; i -= 3)
    {
        ++j;
    }
    printf("%d\n", j);
    return 0;
}

A、2     B、死循环    C、173    D、172

c语言每日一练(9)-LMLPHP

编程题1:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

c语言每日一练(9)-LMLPHP

#include<stdio.h>
#include<stdlib.h>
int* masterMind(char* solution, char* guess, int* returnSize) {
    *returnSize = 2;
    //初始化返回的数组,因为我们仅仅只需要返回猜中次数和伪猜中次数,所以必定为2
    int* order = (int*)malloc(sizeof(int) * 2);
    //创建返回数组
    int i = 0; int j = 0;
    int count_true = 0;//猜中次数计数
    int count_false = 0;//伪猜中次数计数
    for (i = 0; i < 4; i++)
        //一共四个槽,所以solution和guess的数组大小都为4
    {
        if (solution[i] == guess[i])
        {
            count_true++;
            solution[i] = -1;
            guess[i] = -1;
            //由于猜中的槽,伪猜中的不能重复,所以置为-1,用来判定
        }
    }
        for (i = 0; i < 4; i++)
        {
            if (solution[i] == -1)
            {
                continue;
            }
            for (j = 0; j < 4; j++)
            {
                if (guess[j] == -1)
                {
                    continue;
                }
                if (solution[i] == guess[j])
                {
                    count_false++;
                    solution[i] = -1;
                    guess[j] = -1;
                }
            }
        }
        order[0] = count_true;
        //存放猜中次数
        order[1] = count_false;
        //存放伪猜中次数
        return order;
        //返回目标
    }

编程题2:

 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

c语言每日一练(9)-LMLPHP 

int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
    *returnSize = 2;
    //只用返回两个数,所以数组大小必定为2
    int* order = (int*)malloc(sizeof(int) * 2);
    //创建一个符合条件的数组
    int i = 0; int j = 0;
    for (i = 0; i < numsSize; i++)
    {
          for(j=i+1;j<numsSize;j++)
        {   //减少循环次数
            if (nums[i] + nums[j] == target)
                //找到目标,直接储存并返回
            {
                order[0] = i;
                order[1] = j;
                return order;
            }
        }
    }
    return NULL;//找不到返回空
}

  好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O

08-18 10:07