C语言机试编程题

news/2025/3/6 2:56:57/

编写版本:vc++2022

目录

1.求最大/小值

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

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

4.求阶乘

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

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

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

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

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

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

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

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

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

14.对10个数排序

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

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

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

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

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

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

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

22.三个整数a,b,c,其中a?b=c,?代表一个运算符。请判断?代表的是哪种运算符(+-*/%),并输出该运算符。如果输入的数据无法通过四则运算得到c,则输出“No valid operation”

23.一元钱一瓶汽水,两个空瓶换一瓶汽水。问有n元钱,最多能和几瓶汽水【用递归】

24.创建一个链表,键盘输入链表内容,最后输出链表内容


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.删除链表中的指定数据

#include<stdio.h>
#include<stdlib.h>
struct Node {int data;struct Node* next;
};
//尾插法创建链表
struct Node* createList(int a[], 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 = a[i];newNode->next = NULL;if (head == NULL) {head = newNode;tail = newNode;}else {tail->next = newNode;tail=newNode;}}return head;
}
void deleteList(struct Node* head,int x) {struct Node* p = head;struct Node* q = p->next;//处理头节点的情况while (p->data == x && p != NULL) {struct Node* temp = p;p = p->next;free(temp);}head = p;//更新头节点//处理其他节点while (p != NULL && p->next != NULL) {q = p->next;if (q->data == x) {p->next = q->next;free(q);}else p = p->next;}
}
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 a[] = { 1,2,3,4,3 };int x;int n = sizeof(a) / sizeof(a[0]);struct Node* head = createList(a, n);//创建链表printList(head);//打印链表printf("请输入要删除的数据的值:");scanf_s("%d", &x);deleteList(head,x);//删除链表中的指定数据printList(head);//打印链表return 0;
}

22.三个整数a,b,c,其中a?b=c,?代表一个运算符。请判断?代表的是哪种运算符(+-*/%),并输出该运算符。如果输入的数据无法通过四则运算得到c,则输出“No valid operation”

#include<stdio.h>
int main() {int a=3, b=2, c=1;int n = 1;if (a + b == c) {printf("+ "); n = 0;}if (a - b == c) {printf("- "); n = 0;}if (a * b == c) { printf("* "); n = 0; }if (b!=0 && a / b == c && a%b==0) { printf("/ "); n = 0; }if (b!=0 && a % b == c) { printf("%% "); n = 0; }if(n==1) printf("No valid operation");return 0;
}

23.一元钱一瓶汽水,两个空瓶换一瓶汽水。问有n元钱,最多能和几瓶汽水【用递归】

#include<stdio.h>
int water(int n) {if (n == 1) return 1;else if (n % 2 == 0) return n + water(n / 2);//n是偶数else return n + 1 + water(n / 2);//n是奇数
}
int main() {int n, num = 0;//num是喝的汽水瓶数scanf_s("%d", &n);num=water(n);printf("一共可以喝%d瓶汽水", num);return 0;
}

24.创建一个链表,键盘输入链表内容,最后输出链表内容

C

#include <stdio.h>
#include <stdlib.h>// 创建结点
typedef struct Node {int data;struct Node* next;
} node, * linklist;// 初始化链表
int initlist(linklist* l) {*l = (node*)malloc(sizeof(node)); // 分配头节点内存if (*l == NULL) {return 0; // 内存分配失败}(*l)->next = NULL; // 头节点的 next 指针置空return 1;
}// 插入元素(头插法)
int insert(linklist l, int e) {linklist p = (node*)malloc(sizeof(node)); // 创建新节点if (p == NULL) {return 0; // 内存分配失败}p->data = e;       // 设置新节点的数据p->next = l->next; // 新节点指向原第一个节点l->next = p;       // 头节点指向新节点return 1;
}// 输出单链表
void printList(linklist l) {linklist p = l->next; // 跳过头节点while (p != NULL) {printf("%d->", p->data);p = p->next;}printf("NULL\n");
}int main() {int x;linklist l;// 初始化链表if (!initlist(&l)) {printf("链表初始化失败!\n");return 1;}printf("输入-1停止\n");while (1) {scanf_s("%d", &x); // 读取用户输入if (x == -1) {break; // 输入-1时停止}if (!insert(l, x)) {printf("插入失败!\n");break;}}// 输出链表printf("链表内容:");printList(l);// 释放链表内存(可选)linklist p = l;while (p != NULL) {linklist temp = p;p = p->next;free(temp);}return 0;
}

C++ 

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode//创建结点
{int data;struct LNode* next;
}lnode, * linklist;
int initlist(linklist& l) //初始化单链表
{l = (lnode*)malloc(sizeof(lnode));l->next = NULL;return 1;
}
int insert(linklist& l, int e) //向单链表里插入一个元素
{linklist p;p = (lnode*)malloc(sizeof(lnode)); //动态开辟新的结点p->data = e; //头插法插入pp->next = l->next;l->next = p;return 1;
}
void output(linklist& l) //输出单链表
{int e;linklist p;p = l->next;while (p != NULL){e = p->data;printf("%d->", e);p = p->next;}printf("NULL");
}int main()
{linklist l;int x;initlist(l);//初始化printf("输入-1结束\n");while (1) {scanf_s("%d", &x);if (x == -1) break;insert(l, x);}output(l);//输出return 1;
}

25.输入一个3*3的矩阵,求两个对角线元素中的最大值

#include<stdio.h>
int main() {int i, j;int a[3][3];for (i = 0; i < 3; i++)for (j = 0; j < 3; j++)scanf_s("%d", &a[i][j]);int max = a[0][0];for (i = 0; i < 3; i++) {if (a[i][i] > max) max = a[i][i];if (a[i][2 - i] > max) max = a[i][2 - i];}printf("%d", max);return 0;
}

