回调函数刷题记录:

回调函数


1. 下面test函数设计正确的是:

在这里插入图片描述

char* arr[5] = {"hello", "bit"};
test(arr);

A.void test(char* arr);
B.void test(char** arr);//选择
C.void test(char arr[5]);
D.void test(char* arr[5]);

下面代码中print_arr函数参数设计哪个是正确的

在这里插入图片描述

int arr[3][5] = {1,2,3,4,5,6,7,8,9,10};
print_arr(arr, 3, 5);
//可省略行,但不可省略列
A.void print_arr(int arr[][],int row, int col);
B.void print_arr(int* arr, int row, int col);
C.void print_arr(int (*arr)[5], int row, int col);//选择
D.void print_arr(int (*arr)[3], int row, int col);

下面程序的结果是:

在这里插入图片描述

int main()
{
  int a[5] = {5, 4, 3, 2, 1};
  int *ptr = (int *)(&a + 1);//&a -- int(*)[5]
  printf( "%d,%d", *(a + 1), *(ptr - 1));//4,1
  return 0;
}

2. 三角形判断

描述

KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

输入描述:

题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。

输出描述:

针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。

int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    while (scanf("%d %d %d", &a, &b, &c) == 3)
    {
        if (a + b > c && a + c > b && b + c > a)
        {
            if (a == b && b == c)
                printf("Equilateral triangle!\n");
            else if ((a == b && b != c) || (a == c && a != b) || (b == c && b != a))
                printf("Isosceles triangle!\n");
            else
                printf("Ordinary triangle!\n");
        }
        else
            printf("Not a triangle!\n");
    }
    return 0;
}

3. 竞选社长

描述

假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长.

输入描述:

一行,字符序列,包含A或B,输入以字符0结束。

输出描述:

一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。

竞选社长1

int main()
 {
    int ch=0;
    int countA=0;
    int countB=0;

    while ((ch=getchar())!='0') 
    { 
        if(ch=='A')
        countA++;
        else if(ch=='B')
        countB++;
    }
    if(countA>countB)
     printf("A\n");
     else if(countA<countB)
     printf("B\n");
     else
     printf("E\n");
    return 0;
}

竞选社长2

int main()
{
    int ch = 0;
    int count = 0;
    //A++
    //B--
    while ((ch = getchar()) != '0')
    {
        if (ch == 'A')
            count++;
        else if (ch == 'B')
            count--;
    }
    if (count>0)
        printf("A\n");
    else if (count<0)
        printf("B\n");
    else
        printf("E\n");
    return 0;
}

4. 公务员面试

描述

公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。

(注:本题有多组输入)

输入描述:

每一行,输入7个整数(0~100),代表7个成绩,用空格分隔。

输出描述:

每一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。

面试1

int main()
{
    int arr[7] = { 0 };
    while (scanf("%d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6]) == 7)
    {
        int i = 0;
        int max = 0;
        int min = 100;
        int sum = 0;
        for (i = 0; i < 7; i++)
        {
            if (arr[i] > max)
                max = arr[i];
            if (arr[i] < min)
                min = arr[i];
            sum += arr[i];
        }
        printf("%.2lf\n", (sum - max - min) / 5.0);
    }
    return 0;
}

面试2

int main()
{
	int num = 0;
	int i = 0;
	int max = 0;
	int min = 100;
	int sum = 0;
	int n = 0;
	while (scanf("%d", &num) == 1)
	{
		if (num > max)
			max = num;
		if (num < min)
			min = num;
		sum += num;
		n++;
		if (n == 7)
		{
			printf("%.2lf\n", (sum - max - min) / 5.0);
			max = 0;
			min = 100;
			sum = 0;
			n = 0;
		}
	}
	return 0;
}

5. HTTP状态码

描述

KiKi访问网站,得到HTTP状态码,但他不知道什么含义,BoBo老师告诉他常见HTTP状态码:200(OK,请求已成功),202(Accepted,服务器已接受请求,但尚未处理。)400(Bad Request,请求参数有误),403(Forbidden,被禁止),404(Not Found,请求失败),500(Internal Server Error,服务器内部错误),502(Bad Gateway,错误网关)。

输入描述:

多组输入,一行,一个整数(100~600),表示HTTP状态码。

输出描述:

针对每组输入的HTTP状态,输出该状态码对应的含义,具体对应如下:
200-OK
202-Accepted
400-Bad Request
403-Forbidden
404-Not Found
500-Internal Server Error
502-Bad Gateway

int main()
{
    int Status = 0;
    while (scanf("%d", &Status) == 1)
    {
        switch (Status)
        {
        case 200:
            printf("OK\n");
            break;
        case 202:
            printf("Accepted\n");
            break;
        case 400:
            printf("Bad Request\n");
            break;
        case 403:
            printf("Forbidden\n");
            break;
        case 404:
            printf("Not Found\n");
            break;
        case 500:
            printf("Internal Server Error\n");
            break;
        case 502:
            printf("Bad Gateway\n");
            break;
        }
    }
    return 0;
}

6. scanf返回值

对scanf返回值的写法讲解。

研究printf的返回值。

//EOF - end of file
    //scanf读取数据,如果读到了数据,返回的是实际读到数据的个数
    //如果没有读到数据,说明读取失败,返回的是EOF(-1)

    int a=0;
    int b=0;
    // int ret=scanf("%d",&a);
    // printf("ret=%d\n",ret);
    while(scanf("%d %d",&a,&b)==2)
    {
//读取到2个数字,scanf返回的是2
    }
    while(scanf("%d %d",&a,&b)!=EOF)
    {
//读取到2个数字,scanf返回的是2
//读取到1个数字,scanf返回的是1
    }
     while(~scanf("%d %d",&a,&b))
    {
//scanf读取失败的时候返回的是EOF,也就是-1
//-1的补码是
//11111111 11111111 11111111 11111111
//当对scanf的返回值~(按位取反的时候)得到的是0
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值