c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次
【题目名称】
下面代码的结果是:a
#include <stdio.h>
int i;
int main()
{i--; //sizeof'的返回值是无符号整型if (i > sizeof(i)) // i四个字节所以是4。算出的结果类型是unsigned int// 无符号和有符号比较大小 会先把有符号整型转化为无符号。 -1放到内存里补码32个1{printf(">\n");}else{printf("<\n");}return 0;
}
【题目内容】
A. >
B. <
C. 不输出
D. 程序有问题
全局变量会初始化为0
【题目名称】
关于表达式求值说法不正确的是:( d)
【题目内容】
A. 表达式求值先看是否存在整形提升或算术转换,再进行计算
B. 表达式真正计算的时候先看相邻操作符的优先级决定先算谁
C. 相邻操作符的优先级相同的情况下,看操作符的结合性决定计算顺序
D. 只要有了优先级和结合性,表达式就能求出唯一值
【题目名称】
计算求和
【题目内容】
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
//思路 前一项×10+2
int main()
{//有a组成的前n项之和 int a = 0;int n = 0;scanf("%d %d", &a, &n);int i = 0;int sum = 0;int ret = 0;//一项for (i = 0; i < n; i++){//算出一项ret = ret * 10 + a;sum = sum + ret;}printf("%d\n", sum);return 0;
}
【题目名称】
使用指针打印数组内容
【题目内容】
写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整形一维数组。
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int* p = arr;int i = 0;int sz = 0;sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){printf("%d", *(p+i));}//p+i 拿到下表为i的地址 *()拿到元素return 0;
}
【题目名称】
打印水仙花数
【题目内容】
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。
#include <math.h>
int main()
{int i = 0;for (i = 0; i <= 10000; i++){//1计算i的位数 nint n = 1;int tmp = i;while (tmp / 10){n++;tmp = tmp / 10;}//2计算i每一位的n次方之和tmp = i;int sum = 0;while (tmp){sum += pow(tmp % 10, n);tmp =tmp/ 10;}//判断if (sum == i){printf("%d ", i);}}return 0;
}
指针
【题目名称】
下列程序段的输出结果为( c )
unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3; **元素+= 3**
printf(“%d,%d\n”,*pulPtr, *(pulPtr + 3));
【题目内容】
A. 9,12
B. 6,9
C. 6,12
D. 6,10
**unsigned long这个类型 +1直接跳过一个元素 **
【题目名称】
如有以下代码:
struct student
{int num;char name[32];float score;
}stu;
**stu是结构体变量名 拿struct student定义的 **
则下面的叙述不正确的是:( d)
【题目内容】
A. struct 是结构体类型的关键字
B. struct student 是用户定义的结构体类型
C. num, score 都是结构体成员名
D. stu 是用户定义的结构体类型名 变量名
【题目名称】
下面程序的输出结果是:( c )
struct stu
{int num;char name[10];int age;
};void fun(struct stu *p)
{printf(“%s\n”,(*p).name);return;
}int main()
{struct stu students[3] = {{9801,”zhang”,20},{9802,”wang”,19},{9803,”zhao”,18}};fun(students + 1);return 0;
}
【题目内容】
A. zhang
B. zhao
C. wang
D. 18
【题目名称】
结构体访问成员的操作符不包含:( d )
【题目内容】
A. . 操作符
B. -> 操作符
C. * 解引用操作符
D. sizeof
【题目名称】
关于二级指针描述描述正确的是:( b)
【题目内容】
A. 二级指针也是指针,只不过比一级指针更大
B. 二级指针也是指针,是用来保存一级指针的地址
C. 二级指针是用来存放数组的地址
D. 二级指针的大小是4个字节
【题目名称】
下面关于指针运算说法正确的是:(c )
【题目内容】
A. 整形指针+1,向后偏移一个字节
B. 指针-指针得到是指针和指针之间的字节个数 元素个数
C. 整形指针解引用操作访问4个字节
D. 指针不能比较大小
【题目名称】
下面哪个是指针数组:(a )
【题目内容】
A. int* arr[10];
B. int * arr[];
C. int **arr;
D. int (*arr)[10]; //数组指针
【题目名称】
下面程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是( )
#include < stdio.h >
struct S
{ int a;int b;
};
int main( )
{ struct S a, *p=&a;a.a = 99;printf( "%d\n", __________);return 0;
}
【题目内容】
A. a.a
B. p.a **。的优先级高于的优先级**
C. p->a
D. (*p).a
【题目名称】
字符串逆序
【题目内容】
写一个函数,可以逆序一个字符串的内容。
#include <assert.h>
void nixu1(char* str)
{assert(str != NULL);int len = strlen(str);char* left = str;char* right = str+len-1;while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}}int main()
{char arr[] = "abcde";nixu1(arr);printf("%s",arr );return 0;
}
【题目名称】
打印菱形
【题目内容】
用C语言在屏幕上输出以下图案:
分为上下两部分 中间的定义7 用line
int main()
{//上面int line = 0;scanf("%d", &line);int i = 0;for (i = 0; i < line; i++){//第一行//空格int j = 0;for (j = 0; j < line - 1 - i; j++){printf(" ");}//*for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//下面for (i = 0; i < line; i++){//空格int j = 0;for (j = 0; j <= i; j++){printf(" ");}//* 2×几减去1for (j = 0; j < 2 * (line - 1 - i)-1; j++){printf("*");}printf("\n");}
【题目名称】
喝汽水问题
【题目内容】
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。
int main()
{int money = 0;int total = 0;scanf("%d", &money);//有多少钱 每次和汽水的数量是2×钱数减去1if(money>0)total = 2 * money - 1;printf("%d\n", total);return 0;
}
第一种更好
//int main()
//{// int money = 0;
// scanf("%d", &money);//有多少钱
// int total = money;//能喝多少瓶
// int empty = money;
// //开始置换
// while (empty >= 2)
// {// total += empty / 2;
// empty = empty / 2 + empty%2;// 除2是喝了的 模2是剩余的
//
// }
// printf("%d\n", total);
//
//
// return 0;
//}
调试习题
【题目名称】
C程序常见的错误分类不包含:( c)
【题目内容】
A. 编译错误
B. 链接错误
C. 栈溢出 运行时错误
D. 运行时错误
【题目名称】
关于VS调试快捷键说法错误的是:( a)
【题目内容】
A. F5-是开始执行,不调试 开始调试
B. F10-是逐过程调试,遇到函数不进入函数
C. F11-是逐语句调试,可以观察调试的每个细节
D. F9是设置断点和取消断点
【题目名称】
关于Debug和Release的区别说法错误的是:(d )
【题目内容】
A. Debug被称为调试版本,程序调试找bug的版本
B. Release被称为发布版本,测试人员测试的就是Release版本
C. Debug版本包含调试信息,不做优化。
D. Release版本也可以调试,只是往往会优化,程序大小和运行速度上效果最优
【题目名称】
语言中哪一种形式声明了一个指向char类型变量的指针p,p的值不可修改,但p指向的变量值可修改?( c)
【题目内容】
A. const char *p
B. char const *p
C. char*const p
D. const char *const p
【题目名称】
以下关于指针的说法,正确的是( c)
【题目内容】
A. int *const p与int const *p等价
B. const int *p与int *const p等价
C. const int *p与int const *p等价
D. int *p[10]与int (*p)[10]等价 指针数组和数组指针
【题目名称】
调整奇数偶数顺序
【题目内容】
调整数组使奇数全部都位于偶数前面。
题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
void move (int arr[], int sz)
{int left = 0;int right = sz - 1;while (left < right)//因为有这个条件能再往下找{//从前往后找一个偶数while ((left < right)&&(arr[left] % 2 == 1)){left++;}//从后往前找一个奇数while ((left < right)&&(arr[right] % 2 == 0)){right--;}if (left < right) //有这个条件才交换{int tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;}}
}void print(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d",arr[i]);}}
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);move(arr,sz);print(arr, sz);return 0;
}
数据存储
【题目名称】
原码、反码、补码说法错误的是( d )
【题目内容】
A. 一个数的原码是这个数直接转换成二进制
B. 反码是原码的二进制符号位不变,其他位按位取反
C. 补码是反码的二进制加1
D. 原码、反码、补码的最高位是0表示负数,最高位是1表示正数
【题目名称】
程序的执行结果为( )
int main()
{unsigned char a = 200; //0-25500000000000000000000000011001000 200的二进制序列 char类型8个比特位11001000unsigned char b = 100;0000000000000000000000000110010001100100unsigned char c = 0;c = a + b;//这两个相加 两个的大小都没达到整形的大小 所以需要整型提升 无符号为整型提升高位补0000000000000000000000001100100000000000000000000000000011001000000000000000000000000100101100 a+b的结果 存到c存不下只存了8位0010110打印c 0010110 整型提升 无符号高位补0000000000000000000000000010110%d打印是以有符号存的 原码正数原反补相同 10110 等于44100101100 a+b 是300printf(“%d %d”, a+b,c); return 0;
}
【题目内容】
A. 300 300
B. 44 44
C. 300 44
D. 44 300
【题目名称】
unsigned int a= 0x1234; 整形这样放0x 00 00 12 34
unsigned char b=*(unsigned char *)&a;
在32位大端模式处理器上变量b等于(a )
【题目内容】
A. 0x00
B. 0x12
C. 0x34
D. 0x1234
【题目名称】
关于大小端字节序的描述正确的是( b)
【题目内容】
A. 大小端字节序指的是数据在电脑上存储的二进制位顺序 字节
B. 大小端字节序指的是数据在电脑上存储的字节顺序
C. 大端字节序是把数据的高字节内容存放到高地址,低字节内容存放在低地址处
D. 小端字节序是把数据的高字节内容存放到低地址,低字节内容存放在高地址处
【题目名称】
杨辉三角
【题目内容】
在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
……
思路
int main()
{int arr[10][10] = { 0 };int i = 0;int j = 0;for (i = 0; i < 10; i++){for (j = 0; j <= i; j++){if (j == 0){arr[i][j] = 1;}if (i == j){arr[i][j] = 1;}if (i >= 2 && j >= 1){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}}for (i = 0; i < 10; i++){for (j = 0; j <= i; j++){printf("%d", arr[i][j]);}printf("\n");return 0;}
}
【题目名称】
猜凶手
【题目内容】
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
第3题(编程题)
我的解答
int main()
{char killer = 0;for (killer = 'A'; killer <= 'D'; killer++){if ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D') == 3){printf("%c", killer);}}return 0;
}
【题目名称】
猜名次
【题目内容】
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
思路 把一个人说的话 当两个条件判断,有一个是对的就行
先将abcde所有的罗列可能性 再看他们哪一种满足各自所说的一半
假设ABCDE名次1-5名 5个循环嵌套
int main()
{int a = 0;int b = 0;int c = 0;int d = 0;int e = 0;for (a = 1; a <= 5; a++){for (b = 1; b <= 5; b++){for (c = 1; c <= 5; c++){for (d= 1; d <= 5; d++){for (e = 1; e <= 5; e++){if (((b == 2) + (a == 3) == 1)&& ((b == 2) + (e == 4) == 1)&& ((c == 1) + (d == 2) == 1)&& ((c == 5) + (d == 3) == 1)&& ((e == 4) + (a == 1) == 1)){if((a*b*c*d*e)==120)printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);}}}}}}return 0;
}
c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次相关推荐
- C语言基础之操作符详解
C语言基础之操作符详解 操作符的分类 算术操作符 移位操作符 位操作符 逻辑操作符 逗号表达式 表达式求值 隐式类型转换 算术转换 操作符的属性 xwg今天就带各位大佬来了解一波C语言的操作符. 操作 ...
- 【C语言】调整奇数偶数顺序
内容: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分. 解题思路: 一般情况下数组中可能是奇偶交替,而题目中让我们把奇 ...
- C语言最全操作符详解,一文精通所有操作符!
文章目录 前言 一.除号"/" 二."%"除法取余数 三.左移操作符"<<"和右移操作符">>" ...
- 调整奇数偶数顺序(C语言实现)
题目描述: 写一个函数,该函数的功能:调整一个数组中数字的顺序,使得数组中所有的奇数位于所有偶数的前面. 思路: 1. 给定两个下标left和right,left放在数组的起始位置,right放在数组 ...
- 【C语言】sizeof操作符详解
sizeof概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符+.-等:它并不是函数. 作用: 用于计算类型或者变量所占空间的大小(以字节为单位) 那么字节又是什么? 字节(Byte ) ...
- IT企业面试常见逻辑推理题智力题及详解答案(一)
燃绳问题 烧一根不均匀的绳,从头烧到尾总共需要1个小时.现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 解题思路: 烧一根这样的绳,从头烧到尾1个小时.由此可知,头尾同时烧共 ...
- 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...
- C语言:调整奇数偶数顺序
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序 来使得数组中所有的奇数位于数组的前半部分.所有的偶数位于数组的后半部分. 比如现在有数组arr: 1 2 3 4 5 6 思路1:大部分同学第 ...
- IT企业面试常见逻辑推理题智力题及详解答案(二)
舀酒难题 据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒.聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出 ...
最新文章
- Oracle ——概述 Oracle 5 步调优方法论
- 启动马达接线实物图_电工外出接单从事配电柜接线、调试工作的三个要领
- 【静态站点(二)】之 Gridsome 基础
- ASP.NET的IIS映射
- 你有什么办法可以让摄影的模特又高又美?
- 创建maven parent project module project
- E72上安装fring使用skypeout拨打电话
- shell脚本中定义路径变量出现的BUG
- Dubbo入门----搭建一个最简单的Demo框架
- CompositeUI Demo BankBranchWorkbench
- shell基础之99乘法表
- git gui 中文乱码解决方法
- 聚簇索引与非聚簇索引
- matlab rti dds,[译]*RTI_DDS测试
- mysql数据库系统时区_mysql 杂记 —— 时区问题
- win10卸载软件程序
- Py之pyod:pyod的简介、安装、使用方法之详细攻略
- 【经济学_04】晨读:保险的实质 特效药 医疗膨胀 保险的发明
- Google的几个特别搜索功能(转)
- PCB设计交叉选择元件布局
热门文章
- shader之——球形烟雾 CG函数saturate与abs的用法
- VC 判断程序是否启动.
- linux tail 命令查看日志
- 【五分钟会,半小时懂】人声分离Demucs
- Flash小玩意图案创作:增加太阳花图案
- CSS 固定定位 position fixed
- Django2.0异常:Specifying a namespace in include() without providing an app_name is not supported.
- OC门、OD门和推挽输出
- JQuery选择器 点击背景变色、光棒效果、焦点、添加元素
- Android Studio NDK开发