选择题(2道)

第一题:
下面代码的结果是:( )

#include <stdio.h>
int main()
{int arr[] = {1,2,3,4,5};short *p = (short*)arr;int i = 0;for(i=0; i<4; i++){*(p+i) = 0;}for(i=0; i<5; i++){printf("%d ", arr[i]);}return 0;
}

A.1 2 3 4 5
B.0 0 3 4 5
C.0 0 0 0 5
D.1 0 0 0 0

我的答案:C
正确答案:D

解答:
知识点:①小端存储

②sizeof( short ) = 2
10进制:1 2 3 4 5
原先二进制:00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05
结合sizeof( short ) = 2,
得到现在的二进制:00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 05
答案就是:0 0 3 4 5

第二题:
题目名称:
下面代码的结果是:

#include <stdio.h>
int i;
int main()
{i--;if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0;
}

A.>
B.<
C.不输出
D.程序有问题

我的答案:D
正确答案:A

解答:
知识点:① sizeof( ) 的结果是 unsigned int

② 算数转换:long double
double
float
unsigned long int
long int
unsigned int
int
unsigned short
short

③ -1 的补码 11111111
4 的补码 00000100
由于是 unsigned int ,显然,-1 > 4

#include <stdio.h>int i;     // i 是全局变量,全局在没有赋初值的时候,编译器会自动将其赋值为 0
int main()
{i--;   // i = -1if (i > sizeof(i))   //判断 -1 > 4  ???{                    //sizeof() 的结果是 unsigned int printf(">\n");   //所以,要将 i 先转换成 unsigned int ,然后和 -1 进行比较}else{printf("<\n");}return 0;
}

编程题(3道)

第一题:
计算求和
题目内容:
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222

我的答案(运行正确)

知识点:
① double pow (double base , double exponent)

#include <stdio.h>
#include <math.h>int main()
{int i = 0;int sum = 0;for (i = 1; i < 6; i++){int j = 0;int ret = 0;for (j = 0; j < i; j++){ret += 2*pow(10, j);}sum += ret;}printf("%d\n", sum);return 0;
}

提供的答案:

通过观察可以发现,该表达式的第i项中有i个a数字,因此:
假设第i项为temp,则第i+1项为temp*10+a
具体参考以下代码
*/
int main()
{int a = 0;
int n = 0;
int i = 0;
int sum = 0;
int tmp = 0;scanf("%d%d", &a, &n);
for(i=0; i<n; i++)
{tmp = tmp*10+a;
sum += tmp;
}
printf("%d\n", sum);return 0;
}

第二题:
使用指针打印数组内容
写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整型一维数组。
我的答案:

#include <stdio.h>panduan(int* a,int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%5d\n", *a);a = a + 1;}
}int main()
{int arr[] = {0,1,2,3,4,5,6,7,8,9 };int size = sizeof(arr) / sizeof(arr[0]);panduan(arr,size);return 0;
}

视频课程给出的答案:

#include <stdio.h>int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,0 };int size = sizeof(arr)/sizeof(arr[0]);int* p = arr;int* pend = arr + size - 1;while (p < pend){printf("%d\n", *p);p++;}return 0;
}

第三题:
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。

