五道选择题:
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
编程题1:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
#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)官网 - 全球极客挚爱的技术成长平台
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