网站建设套餐联系方式,电商手机网站开发,小程序管理平台登陆,网站建设职责要求7-1 求一组数组中的平均数
输入10个整数#xff0c;输出这10个整数的的平均数#xff0c;要求输出的平均数保留2位小数
输入样例#xff1a;
1 2 3 4 5 6 7 8 9 10
输出样例#xff1a;
5.50
参考答案#xff1a;
#include stdio.h
int main(){int sum 0;…7-1 求一组数组中的平均数
输入10个整数输出这10个整数的的平均数要求输出的平均数保留2位小数
输入样例
1 2 3 4 5 6 7 8 9 10
输出样例
5.50
参考答案
#include stdio.h
int main(){int sum 0;for (int i 1; i 10; i) {int num;scanf(%d, num);sum num;}double ans sum/10.0;printf(%.2f,ans);return 0;
}
7-2 翻转数组
输入一组数少于50个元素要求对该数组元素进行倒序输出。
输入格式:
第一行输入一个数n表示数组中元素个数然后一行输入n个整数数与数间用空格隔开。
输出格式:
将该组数倒序输出数与数间用一个空格隔开第一个数前无空格最后一个数后无空格。
输入样例:
12
36 74 20 96 21 48 99 68 84 81 34 53输出样例:
53 34 81 84 68 99 48 21 96 20 74 36
参考答案
#include stdio.h
int main(){int n;scanf(%d, n);int num[60];for (int i 0; i n; i) {scanf(%d, num[i]);}for (int i n-1; i 0; i--) {if (i ! n-1) printf( );printf(%d, num[i]);}return 0;
}
7-3 求数组中偶数之和
从键盘输入n个整数存入一维数组中计算数组元素中所有偶数之和并输出。
输入格式:
第一行输入整数个数n 第二行n 个整数数据之间用空格隔开。
输出格式:
输出和最后换行。
输入样例:
8
10 19 18 16 17 15 14 13
输出样例:
58
参考答案
#include stdio.h
int main(){int n;scanf(%d, n);int sum 0;for (int i 0; i n; i ) {int num;scanf(%d, num);if (num%2 0) sum num;}printf(%d, sum);return 0;
}
7-4 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”即“年/月/日”给出日期。注意闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02输出样例1:
61输入样例2:
2000/03/02输出样例2:
62
参考答案
#includestdio.h
int common_year[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
int leap_year[] {0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){int year,month,day;scanf(%d/%d/%d,year,month,day);int ans 0;if (year%400 0 || (year%4 0 year%100 ! 0)) {for (int i 0; i month; i) {ans leap_year[i];}ans day;}else {for (int i 0; i month; i) {ans common_year[i];}ans day;}printf(%d,ans);return 0;
}
7-5 输出该月天数
从键盘输入一个年份year和月份month输出该月有多少天(考虑闰年)。 提示如果年份能被400整除则它是闰年如果能被4整除而不能被100整除则也是闰年否则不是闰年。
输入格式:
输入任意符合范围1月~12月的月份和1900年~9999年年份且两个值之间空格分隔。
输入样例:
2000 2输出样例:
year 2000 month 2 days29输入样例:
2014 8输出样例:
year 2014 month 8 days31
参考答案
#includestdio.h
int common_year[] {0,31,28,31,30,31,30,31,31,30,31,30,31};
int leap_year[] {0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){int year, month;scanf(%d %d, year, month);if ((year%400 0) || (year%4 0 year%100 ! 0)) {printf(year %d month %d days%d, year, month, leap_year[month]); }else {printf(year %d month %d days%d, year, month, common_year[month]); }return 0;
}
7-6 春夏秋冬
气象意义上通常以阳历35月为春季(spring)68月为夏季(summer)911月为秋季(autumn)12月来年2月为冬季(winter)。请根据输入公历的年份以及月份输出对应的季节。
输入格式:
输入的数据格式是固定的YYYYMM的形式即年份占4个数位月份占2个数位且没有不合理的输入如2017!#$%13^*之类的形式。
输出格式:
输出月份对应的季节用英文单词表示全部用小写字母。
输入样例1:
201901输出样例1:
winter输入样例2:
201807输出样例2:
summer
参考答案
#includestdio.h
int main(){int num;scanf(%d, num);int month num%100;if (month 3 month 5) printf(spring);if (month 6 month 8) printf(summer);if (month 9 month 11) printf(autumn);if ((month 1 month 2) || month 12) printf(winter);return 0;
}
7-7 求N分之一序列前N项和
本题要求编写程序计算序列 1 1/2 1/3 ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum S”的格式输出部分和的值S精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
6输出样例:
sum 2.450000
参考答案
#includestdio.h
int main(){int n;scanf(%d, n);double sum 0;for (int i 1; i n; i ) {sum 1.0/i;}printf(sum %.6f, sum);return 0;
}
7-8 求简单交错序列前N项和
本题要求编写程序,计算序列 1 - 1/4 1/7 - 1/10 ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum S”的格式输出部分和的值S精确到小数点后三位。题目保证计算结果不超过双精度范围。
输入样例:
10输出样例:
sum 0.819
参考答案
#includestdio.h
int main(){int n;scanf(%d, n);int flag 1;double ans 0;for (int i 1; i n; i) {ans flag*1.0/(3*i-2);flag -flag;}printf(sum %.3f, ans);return 0;
}
7-9 求交错序列前N项和
本题要求编写程序计算交错序列 1-2/33/5-4/75/9-6/11... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值结果保留三位小数。
输入样例:
5输出样例:
0.917
参考答案
#includestdio.h
int main(){int n;scanf(%d, n);int flag 1;double ans 0;for (int i 1; i n; i) {ans flag*1.0*i/(2*i-1);flag -flag;}printf(%.3f, ans);return 0;
}
7-10 求阶乘序列前N项和
本题要求编写程序计算序列 1!2!3!⋯ 的前N项之和。
输入格式:
输入在一行中给出一个不超过12的正整数N。
输出格式:
在一行中输出整数结果。
输入样例:
5输出样例:
153
参考答案
#includestdio.hint factorial(int x) {int y 1;for (int i 1; i x; i) {y * i;}return y;
}int main(){int n;scanf(%d, n);int ans 0;for (int i 1; i n; i) {ans factorial(i);}printf(%d, ans);return 0;
}
7-11 求分数序列前N项和
本题要求编写程序计算序列 2/13/25/38/5... 的前N项之和。注意该序列从第2项起每一项的分子是前一项分子与分母的和分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20输出样例:
32.66
参考答案
#includestdio.h
int main(){int n;scanf(%d, n);double ans 0;double fenzi 2;double fenmu 1;for (int i 1; i n; i) {ans fenzi/fenmu;double new_fenzi fenzi fenmu;double new_fenmu fenzi;fenzi new_fenzi;fenmu new_fenmu;}printf(%.2f, ans);return 0;
}
7-12 素数对猜想
让我们定义dn为dnpn1−pn其中pi是第i个素数。显然有d11且对于n1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(105)请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20输出样例:
4
参考答案
#includestdio.h
#include stdbool.h
bool isPrime(int x) {bool flag true;if (x 1) flag false;if (x 2) flag true;if (x 2) {for (int i 2; i sqrt(x); i) {if (x%i 0) {flag false;break;}}}return flag;
}int main(){int n;scanf(%d,n);int prime[9999];int index 0;int ans 0;for (int i 1; i n; i) {if (isPrime(i) true) {prime[index] i;index;}}for (int i 1; i index; i) {if (prime[i] - prime[i-1] 2) {ans;}}printf(%d,ans);
}
7-13 求n以内最大的k个素数以及它们的和
本题要求计算并输出不超过n的最大的k个素数以及它们的和。
输入格式:
输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。
输出格式:
在一行中按下列格式输出:
素数1素数2…素数k总和值其中素数按递减顺序输出。若n以内不够k个素数则按实际个数输出。
输入样例1:
1000 10输出样例1:
9979919839779719679539479419379664输入样例2:
12 6输出样例2:
11753228
参考答案
#includestdio.h
int isPrime(int x) {int flag 1;if (x 1) flag 0;if (x 2) flag 1;if (x 2) {for (int i 2; i sqrt(x); i) {if (x%i 0) {flag 0;break;}}}return flag;
}
int main(){int n, k;scanf(%d %d,n, k);int sum 0;int flag 1;while(n 0 k 0) {if (isPrime(n) 1) {if (flag 0) printf();printf(%d,n);sum n;flag 0;k--;}n--;}printf(%d,sum);
}
7-14 哥德巴赫猜想
哥德巴赫猜想大家都很熟悉今日常见的猜想陈述为欧拉的版本即任一大于2的偶数都可写成两个素数之和亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。由于一个偶数可能有多组不同的素数对,所以要求输出两个彼此最接近的素数。
输入格式:
输入有多行每一行有一个偶整数n(5n≤10000)
输出格式:
对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数(较小的素数放在较大的素数前).
输入样例:
20
30
40输出样例:
7 13
13 17
17 23
参考答案
#includestdio.h
int isPrime(int x) {int flag 1;if (x 1) flag 0;if (x 2) flag 1;if (x 2) {for (int i 2; i sqrt(x); i) {if (x%i 0) {flag 0;break;}}}return flag;
}
int main(){int n, a, b;while(scanf(%d, n) ! EOF){for(int i n/2; i 1; i --){a i;b n-i;if(isPrime(i) 1 isPrime(n-i) 1){break;}}printf(%d %d\n, a, b);}return 0;
}
7-15 数组元素循环右移问题
一个数组A中存有N0个整数在不允许使用另外数组的前提下将每个整数循环向右移M≥0个位置即将A中的数据由A0A1⋯AN−1变换为AN−M⋯AN−1A0A1⋯AN−M−1最后M个数循环移至最前面的M个位置。如果需要考虑程序移动数据的次数尽量少要如何设计移动的方法
输入格式:
每个输入包含一个测试用例第1行输入N1≤N≤100和M≥0第2行输入N个整数之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列之间用空格分隔序列结尾不能有多余空格。
输入样例:
6 2
1 2 3 4 5 6输出样例:
5 6 1 2 3 4
参考答案
#includestdio.h
int main(){int n, m;scanf(%d %d, n, m);int num[110];for (int i 0; i n; i) scanf(%d, num[i]);for (int i 0; i m; i) {int temp num[n-1];for (int j n-1; j 0; j--) {num[j] num[j-1];}num[0] temp;}for (int i 0; i n; i) {if (i ! 0) printf( );printf(%d, num[i]);}return 0;
}
7-16 猴子选大王
一群猴子要选新猴王。新猴王的选择方法是让N只候选猴子围成一圈从某位置起顺序编号为1~N号。从第1号开始报数每轮从1报到3凡报到3的猴子即退出圈子接着又从紧邻的下一只猴子开始同样的报数。如此不断循环最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王
输入格式
输入在一行中给一个正整数N≤1000。
输出格式
在一行中输出当选猴王的编号。
输入样例
11输出样例
7
参考答案
#includestdio.h
int flag[1010] {0};
int main(){int n;scanf(%d, n);int cnt 0;int total n;while(total 1) {for (int i 1; i n; i) {if (flag[i] 1) continue;if (flag[i] 0) cnt;if (cnt 3) {flag[i] 1;cnt 0;total--;}}}for (int i 1; i n; i) {if (flag[i] 0) {printf(%d, i);break;}}return 0;
}
7-17 数组循环左移
本题要求实现一个对数组进行循环左移的简单函数一个数组a中存有n0个整数在不允许使用另外数组的前提下将每个整数循环向左移m≥0个位置即将a中的数据由a0a1⋯an−1变换为am⋯an−1a0a1⋯am−1最前面的m个数循环移至最后面的m个位置。如果还需要考虑程序移动数据的次数尽量少要如何设计移动的方法
输入格式:
输入第1行给出正整数n≤100和整数m≥0第2行给出n个整数其间以空格分隔。
输出格式:
在一行中输出循环左移m位以后的整数序列之间用空格分隔序列结尾不能有多余空格。
输入样例
8 3
1 2 3 4 5 6 7 8输出样例
4 5 6 7 8 1 2 3
参考答案
#includestdio.h
int main(){int n, m;scanf(%d %d, n, m);int num[1010];for (int i 0; i n; i) scanf(%d, num[i]);for (int i 0; i m; i) {int temp num[0];for (int j 0; j n-1; j) {num[j] num[j1];}num[n-1] temp;}for (int i 0; i n; i) {if (i ! 0) printf( );printf(%d, num[i]);}return 0;
}
7-18 利用数组计算斐波那契数列
本题要求编写程序利用数组计算菲波那契Fibonacci数列的前N项每行输出5个题目保证计算结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和最开始两项均定义为1的数列例如11235813...。
输入格式:
输入在一行中给出一个整数N1≤N≤46。
输出格式:
输出前N个Fibonacci数每个数占11位每行输出5个。如果最后一行输出的个数不到5个也需要换行。
如果输入的N不在有效范围内则输出Invalid.。
输入样例1:
7输出样例1: 1 1 2 3 58 13输入样例2:
0输出样例2:
Invalid.
参考答案
#includestdio.h
int main(){int n;scanf(%d, n);int num[50];num[1] 1;num[2] 1;if (n 1 || n 46) {printf(Invalid.);return 0;}if (n 3) {for (int i 3; i n; i) {num[i] num[i-1] num[i-2];}}for (int i 1; i n; i) {printf(%11d, num[i]);if (i%5 0 || i n) printf(\n);}return 0;
}