1.K进制数的转换。输入非负整数a将其转换为K进制数,2 <= K <= 32。进制数使用的符号是0~9, A, …V来表示(字母是大写) 输入:一个十进制非负整数a和一个正整数K, 2<=K<=32。空格分隔。 输出:K进制表示的整数。

#include<stdio.h>
int main() {int a, k, b;char arr[100] = { 0 };int i = 0;scanf("%d %d", &a, &k);if (a == 0)printf("0");else {while (a / k != 0 || a % k <= k && a % k > 0) {b = a % k;if (b < 10) {arr[i] = b + '0';i++;}else {arr[i] = b - 10 + 'A';i++;}a /= k;}for (int j = i - 1; j >= 0; j--) {printf("%c", arr[j]);}}return 0;
}

2.任意输入一个自然数,将该数乘以3,输出乘积和乘积中各位数字组成的最大数。 例如,输入 5370 ,乘3结果为16110,则输出为 16110 61110。 输入格式: 自然数 n 输出格式: 乘3结果和乘积中各位数字组成的最大数,空格隔开。

#include<stdio.h>
#include<math.h>
#include<string.h>
int main() {int a, A, len = 1;int arr[100] = { 0 };scanf("%d", &a);A = 3 * a;printf("%d ", A);//数字位数的计算int B = A;while (B / 10 != 0) {len++;B /= 10;}//得到每一位的数字int temp;for (int i = 0; i < len; i++) {temp = A / pow(10, len - 1 - i);arr[i] = temp % 10;}//排序for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}for (int i = len-1; i>=0; i--) {printf("%d", arr[i]);}return 0;
}

3.每天一开始,第一个在机房里签字的人会打开门,最后一个签字的人会锁上门。根据签到的记录,你应该找到那天开门和锁门的人。记录保证每个人的签到时间必须早于签退时间,并且没有两个人同时签到或签退。
输入:一天的记录,记录以正整数M开头,M是记录总数,后跟M行,每行的格式为: ID_number Sign_in_time
Sign_out_time,其中时间以HH:MM:SS格式给定,ID number是一个不超过15个字符的字符串。
输出:在一行中输出当天开锁和锁门的人员的ID号。这两个ID号必须用一个空格隔开。

#include<stdio.h>
#include<string.h>
struct daka {char ID[20];char Ftime[10];char Ltime[10];
};
int main() {struct daka daka[100];int num;scanf("%d", &num);for (int i = 0; i < num; i++) {scanf("%s", daka[i].ID);scanf("%s", daka[i].Ftime);scanf("%s", daka[i].Ltime);}struct daka First = daka[0];struct daka Last = daka[0];for (int i = 0; i < num - 1; i++) {if (strcmp(daka[i].Ftime, daka[i + 1].Ftime) > 0) {First = daka[i + 1];}if (strcmp(daka[i].Ltime, daka[i + 1].Ltime) < 0) {Last = daka[i + 1];}}printf("%s ", First.ID);printf("%s\n", Last.ID);return 0;
}

4.有n个小孩围成一圈,从1顺序排号。从第一个人开始报数(1~k报数),凡报到k的人退出圈子,问最后留下的人原来排在第几号。 输入:人数(不超过1000),以及报数的k(不超过3000),空格分隔。 输出:最后留下的人的编号

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

5.编写程序,删除字符串中间的所有星号*,如果首尾有号,保留不变。字符串长度不超过200。 如:输入streetmusic,则输出*streetmusic*** 输入:带号的字符串(字符串中不含空格)。
输出:中间没有
号的字符串。

#include <string.h>
#include <stdio.h>
int main() {char str[200];gets(str);const char s[2] = "*";char* token;int i = 0,j = strlen(str)-1,k=0;//首while (str[i] == '*') {printf("*");i++;}//尾while (str[j] == '*') {j--;k++;}//中token = strtok(str, s);while (token != NULL) {printf("%s", token);token = strtok(NULL, s);}for (i = 0; i < k; i++) {printf("*");}return(0);
}