26.输入12个数,按照从后往前的顺序依次找出其中能被7整除的所有整数,以及这些整数的和

#include<stdio.h>
int main() {int i, a[12], sum = 0;for (i = 0; i < 12; i++)scanf_s("%d", &a[i]);for (i = 11; i >= 0; i--)if (a[i] % 7 == 0) {printf("%d ", a[i]);sum += a[i];}return 0;
}

27.打印

0

1    2

3    4     5

6    7     8      9

#include<stdio.h>
int main() {int rows=4, num=0;//行数和起始数字for (int i = 0; i < rows; i++) {for (int j = 0; j <= i; j++)printf("%d ", num++);printf("\n");}return 0;
}

28.已知字符串char s[50]="Iamstudent",插入字符a,使之变成Iamastudent

#include<stdio.h>
int main() {int i;char s[50] = "Iamstudent";for (i = 10; i >= 3; i--)s[i] = s[i - 1];s[i+1] = 'a';puts(s);return 0;
}

29.n个桃子,每天吃一半多一个,di10天还剩一个桃子,求n

#include<stdio.h>
int main() {int n=1;//第10天有1个桃子for (int i = 9; i >= 1; i--) {n = (n + 1) * 2;}printf("%d", n);return 0;
}

30. 输入<200个字符的字符串,只包括小写英文字母和空格。求按键盘的总次数

#include<stdio.h>
#include<string.h>
int main() {int sum=0;char a[200];gets(a);int len = strlen(a);for (int i = 0; i < len; i++) {if (a[i] == ' ') sum += 1;else if (a[i] == 'a' || a[i] == 'd' || a[i] == 'g' || a[i] == 'j' || a[i] == 'm' || a[i] == 'p' || a[i] == 't' || a[i] == 'w') sum += 1;else if (a[i] == 'b' || a[i] == 'e' || a[i] == 'h' || a[i] == 'k' || a[i] == 'n' || a[i] == 'q' || a[i] == 'u' || a[i] == 'x') sum += 2;else if (a[i] == 'c' || a[i] == 'f' || a[i] == 'i' || a[i] == 'l' || a[i] == 'o' || a[i] == 'r' || a[i] == 'v' || a[i] == 'y') sum += 3;else if (a[i] == 'z' || a[i] == 's') sum += 4;}printf("%d", sum);return 0;
}

http://www.ppmy.cn/news/1576968.html

相关文章

Github 2025-03-04 Python开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2025-03-04统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目10Svelte项目1JavaScript项目1 系统设计指南 创建周期&#xff1a;2507 天开发语言&#xff1a;P…

自然语言处理:朴素贝叶斯

介绍 大家好&#xff0c;博主又来和大家分享自然语言处理领域的知识了。按照博主的分享规划&#xff0c;本次分享的核心主题本应是自然语言处理中的文本分类。然而&#xff0c;在对分享内容进行细致梳理时&#xff0c;我察觉到其中包含几个至关重要的知识点&#xff0c;即朴素…

【入门Web安全之前端学习的侧重点和针对性的建议】

入门Web安全之前端学习的侧重点和针对性的建议 一、HTML&#xff1a;理解攻击载荷的载体二、CSS&#xff1a;次要但需警惕点击劫持三、JavaScript&#xff1a;渗透测试的核心重点四、浏览器工具&#xff1a;渗透测试的实战武器五、学习建议与资源六、总结&#xff1a;渗透测试者…

Vue前端开发- Vant之Card组件

业务组件是Vant的一大特点&#xff0c;特别是针对移动端商城开发的业务&#xff0c;有许多组件可以直接运用到通用商城的开发中&#xff0c;代码也十分简单&#xff0c;大大加快了应用的开发速度。 在众多的业务组件中&#xff0c;Card 卡片、Coupon 优惠券选择器和SubmitBar …

硅基流动前端如何设置tool工具

虽然python后台可以设置agent并调用工具&#xff0c;但是后台和前端交互速度不如直接在前端JavaScript调用快&#xff0c;在内网调用时确实可以改善使用体验。 下面以硅基流动的API为例子&#xff0c;让AI调用本地tools工具。 const options {method: POST,headers: {Authoriz…

前端练习项目:html css js 开发AI数字人平台官网前端静态页面

今天分享一个最近练习的一个前端静态网站项目&#xff1a;AI数字人平台官网前端静态页面 最近到处都可以看到关于AI的产品&#xff0c;我觉得未来每个人都离不开AI的使用。 今天就分享一个关于AI数字人的前端静态网站&#xff0c;如果你是学习前端&#xff0c;或者你想宣传自己…

爬虫技术结合淘宝商品快递费用API接口(item_fee):电商物流数据的高效获取与应用

在电商运营中&#xff0c;快递费用的透明化和精准计算对于提升用户体验、优化物流成本以及增强市场竞争力至关重要。淘宝提供的 item_fee 接口能够帮助开发者快速获取商品的快递费用信息。本文将详细介绍如何利用 Python 爬虫技术结合 item_fee 接口&#xff0c;实现高效的数据…

el-table input textarea 文本域 自适应高度,切换分页滚动失效处理办法

场景&#xff1a; el-table 表格 需要 input类型是 textarea 高度是自适应&#xff0c;第一页数据都是单行数据 不会产生滚动条&#xff0c;但是第二页数据是多行数据 会产生滚动条&#xff0c; bug: 第一页切换到第二页 第二页滚动条无法展示 解决办法&#xff1a;直接修改样…