正确解答过程:(我调试了40多分钟)
#include <stdio.h>
#include <math.h>int main()
{int i = 0;for (i = 0; i < 100000; i++){int count = 1;int pb = i;          //一定要将 i 赋值给 变量 pb,因为假设用 i 进行 i/10 运算时while (pb / 10)      //就会将 i 的值改变  {count++;pb /= 10;}double ret = 0;int temp = i;         //一定要将 i 赋值给 变量 temp,while (temp){ret += pow((double)(temp % 10), (double)count);temp = temp / 10;}if ((double)i == ret)    //这里体现了将 i 赋值给变量 pb 和变量 temp 的重要性printf("%d\n", i);}return 0;
}

答案给出的过程:

 此题的关键在于只要知道判断一个数据是否为水仙花数的方式,问题就迎刃而解。假定给定一个数据data,具体检测方式如下:1. 求取data是几位数2. 获取data中每个位置上的数据,并对其进行立方求和3. 对data中每个位上的数据立方求和完成后,在检测其结果是否与data相等即可,相等:则为水仙花数否则:不是具体实现参考以下代码。*/int main(){int i = 0;for(i=0; i<=999999; i++){int count = 1;int tmp = i;int sum = 0;//判断i是否为水仙花数//1. 求判断数字的位数while(tmp/10){count++;tmp = tmp/10;}//2. 计算每一位的次方和tmp = i;while(tmp){sum += pow(tmp%10, count);tmp = tmp/10;}//3. 判断if(sum == i)printf("%d ", i);}return 0;}

C语言错题集 (1) (慢慢来比较快)(将练习过程中的错题整理出来,归纳知识点)相关推荐

  1. 沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇)

    沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇) 7-1 求阶乘序列前N项和 (15分) 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和. 输入格式 ...

  2. 一本好的“错题集”如何做?看这里

    <错题本>制作 每个人肯定都有听说,错题本对高考到底多么多么有用,对我们的复习多么多么有用.但是问题也来了,做错题本好像要用我们很多的时间,可能做完了还空看,那怎么办呢?今天本车从做错题本 ...

  3. C语言易错题集 第四部

    C语言易错题集 第四部 一.位操作相关 二.switch()相关 三.输出相关 四.实数相关 五.指针&a相关 六.指针访问数组元素相关 七.转义字符相关 八.类型提升问题 九.是不是正确的浮 ...

  4. C语言易错题集 第二部

    C语言易错题集后续 一.共用体相关(union) 二.do,while相关 三.char溢出相关 四.printf()相关 五.++相关 六. for语句相关 七.calloc()相关 八.defin ...

  5. C语言练习题的错题集

    @C语言练习题错题集 判断题错题集 1.在对数组全部元素赋初值时,不可以省略行数,但能省略列数. 对于数组来说,列数是不可以省略的,相反的可以省略行数. 2.数组名就是一个指针常量,指向数组的首元素( ...

  6. C语言错题集(指针2020/12/8)

    C语言错题集(指针2020/12/8) 1.关于C语言指针的运算:指针只有加减操作,没有乘除操作.指针可以加常数.减常数:相同类型的指针可以相加.相减.(F) 指针之间可以相减,但不可以相加:两个同一 ...

  7. c语言解三元一次方程组_七年级下学期《8.3 一元一次不等式组》2020年高频易错题集...

    一.选择题(共10小题) 二.填空题(共5小题) 三.解答题(共5小题) 七年级下学期<8.5 一元一次不等式组>2020年高频易错题集 参考答案与试题解析 一.选择题(共10小题) [点 ...

  8. C语言易错题集 第三部

    目录 一.C语言程序exe相关 二.sizeof和strlen相关 三.小端存储相关 四.break和continue相关 五.函数声明相关 六.递归相关 七.预处理相关 八.C语言程序的最小单元相关 ...

  9. php开发错题集,基于PHP技术数学错题集错系统的设计实现

    基于PHP技术的数学错题集错系统的设计与实现 摘要:现代信息技术的快速发展和不断更新,引发了教育教学领域的深刻变革.先进的教育理念鼓励教师把现代信息技术与其它学科课程相整合,鼓励教育技术从" ...

  10. 2020年国考行测错题集(省级)

    15.下列关于电池的说法错误的是: A.干电池利用液态电解液产生电流 B.自行放电是蓄电池不可避免的渐生故障 C.锂电池不会产生铅.汞等有害重金属物质 D.太阳能电池产生的电是直流电 答错选项:C 答 ...

最新文章

  1. 在Corporate Network里配置SAP Cloud Connector连接SAP云平台,需要设置代理
  2. ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...
  3. python 爬虫热搜_Python网络爬虫之爬取微博热搜
  4. linux常用的文件操作命令大全,(办公)记事本_Linux常用的文件操作命令
  5. Kendo UI 模板概述
  6. 百度文库免费复制文字_我们有2种通过鼠标右键复制百度文库的方法要告诉你...
  7. 《算法图解》---笔记
  8. 高速下载百度网盘资料(Tampermonkey+百度网盘直链下载助手+xdown)
  9. android+ios打印机,Android/iOS手机安装HP打印机的详细方法和操作步骤
  10. matlab添加文件夹语音_怎么使用MATLAB导入语音,如果是用MP3录音过的WAV文件又怎么导入?...
  11. Teamcenter 与各种工具软件的集成解决方案
  12. 方寸微 T620 存储安全芯片 安全存储 USB3.0 U盘/移动硬盘
  13. html个性花边代码,十种漂亮的多层花边边框代码
  14. 自创文字小游戏《人类末日·丧尸危机》
  15. Spring Cloud自定义Hystrix请求命令 1
  16. 云表WMS仓储管理系统助力公司业务增长
  17. beats耳机用安卓手机影响音效么_100元以内性价比高无线蓝牙耳机推荐:音质最好的蓝牙耳机排行榜10强...
  18. mysql 从入门到精通之 Linux环境安装mysql数据库
  19. 腾讯搞了一个大新闻,躺枪的竟是百度……辣眼睛
  20. matlab光学仿真——菲涅尔透镜优化代码

热门文章

  1. 3卢比/千瓦时!印度又报史上最低价光伏?
  2. 基于MCRA的语音噪音估计
  3. 趋势造就成功_造就出色软件工程师的素质
  4. Linux命令总结 一
  5. 【渝粤教育】电大中专财务管理与分析 (2)_1作业 题库
  6. 京准发布,医院网络时钟系统(子母钟)日常维护与实施
  7. 封装制作Windows7系统完全攻略
  8. android 时钟进度条,[我的DIY]进度条时钟
  9. 博弈论之:敌不动我不动
  10. 为什么SEO思维比SEO技术更重要?