专栏首页奔跑的键盘侠C语言——小学一年级题目解析(四)

C语言——小学一年级题目解析(四)

作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(ID:runningkeyboardhero)

转载请联系授权(微信ID:ctwott)

搬砖继续……

年级只是代表题型,难度不做区分。规则:

一年级:选择题;

二年级:填空题;

三年级:阅读题;

四年级: 编程题。

第14题

概念理解题,stu是结构体的类型名,而括号后面的stutype是变量名。

选项C错误。

第15题

概念理解题,stu1是变量名。引用成员有三种形式:也就是选项中的B、C、D

选项A错误。

想起Python中类和对象的概念,跟这个还是不太一样的,python里面私有成员要通过对象来引用,而公有成员?忘了啥称谓了

可以通过类名引用

第16题

概念题。一个变量x的地址就是该变量的指针,记作&x,课本上的定义。

选A

第17题

*p是指针,取m的地址&m,赋值给p,那指针就指向了m的地址。

选D

第18题

这题考查字符串的初始化,稍微有点难度。

char a[10]="china";

char a[]="china";

上面2个表达形式比较容易理解。对应A选项没问题;

而char *a; a="china";等价于char *a="china",对应C选项也没问题;

选项D,char a[10];然后把字符串赋值给a,a是啥?a相当于&a[0]了,显然不能这么玩。硬要玩就报错:

error: assignment to expression with array type

关于数组,如果初始化时未赋值,后续要赋值需要遍历或者单个单个的赋值,而不能直接a整体赋值。

至于选项B,编译没问题,但是没整明白这个a有啥用,因为p的赋值,并不会使a发生改变。还是coding一下选项B,看看都发生了些什么:

#include <stdio.h>
int main(){  char a[10];  char* p=a;  printf("%p\n",p);  printf("a=%s\n",a);
  p="china";  printf("%p\n",p);  printf("p=%s\n",p);  printf("a=%s\n",a);  return 0;}

==========编译成功后开始运行==========

"C:\Users\2019_943_131.exe"

Process started (PID=192) >>>

0061FF12

a=@

0040506E

p=china

a=@

<<< Process finished (PID=192). (Exit code 0)

================ READY ================

指针p先指向a,然后p被赋值为china,地址发生了变化,即:指向了字符串“china”的首地址,而不是直接a的内容改成了china。a的内容一直没有,输出一个@符号可能是系统随机分配的地址上的内容?还是跟编译器有关?感兴趣的小伙伴可以自己试验一下。

另外字符串赋值char *p; p="china"等价于char *p="china"

然后*p是char类型,而p在这里是字符串类型同时也指向字符串首地址,也就是p的地址值可以用%p输出,如果用%s输出就是字符串了。而int *p则不然,如果要输出指向变量的值必须用*p(%d),如果用p(%d)输出的就是地址的十进制形式。

感觉这是学C以来最绕的一个,剪不断理还乱

第19题

这题紧接着上一题,其实上一题还有个点没说,刚好就又来了。

这题跟上题的B选项差不多,但是while里面有个*p,之前没提及。

*p是char类型,如果要输出字符,要用%c格式,每次只能输出一个。这里是单个字符,也就是ASCII码中对应的0-127共计128个字符。

如果直接用%s输出p,就是直接出来字符串了。清晰起见,再来一段codin

#include <stdio.h>
int main(){  char a[]="language",*p;  p=a;  printf("%s\n",p);  while(*p) printf("%2c",*p++);  printf("\n");  return 0;}

==========编译成功后开始运行==========

"C:\Users\2019_943_39.exe"

Process started (PID=20740) >>>

language

l a n g u a g e

<<< Process finished (PID=20740). (Exit code 0)

================ READY ================

希望对新手能有所启发和加深印象吧

再来说这道题目,while循环,*p是从language首字符开始循环,p++渐进,走lang,到后面的u停止循环。输出的是(*p)-32,也就是小写字母转大写,lang变LANG。

选C。

#include <stdio.h>
int main(){  char a[]="language",*p;  p=a;  while(*p!='u'){    printf("%c",(*p)-32);    p++;  }  printf("\n");  return 0;}

==========编译成功后开始运行==========

"C:\Users\2019_943_39.exe"

Process started (PID=5996) >>>

LANG

<<< Process finished (PID=5996). (Exit code 0)

本文分享自微信公众号 - 奔跑的键盘侠(runningkeyboardhero),作者:我是奔跑的键盘侠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于多线程的应用

    最近在做一点爬虫相关的学习,爬可能比较简单,网上教材一箩筐,今天要掰扯的是关于批量下载的技能。

    Ed_Frey
  • Python——四则表达式(正则表达式的应用)

    依稀记得,n年前按键精灵等级考试时的题目:写一个四则运算的代码。当时其实离六级认证水平还有一定差距,愣是写了半个下午,才把不带括号的加减乘除给做出来(20分的题...

    Ed_Frey
  • C语言——小学一年级题目解析(三)

    另外有一个'\0'需要重点记忆,它是字符串结束的标志位。但是在这个字符串数组里,它是啥??我也不懂

    Ed_Frey
  • JQuery语法:查找+操作

    jquery的基础语法:$(selector).action() 即查找元素.操作 一、查找元素(选择器和筛选器) 1.1 选择器 1.1.1 基本选...

    菲宇
  • AntUI卡片Cards

    爱知汇
  • 「R」持续尝试下载 GitHub 包

    有时候 GitHub 网络莫名奇妙网不好,也可以是本地防火墙什么的有限制,上面的包下载不下来,因此无法安装。这种情况有时候重试几次可能就成功,但每次手动重复真的...

    王诗翔呀
  • vue列表渲染(数组和对象)

    我们知道这个vue是mvvm模型,数据改变,视图层就改变但是通过实例改变app.list[3]="新设置",发现数据改变了视图层无法改变,那么如何保持数据和视图...

    十月梦想
  • 数据清洗&amp;预处理入门完整指南

    数据预处理是建立机器学习模型的第一步(也很可能是最重要的一步),对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效—...

    机器之心
  • 数据清洗预处理入门完整指南

    数据预处理是建立机器学习模型的第一步(也很可能是最重要的一步),对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效—...

    用户2769421
  • 数据清洗&预处理入门完整指南

    数据预处理是建立机器学习模型的第一步(也很可能是最重要的一步),对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效—...

    机器之心

扫码关注云+社区

领取腾讯云代金券