C语言机试编程题

embedded/2025/2/28 17:31:16/

编写版本:vc++2022

1.求最大/小值

#include<stdio.h>
int main(){int a[50],n;int max, min;printf("请输入您要输入几个数");scanf_s("%d", &n);printf("请输入您要比较的%d个数\n",n);for (int i = 0; i<n; i++) {scanf_s("%d", &a[i]);}max = min = a[0];for (int i = 0; i < n; i++) {if (a[i] > max) max = a[i];if (a[i] < min) min = a[i];}printf("max=%d,min=%d", max, min);return 0;
}

2.求一个三位数abc,使a的阶乘+b的阶乘+c的阶乘=abc

#include<stdio.h>
//factorial 阶乘
int jiecheng(int n) {int m=1;while (n != 0) {m *= n;n--;}return m;
}
int main() {int a, b, c;for (int abc = 100; abc <= 999; abc++) {a = abc / 100;b = abc / 10 % 10;c = abc % 10;if (abc == jiecheng(a) + jiecheng(b) + jiecheng(c))printf("%d\n", abc);}return 0;
}

3.求2/1,3/2,5/3,8/5,13/8,21/13,的前20项和

#include<stdio.h>
int main() {float sum = 2;int i = 1, j = 2;float k;for (int num = 1; num < 20; num++) {k = i + j;i = j;sum += k / i;j = k;}printf("%0.2f", sum);return 0;
}

4.求阶乘

#include<stdio.h>
int main() {int N;int jiecheng=1;scanf_s("%d", &N);while (N != 0) {jiecheng *= N;N--;}printf("%d\n", jiecheng);return 0;
}

5.求10-1000之间所有数字之和为5的整数的个数

