洛谷-【入门4】数组

tech2022-08-30  103

P1428 小鱼比可爱

题目描述 人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

输入格式 第一行输入一个整数 nn,表示鱼的数目。

第二行内输入 nn 个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。

输出格式 行内输出 nn 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。

输入输出样例 输入 6 4 3 0 5 1 2 输出 0 0 0 3 1 2

说明/提示 对于 100%100% 的数据,n\leq 100n≤100。

#include <stdio.h> int main() { int a,i,j,sum=0; scanf("%d",&a); int b[a]; for(i=0;i<a;i++) { scanf("%d",&b[i]); if(i>0) { for(j=0;j<i;j++) { if(b[i]>b[j]) sum++; } } printf("%d ",sum); sum=0; } return 0; }

出错点:

里面那个for循环条件中的i写错为a输出的格式中的空格加错了位置,本应加在%d后面结果却加到了sum后面漏了倒数第四行的sum=0.

P1427 小鱼的数字游戏

题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 ai(长度不一定,以 0 结束),记住了然后反着念出来(表示结束的数字 0 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

输入格式 一行内输入一串整数,以 0 结束,以空格间隔。

输出格式 一行内倒着输出这一串整数,以空格间隔。

输入输出样例 输入 3 65 23 5 34 1 30 0 输出 30 1 34 5 23 65 3

#include <stdio.h> int main() { int a[100]={0},i=0,j=0; do { scanf("%d",&a[i]); i++; }while(a[i-1]!=0); j=i-2; for(;j>=0;j--) { printf("%d ",a[j]); } return 0; }

P5727 【深基5.例3】冰雹猜想

#include <stdio.h> int main() { int n,i,a[1000]; scanf("%d",&n); if(n==1) printf("1"); else { a[0]=n; for(i=1;;i++) { if(n%2==0) n=n/2; else n=3*n+1; a[i]=n; if(a[i]==1) break; } for(;i>=0;i--) { printf("%d ",a[i]); } } }

出错点:

n==1时应直接输出1a[100]不够大,a[1000]更合适

P5728 【深基5.例5】旗鼓相当的对手

题目描述 现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。

输入格式 第一行一个正整数 N。

接下来 NN 行,每行三个整数,其中第 i 行表示第 i 名同学的语文、数学、英语成绩。最先读入的同学编号为 1。

输出格式 输出一个个整数,表示“旗鼓相当的对手”的对数。

输入输出样例 输入 3 90 90 90 85 95 90 80 100 91 输出 2

#include <stdio.h> #include<math.h> int main() { int n,i,j,k,sum=0,sum1=0,sum2=0,count=0; scanf("%d",&n); int a[n][3]; for(i=0;i<n;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { for(k=0;k<3;k++) { if(abs(a[i][k]-a[j][k])<=5) sum++; sum1=sum1+a[i][k]; sum2=sum2+a[j][k]; } if(abs(sum1-sum2)<=10) sum++; if(sum==4) count++; sum=0;sum1=0;sum2=0; } } printf("%d",count); return 0; }

注意点:

使用绝对值要用<math.h>第一个嵌套循环j<3sum,sum1,sum2在比较过后都要归零

P1554 梦中的统计

#include<stdio.h> int main() { int m,n,i,a,sum[10]={0},j; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) { j=i; while(j>0) { a=j%10; sum[a]++; j=j/10; } } for(i=0;i<10;i++) { printf("%d ",sum[i]); } return 0; }

出错点:

数组sum的长度不够 sum【10】长度为10,0-9
最新回复(0)