1. ________________________________________ 2. 3. 输入输出格式: 4. 样例: 5. 输入输出格式: 样例: 6. 输入输出格式: 样例: 样例输入: 7. 输入输出格式: 样例: 8. 关于是否是素数,之前的作业中写过: 。。。。。。
自定义排序
________________________________________
有一个包含奇数个项的整数序列,请编程按照以下规则排序:最大值排在中间,最小值排在最左,中值排在最右,其它值清为0。输入2行,第一行n表示要输入的数的个数,n是奇数。第二行输入的n个数。输出,排序后的数组,数据空格分隔,最后一个数据后面没有空格。
输入样例:
5
12 20 9 88 32
输出样例:
9 0 88 0 20
样例输入:
7
23 44 10 9 22 13 34
样例输出:
9 0 0 44 0 0 22#include<stdio.h> void mysort(int* a, int n)//采用冒泡排序,最小的在前; { for (int i = 0; i < n; i++) { for (int j = 0; j < n - 1; j++) { if (a[j + 1] < a[j]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } int main() { int a[100], n; scanf_s("%d", &n);//输入的n必须为大于三的奇数; for (int i = 0; i < n; i++) scanf_s("%d", &a[i]); mysort(a, n); printf("%d ", a[0]);//输出顺序为:最小值,0,最大值,0最小值; for (int i = 0; i < (n - 3) / 2 ; i++)//输出0的个数为(n - 3) / 2, n必须为大于三的奇数; printf("0 "); printf("%d ", a[n - 1]); for (int i = 0; i < (n - 3) / 2 ; i++) printf("0 "); printf("%d", a[(n - 1) / 2]); return 0; }
取石子【选做】
________________________________________
有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。
输入格式: 输入表示若干种石子的初始情况,包含两个非负整数 a 和 b ,表示两堆石子的数目, a 和 b 都不大于1,000,000,000 。
输出格式: 包含一个数字 1 或 0 ,如果最后你是胜者,则为 1 ,反之,则为 0 。
输入样例:
2 1
输出样例:
0
________________________________________
样例输入:
2 1
样例输出:
0/*算法分析: 来自百度知道: 如果两人都采取正确的操作,那么对于非奇异局势,先拿者必胜,对于奇异局势,先拿者必败。 对于奇异局势,有如下公式: a[k]=[k*(1+√5)/2],b[k]=a[k]+k。(k=0,1,2......,[]表示取整) 那么通过b、a求出的a[k]如果与a相等,则说明满足奇异局势,先拿者必败,输出0 */ #include<stdio.h> #include<math.h>//需要用到sqrt以及floor; int main() { int a, b, m,n; scanf("%d%d", &a, &b); if (a > b) //在我们的公式中需要保证a比b小; { int temp = a; a = b; b = temp; } m= b - a; n= (int)floor(m * ((sqrt(5) + 1) / 2));//int为数据类型强制转换; printf("%d", n == a ? 0 : 1);//表示如果n等于a,输出前者,否则输出后者; return 0; }
日期问题
________________________________________
题目描述:
输入公元年份和月份,输出该月份的天数。
输入:年,月(逗号分隔)
输出:天数
________________________________________
样例输入:
2018,8
样例输出:
31#include<stdio.h> int main() { int year, month; scanf_s("%d,%d", &year, &month); int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if (month == 2) { if (year % 4 == 0 && year % 100 != 0) { printf("29"); } else printf("%d", days[2]); } else printf("%d", days[month]); return 0; }
求最大公约数和最小公倍数
________________________________________
题目描述:
输入两个正整数,输出其中最大公约数和最小公倍数。
输入输出格式:
输入:从键盘输入两个正整数
输出:最大公约数和最小公倍数。
输入:
15,25
输出:
最大公约数是5
最小公倍数是75#include<stdio.h> int gengxiangjiansun(int a, int b) { while(a % 2 == 0 && b / 2 == 0)//更相减损法的前提:两个数不同时是偶数;并且题目给了条件:两者都是正数; { a = a / 2; b = b / 2; } while (1) { if (a == b)//循环的结果是a和b相等; break; else if (a > b) a = a - b; else b = b - a; } return a; } int gongbeishu(int a, int b,int ys)//两个数的乘积等于这两个数的最大公约数与最小公倍数的积 { int bs = (a * b) / ys; return bs; } int main() { int ys, bs; int a, b; scanf_s("%d,%d", &a, &b); ys = gengxiangjiansun(a, b); bs = gongbeishu(a, b, ys); printf("最大公约数是%dn", ys); printf("最小公倍数是%d", bs); return 0; }
字符串中查找字符位置
________________________________________
题目描述:
查找一个字符在字符串中的第一个位置并输出这个位置。
输入:待查找的字符串和需要查找的字符。(输入时,待查找的字符串与所需查找的字符用*号隔开)
输出:字符的位置(如有多个相同的字符,只查找第一个。)
输入:
I am a studentm
输出:
4
________________________________________
样例输入:
fbhby WmlW
样例输出:
7#include<stdio.h> #include<string.h> int main() { char a[100]=""; gets(a); int len = strlen(a); int n,flag=0; for (int i = 0; i < len-2; i++) if (a[i] == a[len - 1]) { printf("%d", i+1); flag = 1; break; } if (flag == 0) printf("no finding"); return 0; }
非公共有元素
________________________________________
题目描述:
输入两个整型数组(假设数组的大小为不超过10)的各个元素,输出不是两个数组共有的元素,并从小到大排序输出。
输入:两个数组的元素(小于10个),数组中第一个数据指示元素的个数
输出:两个数组的元素中非共有的元素,并且从小到大进行排序
输入:
7 1 2 3 4 5 6 7
6 5 6 7 8 9 0
输出:
0 1 2 3 4 8 9
7 1 2 3 4 5 6 7
6 5 6 7 8 9 0
样例输出:
0 1 2 3 4 8 9#include<stdio.h> void bubble(int a[], int n) { for(int i = 0; i < n; i++) { for (int j = 0; j < n - 1; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } int main() { int a[10]; int b[10]; int c[20], d[20]; int n, k = 0, i, j; scanf_s("%d", &a[0]); for (i = 1; i <= a[0]; i++) scanf_s(" %d", &a[i]); scanf_s("%d", &b[0]); for (i = 1; i <= b[0]; i++) scanf_s(" %d", &b[i]);//数组的输入 for (i = 1; i <= a[0]; i++) c[i - 1] = a[i]; for (i = 1; i <= b[0]; i++) c[i + a[0] - 1] = b[i];//a、b两个数组合为一个数组c for (i = 0; i < a[0] + b[0]; i++) { int flag= 0; for (j = 0; j < a[0] + b[0]; j++) { if (c[i] == c[j]) flag++; } if (flag == 1) { d[k] = c[i]; k++; } } bubble(d, k);//函数引用 printf("%d", d[0]); for (i = 1; i < k; i++) printf(" %d", d[i]); return 0; }
插入数组
________________________________________
题目描述:
定义一个含20个元素的整型数组并初始化为a[20]={1,2,3,4,5,6,7,8,9,10}。另外定义一个大小为10的整型数组b。
要求:输入整数n(1<=n<=10),然后输入n个整数存入b中,再输入一个整数k(1<= k <=10),
将数组b中的n个元素依次插入到数组a中从第k位开始的地方,插入完成后,输出数组a(元素间用空格隔开)。
输入:整数n,n个整数,整数k
输出:数组a
2
11 22
1 2 11 22 3 4 5 6 7 8 9 10
________________________________________
样例输入:
3
13 14 15
4
样例输出:
1 2 3 4 13 14 15 5 6 7 8 9 10#include<stdio.h> int main() { int a[20] = { 1,2,3,4,5,6,7,8,9,10 }; int b[10],n,k; scanf_s("%d", &n); for (int i = 0; i < n; i++) scanf_s("%d", &b[i]); scanf_s("%d", &k); for (int i=9; i >k-1; i--) { a[i+n]=a[i]; } for (int i = k; i < k + n; i++) a[i] = b[i - k]; for (int i = 0; i < 10 + k-2; i++) printf("%d ", a[i]); printf("%d", a[10 + k - 2]); return 0; }
reversible prime 【选做】
________________________________________
A reversible prime in any number system is a prime whose “reverse” in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.
Now given any two positive integers N (< 105) and D (1 < D <= 10), you are supposed to tell if N is a reversible prime with radix D.
Input Specification:
The input file consists of several test cases. Each case occupies a line which contains two integers N and D. The input is finished by a negative N.
Output Specification:
For each test case, print in one line “Yes” if N is a reversible prime with radix D, or “No” if not.
________________________________________
样例输入:
73 10
23 2
23 10
-2
样例输出:
Yes
Yes
No int n,j; int k = 0; scanf_s("%d", &n); for (j = 1; j < n; j++) { if (n % j == 0) k++; } if (k == 1)//只有1是满足条件的,则判定为素数; printf("YES"); else printf("NO");
#include<stdio.h> int tentok(int a, int k) { int b[20] = {0}; static int i = 0; while (1) { b[i] = a%k; a = a / k; i++; if (a == 0) break; } int c = 0, j = 0; while (1) { c = c * k + b[j]; if(j==i-1) break; j++; } return c; } int shisushuma(int c) { int j; int k = 0; for (j = 1; j < c; j++) { if (c % j == 0) k++; } if (k == 1) return 1; else return 0; } int main() { int result[10]; int a, k, c; static int num = 0; while(1) { scanf_s("%d", &a); if (a < 0) break; else { scanf_s("%d", &k); c = tentok(a, k); result[num]=shisushuma(c); num++; } } for (int j = 0; j < num - 1; j++) { if (result[j] == 1) printf("Yesn"); else printf("Non"); } if (result[num - 1] ==1) printf("Yes"); else printf("No"); }
临近期末,几乎都是复习题,比较轻松。
。。。。。。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算