#include<stdio.h>
int main() {int count = 0;for (int i = 10; i <= 99; i++) {//两位数if (i/10+i%10== 5)count++;}for (int i = 100; i <= 999; i++) {//三位数if ((i/100)+(i/10%10)+(i%10)== 5)count++;}printf("%d\n", count);return 0;
}

6.输入字符串打印除小写,元音,字母之外的。用数组

#include<stdio.h>
int main() {char a[50];scanf_s("%s", a, 50);for (int i = 0; a[i] != '\0'; i++)if (a[i] != 'a' && a[i] != 'e' && a[i] != 'i' && a[i] != 'o' && a[i] != 'u')printf("%c", a[i]);return 0;
}

scanf_s输入字符串时,需要添加长度防止溢出

7.计算输入的10个整数中的,偶数的和,偶数平均值(小数表示)

#include<stdio.h>
int main() {int a[10];int sum=0;double avg;for (int i = 0; i < 10; i++) {scanf_s("%d", &a[i]);if (a[i] % 2 == 0) sum += a[i];}avg = sum / 10.0;printf("偶数的和%d,偶数的平均值%0.2f", sum, avg);return 0;
}

8.循环语句求a+aa+aaa+aaaa……n个a,n和a由键盘输入

#include<stdio.h>
#include<math.h>
int main() {int a, n,m;int sum = 0;scanf_s("%d %d", &a, &n);m = a;for (int i = 1; i <= n; i++) {sum += m;m += a * pow(10, i);}printf("%d", sum);return 0;
}

9.1!+2!+3!+4!……

#include<stdio.h>
int main() {int sum = 0, n,m=1;scanf_s("%d", &n);for (int i = 1; i <= n; i++) {m *= i;sum += m;}printf("%d", sum);return 0;
}

10.求sum=1-1/3+1/5-1/7+   +1/n(1/n<0.0001)

#include<stdio.h>
int main() {float sum = 0;int k=1;for (int i = 1; (1.0 / i) >= 0.0001; i += 2) {sum += (1.0 / i) * k;k = -k;}printf("%0.2f", sum);return 0;
}

11.输入正数判断是否为素数

#include<stdio.h>
int main() {int i,n;scanf_s("%d", &n);//素数:=质数,除了1和它本身之外不能被其他数整除。否则称为合数(1既不是质数也不是合数)if (n == 1) printf("%d不是素数", n);else if (n == 2) printf("%d是素数", n);else {for (i = 2; i < n; i++) {if (n % i == 0) {printf("%d不是素数", n);break;}}if(i>=n) printf("%d是素数", n);}return 0;
}

12.编写一个计算器,可以计算+-*/

#include<stdio.h>
int main() {float a, b;char ch;scanf_s("%f", &a);ch = getchar();scanf_s("%f", &b);switch (ch) {case '+':printf("=%0.2f", a + b); break;case '-':printf("=%0.2f", a - b); break;case '*':printf("=%0.2f", a * b); break;case '/':printf("=%0.2f", a / b); break;}return 0;
}

13.求m,n的最小公倍数

#include<stdio.h>
int main() {//lcm:lowest common multiple 最小公倍数int m, n,min;scanf_s("%d %d", &m, &n);if (m < n) min = m;else min = n;for(int i=min;i<=n*m;i++)if (i % m == 0 && i % n == 0) {printf("最小公倍数:%d", i);break;}return 0;
}

14.对10个数排序

#include<stdio.h>
int quick_one_pass(int a[], int low, int high) {int mid = a[low];while (low < high) {while (low < high && a[high] >= mid) --high;a[low] = a[high];while (low < high && a[low] <= mid) ++low;a[high] = a[low];}a[low] = mid;return low;
}
void quicksort(int a[], int low, int high) {int k;if (low < high) {k = quick_one_pass(a, low, high);quicksort(a, low, k - 1);quicksort(a, k + 1, high);}
}
int main() {//快速排序int a[10] = { 2,6,4,8,1,9,3,5,7,4 };quicksort(a, 0, 9);for (int i = 0; i < 10; i++)printf("%d ", a[i]);return 0;
}

15.36块砖,男人一次可以搬4块,女人:3块,两个小孩:1块。问男,女,小孩各多少人可以一次搬完

#include<stdio.h>
int main() {int man, woman, kid;for (man = 0; man <= 9; man++)for (woman = 0; woman <= 12; woman++)for (kid = 0; kid <= 72; kid++)if (4 * man + 3 * woman + 0.5 * kid == 36)printf("%d,%d,%d\n", man, woman, kid);return 0;
}

16.输入一个字符串,将其正序反序输出

#include<stdio.h>
#include<string.h>
int main() {char array[50];int n=0;//n是数组的长度scanf_s("%s", array, 50);n = strlen(array);for (int i = 0; i < n; i++)printf("%c", array[i]);printf("\n");for(int i=n-1;i>=0;i--)printf("%c", array[i]);return 0;
}

计算字符数组的长度:

#include<string.h>

strlen(array);

17.求一个整数在存储单元中,从右端开始第4到第7位的值

#include<stdio.h>
int main() {unsigned a, b, c;scanf_s("%o", &a);b = a >> 4;//右移四位c = b & 15;//和15按位与,15的二进制编码为1111printf("%o,%d\n%o,%d\n", a, a, c,c);return 0;
}

18.楼梯一共有n级,一次爬1级或2级,有几种不同的路径

#include<stdio.h>
int ClimbStairs(int n) {if (n == 0) return 1;else if (n == 1) return 1;else return ClimbStairs(n - 1) + ClimbStairs(n - 2);
}
int main() {int n;scanf_s("%d", &n);printf("%d", ClimbStairs(n));return 0;
}

19.十六进制转换成十进制

#include<stdio.h>
#include<string.h>
#include<math.h>
int f(char* a);//声明
int main() {char a[30];int n=0,ten=0;gets(a);printf("%d", f(a));return 0;
}
int f(char* a) {int i, c, sum = 0, n;c = strlen(a);for (i = 0; i < c; i++) {if (a[i] >= 'A' && a[i] <= 'Z')a[i] -= 55;if (a[i] >= '0' && a[i] <= '9')a[i] -= '0';}n = c - 1;for (i = 0; i <= c; i++) {sum = sum + a[i] * pow(16, n);n--;}return sum;
}

20.创建链表,头/尾插法插入数据

#include<stdio.h>
#include<stdlib.h>struct Node {int data;struct Node* next;
};//头插法创建链表
struct Node* createList(int arr[], int n) {struct Node* head = NULL;//初始化头节点为nullfor (int i = 0; i < n; i++) {//创建新结点struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = arr[i];newNode->next = head;head = newNode;}return head;
}//尾插法创建链表
struct Node* createList_2(int arr[], int n) {struct Node* head = NULL;struct Node* tail = NULL;for (int i = 0; i < n; i++) {struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = arr[i];newNode->next = NULL;if (head == NULL) {head = newNode;tail = newNode;}else {tail->next = newNode;tail = newNode;}}return head;
}//打印链表
void printList(struct Node* head) {struct Node* temp = head;while (temp != NULL) {printf("%d ->", temp->data);temp = temp->next;}printf("NULL\n");
}int main() {int arr[] = { 1,2,3,4,5 };int n = sizeof(arr) / sizeof(arr[0]);//数组长度//头插法创建链表struct Node* head = createList(arr, n);//打印链表printList(head);//尾插法创建链表struct Node* head_2 = createList_2(arr, n);//打印链表printList(head_2);return 0;
}