6.某部队进行新兵队列训练,将新兵从1开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始1至2报数,凡报到2的出列,剩下的向小序号方向靠拢,再从头开始进行1至3报数,凡报到3的出列,剩下的向小序号方向靠拢,继续从头开始进行1至2报数,以后从头开始轮流进行1至2报数、1至3报数直到剩下的人数不超过三人为止。编写程序,输入数N为最开始的新兵人数(2
< N < 6000),输出剩下的新兵最初的编号。

int main() {int n, a[6000] = { 0 };scanf("%d", &n);for (int count = n, num=2; count > 3;) {count = 0;for (int i = 0, j = 1; i < n; i++) {if (a[i] == 0)if(j == num){a[i] = -1;j = 1;}else{j++;count++;}}if(num==2)num=3;else num=2;}for (int i = 0; i < n; i++)if (a[i] == 0){if(i == 0){printf("%d", i + 1);}else printf(" %d", i + 1);}return 0;
}

7.输入两个整型数组(假设数组的大小为不超过100)的各个元素,输出不是两个数组共有的元素,并从小到大排序输出。 允许一个数组内具有重复的元素,如该元素在另一个数组中没有(非共有)则所有重复的元素都需要输出。
输入:输入分为2行,分别输入2个数组中的整数,每行的第一个整数N>0指示该数组需要输入的整数个数,随后输入N个整数。
输出:两个数组的元素中非共有的元素,并且从小到大进行排序.

#include<stdio.h>
int main(){int a[100], b[100], c[200];int a1[100], b1[100];int la, lb;scanf("%d", &la);for (int i = 0; i < la; i++) {scanf("%d", &a[i]);a1[i] = a[i];}scanf("%d", &lb);for (int j = 0; j < lb; j++) {scanf("%d", &b[j]);b1[j] = b[j];}for (int i = 0; i < la; i++) {for (int j = 0; j < lb; j++) {if (a1[i] == b1[j]) {a[i] = -1;b[j] = -1; }}}int k = 0;for (int i = 0; i < la+lb; i++) {if (i < la && a[i] != -1) {c[k] = a[i];k++;}else if (i >= la && i < la + lb && b[i - la] != -1) {c[k] = b[i - la];k++;}}int temp = 0;for (int i = 0; i < k; i++) {for (int j = 0; j < k-i-1; j++) {if (c[j] > c[j + 1]) {temp = c[j];c[j] = c[j + 1];c[j + 1] = temp;}}}for (int i = 0,b=0; i < k; i++) {(b==0)? b++,printf("%d", c[i]):printf(" %d",c[i]);}return 0;
}

8.给定N个“分子/分母”形式的有理数,计算这些分数的和。 输入格式:第一行输入一个正整数N(1<N<=100),然后下一行N个有理数“a1/b1
a2/b2…”,其中所有的分子和分母都在“int”的范围内。如果有负数,则符号必须出现在分子的前面。 输出格式:输出最简单形式的和,“整数
分子/分母”,其中“整数”是和的整数部分,“分子”<“分母”,分子和分母没有公因数。如果整数部分为0,则必须仅输出小数部分。如果结果是一个整数,则仅输出该整数且后面没有空格。如:
2 1/2 1/2 1

3
-1/2 -1/2 -1/2
-1 1/2

#include<stdio.h>
#include<stdio.h>
typedef struct fenshu
{int zi;int mu;
}fenshu;
//求最大公约数
int Gys(int m,int n) {if (n == 0)return m;return Gys(n, m % n);
}
//加法计算
fenshu jisuan(fenshu a, fenshu b) {fenshu temp;int t, m;int A = a.mu;int B = b.mu;t=Gys(A, B);m = A * B / t;//分母的最小公倍数;a.zi *= m / a.mu;b.zi *= m / b.mu;temp.zi = (a.zi + b.zi);temp.mu = m;return temp;
}
//约分
int main() {int n;fenshu fs[100];scanf("%d ", &n);for (int i = 0; i < n; i++) {scanf("%d/%d",&fs[i].zi,&fs[i].mu);}fenshu temp = fs[0];for (int i = 0; i < n-1; i++) {temp = jisuan(temp, fs[i + 1]);}int x = temp.zi / temp.mu;//整数部分int t = Gys(temp.zi, temp.mu);temp.zi /= t;temp.mu /= t;if (x != 0) {printf("%d",x);if (temp.zi % temp.mu != 0) {printf(" %d/%d",abs((temp.zi % temp.mu)), abs(temp.mu));}}else{printf("%d/%d", temp.zi, temp.mu);}return 0;
}

