日常刷题 (1)

牛客刷题

1.有关类的说法不正确的是( D  )

A.类是一种用户自定义的数据类型

B类中的成员函数可以存取类中的私有数据

C在类中,如果不作特别说明,所有的数据均为私有类型

D在类中,如果不作特别说明,所有的成员函数均为公有类型

解析:在C++中,类默认的方式时private,不管是继承方式还是成员。

2.在gcc编译器下,针对以下代码,
const char str1[] = "abc";        
const char str2[] = "abc";
const char *p1 = "abc";
const char *p2 = "abc";

那么针对printf("%d %d %d %d\n",str1, str2,p1,p2)的结果, 正确的说法是:输出的前两个数不同,输出的后两个数相同。

解析:前两个是字符数组,定义在栈上,明显地址不同字符串常量定义在静态区,仅有一份拷贝,所以后面两个指针指向的地址相同。(这道题在于数组和指针变量的地址存储区域,回去再研究研究)

3.有以下程序

#include <stdio.h>
#define SQR( X ) X * X
main( )
{
    int a=10, k=2, m=1;
    a / = SQR( k+m )/SQR( k+m );
    printf( "%d\n" ,a );
}

程序运行后的输出结果是1.

解析:这道题的坑在于“/”,表达式写出来之后是k+m*k+m/k+m*k+m。

4.下列程序的运行结果是YY,78,96,请为横线处选择合适的程序(答案是:*a,或者a[])

#include <stdio.h>
#include <string.h>
typedef struct
{
    char name[9];
    float score[2];
}STU;
void f(STU   _______)
{
    STU b={"YY",78,96};
    int i;
    strcpy(a->name,b.name);
    for(i=0;i<2;i++)
        a->score[i]=b.score[i];
}
main()
{
    STU c={"LL",90,80};
    f(&c);
    printf("%s,%.0f,%.0f\n",c.name,c.score[0],c.score[1]);
}

解析:由a->name知a为指针,那么A肯定正确,D说的是数组作为函数的参数会退化成指针,所以D也是正确的。

其中有个选项是&a,错误的原因是变量的引用是别名而不是指针,所以后文肯定不能是a->score[i] ,引用的话后文应该是a.score[i],例程如图:




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值