21.删除链表中的指定数据


http://www.ppmy.cn/embedded/168842.html

相关文章

Linux LCD驱动开发

一、硬件准备与原理 LCD接口类型 RGB并行接口&#xff1a;需配置时序参数&#xff08;HSYNC/VSYNC/DCLK&#xff09;LVDS&#xff1a;差分信号传输&#xff0c;需设置通道映射MIPI-DSI&#xff1a;高速串行接口&#xff0c;需初始化CMD/VIDEO模式SPI接口&#xff1a;用于小屏驱…

202年充电计划——自学手册 网络安全(黑客技术)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、…

IP-----动态路由OSPF

这只是IP的其中一块内容&#xff0c;IP还有更多内容可以查看IP专栏&#xff0c;前一章内容为GRE和MGRE &#xff0c;可通过以下路径查看IP-------GRE和MGRE-CSDN博客,欢迎指正 注意&#xff01;&#xff01;&#xff01;本部分内容较多所以分成了两部分在下一章 5.动态路由OS…

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡 开发背景 接下来我们直接打开我们的项目开始进一步操作&#xff0c; 实战开发 导入项目 我把得到的项目解压到本地&#xff0c;我们开…

高效与高并发API开发:使用FastAPI与Redis实现请求限制与速率控制

高效与高并发API开发&#xff1a;使用FastAPI与Redis实现请求限制与速率控制 &#x1f4da; 目录 API速率限制的基本概念Redis实现分布式速率限制防止DDoS攻击的常见策略基于IP或用户身份的访问频率控制 1. API速率限制的基本概念 API速率限制&#xff08;Rate Limiting&…

C#上位机--二级运算符

序言 在 C# 编程领域&#xff0c;尤其是针对上位机开发时&#xff0c;二元运算符是构建复杂逻辑和高效代码的基础工具之一。它们通过对两个操作数进行运算&#xff0c;为开发者提供了丰富的数据处理手段。接下来&#xff0c;我们将深入探讨 C# 上位机中的二元运算符&#xff0…

MySQL 性能优化

一、慢 SQL 定位与分析 生产环境的数据库通常承载着高并发、大数据量的业务请求&#xff0c;因此在定位慢 SQL 时需要特别注意对系统性能的影响&#xff0c;避免因监控和分析操作导致数据库性能进一步下降。 1.1 生产环境 1.1.1 慢查询日志&#xff08;Slow Query Log&#…

Linux中子线程会继承父线程对相关变量的可见性

在 Linux 的 POSIX 线程模型中,当父线程修改全局变量后创建子线程,子线程一定会看到修改后的最新值。这是由线程的内存共享机制和线程创建时序保证的,具体原理如下: 关键机制解析 内存共享本质: 所有线程共享相同的全局数据段修改操作直接作用于物理内存,无副本存在cint …