9.输入一个带有空格的字符串(包含字母、数字、空格以及其他符号),提取字符串中的数字转换为整数并输出,字符串中的非数字字符视为分割符。输出数据间以空格分隔,末尾没有空格,并换行输出所有整数的和值。若字符串中没有任何数字时,输出“NO”。输入的字符串长度不超过80。

输入:一行字符串(含有空格)。 输出格式:第一行:转换后的各整数间用一个空格分隔,第二行:和值。

#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {char a[80];char str[80][80] = {0};int S[80] = {0};gets(a);const char s[2] = "*";char* token;int sign = 0;for (int i = 0; i < strlen(a); i++) {if (a[i] > 57 || a[i] < 48)a[i] = '*';elsesign = 1;}if (sign == 1) {int i = 0;token = strtok(a, s);while (token != NULL) {sprintf(str[i], "%s", token);token = strtok(NULL, s);i++;}for (int j = 0; j < i; j++) {int k = 0; S[j] = 0;while (str[j][k] != '\0') {S[j] = S[j] * 10 + (str[j][k] - '0');k++;}}int sum = 0;for (int j = 0; j < i; j++) {sum += S[j];(j == i - 1) ? printf("%d\n", S[j]) : printf("%d ", S[j]);}printf("%d", sum);}else {printf("NO");}return 0;
}

输入两个字符串s, t,(字符串中没有空格,包含大小写字母、数字以及其他符号)
按从小到大顺序输出在s或t中出现过(不区分大小写)的所有字符,所有字母均按大写输出 重复的字符只输出1次。 s,t长度不超过100。
输入:1行,两个字符串中间用空格隔开,字符串不含空格 输出:结果字符串,按ASCII编码从小到大排序。

#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main() {char a[100], b[100], c[128] = {0};int i = 0;scanf("%s %s", a,b);int len = strlen(a) + strlen(b);for (int i = 0; i < len;i++) {if (i < strlen(a)) {c[toupper(a[i])]=1;}else {c[toupper(b[i - strlen(a)])]=1;}}for (i = 0; i < 128;i++) {if(c[i]==1)printf("%c", i);}return 0;
}

