61 查找整数
分数 10
作者 杨起帆单位 浙大城市学院
本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。
输入格式:
输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。
输出格式:
在一行中输出X的位置,或者“Not Found”。
输入样例1:
5 73 5 7 1 9
输出样例1:
2
输入样例2:
5 73 5 8 1 9
输出样例2:
Not Found
#include int main(){int n,b,i;scanf("%d %d", &n,&b);int search[20];for(i=0;i<n;i++){scanf("%d", &search[i]);}for(i=0; i<n; i++){if(b==search[i]){printf("%d", i);break;}}if(i==n){printf("Not Found");}}
62 数字加密
分数 15
作者 陈建海单位 浙江大学
输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。
输入格式:
输入在一行中给出一个四位的整数x,即要求被加密的数。
输出格式:
在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。
输入样例:
1257
输出样例:
The encrypted number is 4601
#includeint main(){int number;int i;int a[4]={0};//数组初始化int b,c,d,e;//个、十、百、千int sum;scanf("%d",&number);//是四位数字for(i=0;i<4;i++){a[i]=number%10;number=number/10;//从个位数字开始倒序输出,把四位数代入数组中} b=(a[0]+9)%10;//个 c=(a[1]+9)%10;//十 d=(a[2]+9)%10;//百 e=(a[3]+9)%10;//千 sum=c*1000+b*100+e*10+d;//注意乘的顺序 printf("The encrypted number is %04d",sum);return 0;}
63 求整数序列中出现次数最多的数
分数 15
作者 张彤彧单位 浙江大学
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
#includeint main() {int n;scanf("%d", &n);int a[1000];int count=0;int max = 0, maxcount = 0;int i,j;for (i = 0; i < n; i++)//将数字填入数组{scanf("%d", &a[i]);}for (i = 0; i < n; i++){for (j = 0; j maxcount)//比较i的次数{maxcount = count;max = a[i];}count = 0;//这里一定要清零,否则会记录所有元素的次数}printf("%d %d", max, maxcount);return 0;}
64 输出数组元素
分数 15
作者 颜晖单位 浙江大学
本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。
输入格式:
输入的第一行给出正整数n(1<n≤10)。随后一行给出n个整数,其间以空格分隔。
输出格式:
顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。
输入样例:
105 1 7 14 6 36 4 28 50 100
输出样例:
-4 6 7-8 30 -3224 22 50
#includeint main(){int i, j, n;int arr[100];scanf("%d", &n);for (i = 0;i < n;i++){scanf("%d", &arr[i]);}for (i = 1;i < n;i++){if (i == 4 || i == 1||i==7){printf("%d", arr[i] - arr[i - 1]);}else {printf(" %d", arr[i] - arr[i - 1]);if (i % 3 == 0)printf("\n");}}return 0;}
65 二维数组中每行最大值和每行和
分数 10
作者 王跃萍单位 东北石油大学
求一个3*3二维数组中每行的最大值和每行的和。
输入格式:
在一行中输入9个小于100的整数,其间各以一个空格间隔
输出格式:
输出3行3列的二维数组,并在每行后面分别输出每行最大值和每行元素的和,每个数据输出占4列。
输入样例:
3 6 5 9 8 2 1 4 5
输出样例:
3 6 5 614 9 8 2 919 1 4 5 510
#includeint main(){int i, j, a[3][3], sum=0, max;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++){max=a[i][0];for(j=0;j<3;j++){if(max
66 简化的插入排序
分数 15
作者 C课程组单位 浙江大学
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
51 2 4 5 73
输出样例:
1 2 3 4 5 7
#includeint main(){int n,i,j;scanf("%d",&n);int a[n+1];for(i=0;i<=n;i++)scanf("%d",&a[i]);for(i=0;ia[n]){a[i]=a[i]+a[n];a[n]=a[i]-a[n];a[i]=a[i]-a[n];}//交换for(i=0;i<=n;i++)printf("%d ",a[i]);return 0;}
67 冒泡法排序
分数 20
作者 徐镜春单位 浙江大学
将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。
本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。
输入格式:
输入在第1行中给出N和K(1≤K<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔。
输出格式:
在一行中输出冒泡排序法扫描完第K遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。
输入样例:
6 22 3 5 1 6 4
输出样例:
2 1 3 4 5 6
#include int main(){int N,M;scanf("%d%d",&N,&M);int ar[N];for(int i=0;i<N;i++){scanf("%d",&ar[i]);}for(int i=0;i<M;i++){for(int j=0;jar[j+1]){int temp=ar[j];ar[j]=ar[j+1];ar[j+1]=temp;}}}printf("%d",ar[0]);for(int i=1;i<N;i++){printf(" %d",ar[i]);}}
68 猴子选大王
分数 25
作者 徐镜春单位 浙江大学
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?
输入格式:
输入在一行中给一个正整数N(≤1000)。
输出格式:
在一行中输出当选猴王的编号。
输入样例:
11
输出样例:
7
#includeint main(){int n;scanf("%d",&n);int a[n],i;for(i=0;i<n;i++)a[i]=1;int count=0,sum=0;while(1){for(i=0;i<n;i++){if(a[i]==0) continue;count++;if(count==3){a[i]=0;count=0;sum++;}}if(sum==n-1) break;}for(i=0;i<n;i++)if(a[i]==1) printf("%d",i+1);}
69 判断回文
分数 15
作者 张墨逸单位 兰州理工大学
输入一个以回车符为结束标志的字符串(少于80个字符),判断该字符串是否为回文。
回文就是字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。
输入格式:
输入一个以回车符为结束标志的字符串(少于80个字符)
输出格式:
为回文,输出yes; 非回文,输出no,注意输出的结果后面有回车符
输入样例:
abccba
输出样例:
yes
#includeint main(){char a[80];int i, n, falg=1;gets(a);i=strlen(a);for(n=0;n<i;n++){if(a[n]!=a[i-1])falg=0;i--;}if(falg==1)printf("yes");elseprintf("no");return 0;}
70 统计一行文本的单词个数
分数 15
作者 张彤彧单位 浙江大学
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
#include int main(){int count=0;//count用来计算单词数char ch;ch=getchar ();//首次输入,根据输入设置while循环的条件while(ch!='\n'){//单词计数循环,若非回车则执行循环if(ch!=' '){ //若为ch为非空格ch=getchar ();//则继续输入字符if (ch == ' '||ch=='\n') //对输入的下一个字符进行判断,如果下一个输入的字符是空格或者回车count++;//则可以确定这个单词已经结束,单词计数+1continue;//此时ch只可能是带着是空格或者回车的字符变量,把其中的值带给while进行下一轮输入条件判断}else if(ch == ' ') //若为空格,则继续输入下一个字符ch=getchar (); //while循环变量控制}printf("%d", count);return 0;}
71 字符串循环左移
分数 20
作者 白洪欢单位 浙江大学
输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:
在一行中输出循环左移N次后的字符串。
输入样例:
Hello World!2
输出样例:
llo World!He
#include int main(){int n,i,l;char s[1000];gets(s);scanf("%d",&n);l=strlen(s);for(i=0;i<n;i++)//前n项挪到最后去s[l+i]=s[i];for(i=n;i<=l+n;i++) //再把每一项前移即可 s[i-n]=s[i];for(i=0;i<l;i++)printf("%c",s[i]);return 0;}
72 二维数组求左下三角元素之和
分数 10
作者 时贵英单位 东北石油大学
求一个n*n(n<10)数组左下三角(包括主对角线)元素的和。
输入格式:
先输入n(n<10)值,然后再输入各个数组元素值。
输入样例:
21 23 4[回车]
输出格式:
输出左下三角(包括主对角线)全部元素的和。
输出样例:
8
#includeint main(){int n, i, j, a[10][10], sum;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}for(i=0;i<n;i++){for(j=0;j<=i;j++)sum+=a[i][j];}printf("%d",sum);return 0;}
73 方阵右上三角元素和
分数 10
作者 王跃萍单位 东北石油大学
求一个5×5数组右上三角(含对角线)元素的和。
输入格式:
输入5行5列的方阵,每行第一个数前没有空格,每行的每个数之间各有一个空格。
输出格式:
直接输出结果。没有其它任何附加字符。
输入样例:
1 2 4 5 81 4 7 4 11 2 3 6 95 6 9 8 47 5 3 6 8
输出样例:
74
#includeint main(){int i, j, a[5][5], sum=0;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);for(i=0;i<5;i++){for(j=i;j<5;j++)sum+=a[i][j];}printf("%d",sum);return 0;}
74 将下标为偶数的元素值赋值给数组n
分数 10
作者 王跃萍单位 东北石油大学
从键盘上输入10元素的值存入一维数组m中,然后将下标为(0. 2. 4. 6. 8)的元素值赋值给数组n,最后输出数组n的内容。
输入格式:
在一行中输入10个整数,数据之间各用一个空格间隔。
输出格式:
在一行中直接输出结果,每个数据输出占4列列宽。
输入样例:
1 4 7 8 5 2 6 9 3 1
输出样例:
1 7 5 6 3
#includeint main(){int i, j, m[10], n[10];for(i=0;i<10;i++){scanf("%d",&m[i]);}i=0;for(j=0;j<10;j++){if(j%2==0){n[i]=m[j];i++;}}for(i=0;i<5;i++)printf("%4d",n[i]);return 0;}
75 输出整数各位数字
分数 15
作者 颜晖单位 浙大城市学院
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。
输入格式:
输入在一行中给出一个长整型范围内的非负整数。
输出格式:
从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。
输入样例:
123456
输出样例:
1 2 3 4 5 6
#includeint main(){char c;do {scanf("%c", &c);if (!(c >= '0' && c = '0' && c <= '9') ;return 0;}
76 人民币兑换
分数 15
作者 林颖贤单位 浙江大学
1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,会有很多种兑换方案。请编写程序给出各种兑换方案。
输入格式:
输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照5分硬币从少到多排列的。
输出格式:
显示前n种方案中5分、2分、1分硬币各多少枚。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:如果全部方案不到n种,就顺序输出全部可能的方案。
输入样例:
5
输出样例:
1 46 532 42 563 38 594 34 625 30 65
#includeint main(){int i,j,k;int wu,er,san;int n;int t=0;scanf("%d",&n);for(i=1;i<=150/5;i++)//5分一个,150分就有30个 {for(j=1;j<=150/2;j++)//2分一个,150分就有75个 {for(k=1;k<=100;k++)//因为硬币不能多于100枚,所以1分的情况最多只有100个 {if(i*5+j*2+k==150 && i+j+k==100 && t<n)//题目要求说输出n种可能的方案,所以输入到n种就可以了 {printf("%d %d %d\n",i,j,k);t++;//每有一种方案就+1,最多n种 }}}}}
77 输出各位数字之和能被15整除的所有数
分数 10
作者 王跃萍单位 东北石油大学
输出100到1000之间的各位数字之和能被15整除的所有数,输出时每5个一行,每个数输出占4列列宽。
输出格式:
在每行中输出5的满足要求的数值,每个数输出占4列列宽。
输出样例:
159 168 177 186 195 249 258 267 276 285 294 339 348 357 366 375 384 393 429 438 447 456 465 474 483 492 519 528 537 546 555 564 573 582 591 609 618 627 636 645 654 663 672 681 690 708 717 726 735 744 753 762 771 780 807 816 825 834 843 852 861 870 906 915 924 933 942 951 960
#includeint main(){int i, a, b, c, count=0;for(i=100;i<=1000;i++){a=i/100;b=(i%100)/10;c=i%10;if((a+b+c)%15==0){printf("%4d",i);count++;}if(count==5){printf("\n");count=0;}}return 0;}
78 剥洋葱
分数 15
作者 qdu_zhangzhimei单位 青岛大学
布告,布告!
应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。
那废话不多说,我们来说要求的图形
AAAAA
ABBBA
ABCBA
ABBBA
AAAAA
就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。
输入格式:
一行,一个整数,即图形的层数
输出格式:
如上述图形
输入样例:
3
输出样例:
AAAAAABBBAABCBAABBBAAAAAA
#includeint main(){int a,b,d,e,g;char c1='A';//首字母为’A‘ 。 scanf("%d",&a);d=2*a-1;//计算每层有多少个字母。 for(int c=0;c<=a-1;c++) //输出上层数 {for(b=0;b<c;b++){printf("%c",c1+b); //输出外层边界 }for(e=1;e<d-(2*c);e++)//输出内部字母 {printf("%c",c1+c);}for(g=d-c;g=0;c--)//输出下层 数 {for(b=0;b<c;b++)//输出外层边界 {printf("%c",c1+b); }for(e=1;e<d-(2*c);e++)//输出内部字母 {printf("%c",c1+c);}for(g=d-c;g<=d;g++)//输出 外层边界{printf("%c",c1+d-g);}printf("\n");}}
79 大于m的最小素数
分数 10
作者 王跃萍单位 东北石油大学
编程求出大于m的最小素数。
输入格式:
直接输入一个正整数
输出格式:
直接输出结果,没有任何附加格式控制。
输入样例:
12
输出样例:
13
#include #include void main (){int m,i,k=0,x;scanf ("%d",&m);for (i=m+1;k==0;i++){for (x=2;xsqrt(i)){k=1;printf ("%d",i); }}}
80 1/(1+2+3+...+n)
分数 10
作者 王跃萍单位 浙江大学
输入n,然后求下列表达式的值。
输入格式:
直接输入一个正整数。没有其它任何附加字符
输出格式:
直接输出保留6位小数的实型结果。没有其它任何附加字符。
输入样例:
10
输出样例:
1.818182
#includedouble fun(int n){ double m = 0;if (n == 1) return 1.0;for (int i = 1; i <= n; i++) { m += i;}return 1 / m + fun(n - 1);}void main(){int n; double sum, m;scanf("%d",&n);sum= fun(n);printf("%lf",sum);}