2021年西交大计基题目解析(第13周)相关推荐

  1. 2021年西交大计基题目解析(第12周)

    编写一个程序,读入n个用户姓名和电话号码,按姓名的字典顺序排列后,输出用户的姓名和电话号码,n从键盘输入. 样例: 输入: 3 张 122 王 233 李 567 输出: 李 567 王 233 张 ...

  2. XJTU大计基作业-1(第7周)

    -11.请输入一个不含0的8位的十进制整数,编写程序取出该整数的中间4位数,分别输出取出的这4位数以及该4位数加上1024的得数. 输入:一个整数. 输出:两个整数,用空格分隔. #define _C ...

  3. 【2021末九软工边缘人保研】川大-中科院网络中心-华师夏令营+哈工大本-中科院网络中心-西交-厦大-中山-武大-北航预推免

    2021末九软件工程边缘人保研经历全记录 一.写在前面 二.个人背景 三.夏令营经历 1.川大计算机(软件)学院夏令营 2.华师大软件"高可信"夏令营 3.中科院计算机网络信息中心 ...

  4. 2021年武大CS\南大CS\哈工CS\浙软\西交CS\天大佐治亚CS\中科院信网中心面试经验贴

    本人基本情况: 学校:中部某985 专业:计算机科学与技术 英语:四级 620+,六级590+,托福91 竞赛:2个国一,1个国二,1个省一,一项省级大创 科研:实验室学习半年,进项目组半年,无论文 ...

  5. 2021届保研经验贴—北邮,西交,武大,中科院,厦大,南开

    目录 一.本人情况 二.夏令营 1.南开大学计算机学院 2. 山东大学软件学院 3. 中科院网络信息中心 二.预推免 1.西交姚班 2.厦大计算机 3.浙软 4.武大遥感学院 5.武大网安 5.北交计 ...

  6. 北大计算机系保研高校生源质量排名,2021年中国大学保研率排名出炉,西交进入前十,西工大超华科...

    2021年中国大学保研率排名,大家可以来看看到底哪些高校更容易保研. 排名第一的是清华大学,毕竟目前的清华发展正盛,毕业生受欢迎也是理所当然.而北大紧随其后,两所中国最好的高校也是差距非常小,毕竟生源 ...

  7. 2021.09 编程题 37【Python一级题目解析】

    Python一级题目解析 1.题目 37.作图题: 绘制如下图形: (1)画一个由一个正方形和一个菱形组成的图形,其中,正方形的边长为200象素,菱形的四个顶点均在正方形四条边的中点上: (2)设置画 ...

  8. 2021.03 编程题 36【Python二级题目解析】

    Python二级题目解析 1.题目 36.设计一个停车场收费计算器(收费规则,2小时以内收费5元,超出部分每小时加收2元). 要求如下: (1)设计的程序要能输入停车时间(单位为小时,输入的小时数为整 ...

  9. 中科大/中科院/南大/西交 保研经验

    转载于CSDN,原文作者为:cuixuange 点击原文链接,可进入原帖. 准备保研的时候看了一些别人的成功保研经历,我一直想这自己是否会有这么一个机会写写自己的经历呢?笔拙+没有底气=迟迟未动笔,后 ...

最新文章

  1. 稀疏自编码器及TensorFlow实现
  2. wxPython和PyQt谁才是最赞的Python GUI库?
  3. Cobbler体验小记
  4. 【转】Yelp是如何实现每天运行数百万个测试的
  5. 阅读英文论文的方法总结(三遍法)
  6. 学会这4个表达「万能公式」,下次向领导汇报时不再语无伦次
  7. 较流行的4个开源协议
  8. etl 不能转换成date_java怎么将date类型转换成datetime类型
  9. c# 异常处理 try-catch-finally
  10. linux centos7 利用keepalived 搭建高可用nginx集群
  11. Https网络安全传输详解
  12. ansys分析遇到的几个问题解决方案【文件保存】【网格划分】【steps controls】【应力应变动画】【力负载】【干涉】【part打散】【merge合并】【分析计算量】
  13. Vegas Pro给视频加马赛克方法
  14. 数模国赛历年题目 1992——2021
  15. 读书笔记 - 我读《财务自由之路》 - 博多 舍费尔 / 你真正想要的是什么
  16. Codeforces Round #668 (Div. 2)E. Fixed Point Removal
  17. CSS 快速实现烟花绽放(仅100多行代码)
  18. 2022 OpenHarmony年度运营报告
  19. NewStar CTF Week3Misc 4-5Web
  20. Android音视频API - MediaCodec/MediaMuxer/MediaStore/MediaController等

热门文章

  1. 【计算机毕业设计】544音乐翻唱网站与分享平台
  2. 贪婪迭代算法(IG)
  3. 老吕RawViewer介绍及使用帮助
  4. Dubbox2.8.4 平滑滚动升级到 Dubbo3.0
  5. 一年获三轮超8亿元融资,Bespin Global全面布局亚洲和美国,催生云管理服务的市场爆发!
  6. 关于组建研发团队的招聘
  7. access课程均不及格_2014年全国计算机二级access上机考点 7
  8. Python selenium 控制 360安全浏览器
  9. 2022-2028全球与中国内部交流软件市场现状及未来发展趋势
  10. layui组件相关学习