PTA數據結構第一次作業


 

7-1 統計學生平均成績與及格人數 15

本題要求編寫程序,計算學生們的平均成績,並統計及格(成績不低於60分)的人數。題目保證輸入與輸出均在整型范圍內。

輸入格式:

輸入在第一行中給出非負整數N,即學生人數。第二行給出N個非負整數,即這N位學生的成績,其間以空格分隔。

輸出格式:

按照以下格式輸出:

average = 成績均值 count = 及格人數 

其中平均值精確到小數點后一位。

輸入樣例:

5 77 54 92 73 60 

輸出樣例:

average = 71.2 count = 4 
#include<stdio.h>
int main()
{
  int N,ia,count,sum,i;
  float average;
  scanf("%d",&N);
  sum=0;
  count=0;
  average=0;
  for(i=0;i<N;i++)
  {
    scanf("%d",&ia);
    sum=sum+ia;
    if(ia>=60)
    {
      count++;
    }
  }
  if(N==0)
  {
    printf("average = 0.0\n");
  }
  else if(N>0)
  {
    average=sum/(float)N;
    printf("average = %.1f\n",average);
  }
  printf("count = %d\n",count);
  return 0;
}

7-2 統計字符 15

本題要求編寫程序,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數。

輸入格式:

輸入為10個字符。最后一個回車表示輸入結束,不算在內。

輸出格式:

在一行內按照

letter = 英文字母個數, blank = 空格或回車個數, digit = 數字字符個數, other = 其他字符個數 

的格式輸出。

輸入樣例:

aZ & 09 Az 

輸出樣例:

letter = 4, blank = 3, digit = 2, other = 1 
#include<stdio.h>
int main()
{
  char str[10];
    int i=0,letter=0,blank=0,digit=0,other=0;
    while(i<10)
    {
      str[i++]=getchar();
    }
    for(i=0;i<10;i++)
    {
        if(str[i]==' ')
        {
          blank++;
        }
        else if(str[i]=='\n')
        {
          blank++;
        }
        else if(str[i]>='0'&&str[i]<='9')
        {
          digit++;
        }
        else if(str[i]>='A'&&str[i]<='Z')
        {
          letter++;
        }
        else if(str[i]>='a'&&str[i]<='z')
        {
          letter++;
        }
        else 
        {
          other++;
        }
    }
  printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
  return 0;
}

7-3 跟奧巴馬一起畫方塊 15

美國總統奧巴馬不僅呼吁所有人都學習編程,甚至以身作則編寫代碼,成為美國歷史上首位編寫計算機代碼的總統。2014年底,為慶祝“計算機科學教育周”正式啟動,奧巴馬編寫了很簡單的計算機代碼:在屏幕上畫一個正方形。現在你也跟他一起畫吧!

輸入格式:

輸入在一行中給出正方形邊長N3N21)和組成正方形邊的某種字符C,間隔一個空格。

輸出格式:

輸出由給定字符C畫出的正方形。但是注意到行間距比列間距大,所以為了讓結果看上去更像正方形,我們輸出的行數實際上是列數的50%(四舍五入取整)。

輸入樣例:

10 a 

輸出樣例:

aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa 
#include<stdio.h>
int main()
{
  int i,j;
  int n;
  char c;
  scanf("%d",&n);
  getchar();
  scanf("%c",&c);
  for(i=1;i<=(int)n/2.0+0.5;i++)
  {  for(j=1;j<=n;j++)
    {
      printf("%c",c);
    }
  printf("\n");
  }
  return 0;
}

7-4 特殊a串數列求和 20

給定兩個均不超過9的正整數an,要求編寫程序求a+aa+aaa+++aaana)之和。

輸入格式:

輸入在一行中給出不超過9的正整數an

輸出格式:

在一行中按照“s = 對應的和”的格式輸出。

輸入樣例:

2 3 

輸出樣例:

s = 246 
#include<stdio.h>
int main()
{
    int i=0,s=0,a,tmp=0,n;
    scanf("%d %d",&a,&n);
    tmp = a;
    for(i = 0; i < n; i++)
    {
        s+=tmp;
        tmp=tmp*10+a;
    }
    printf("s = %d\n",s);
    return 0;
}

 

7-5 統計素數並求和 20

本題要求統計給定整數MN區間內素數的個數並對它們求和。

輸入格式:

輸入在一行中給出兩個正整數MN1MN500)。

輸出格式:

在一行中順序輸出MN區間內素數的個數以及它們的和,數字間以空格分隔。

輸入樣例:

10 31 

輸出樣例:

7 143 
#include<stdio.h>
int fun(int i)
{
    int j;
    if(i<=0)
    {
      return -1;
    }
    else if(i<2)
    {
      return 1;
    }
    else
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
            {
                return 1;
            }
        }
        return 0;
    }
}
int main()
{
  int M,N,i,j,s,n;
  s=0;
  n=0;
  scanf("%d %d",&M,&N);
  if(M==N)
  {
    i=M;
    if(fun(i)==0)
    {
        n=1;
        s=M;
    }
    else if(fun(i)==1)
    {
        n=0;
        s=0;
    }
  }
  else if(M!=N)
  {
    for(i=M;i<=N;i++)
    {
        if(fun(i)==0)
        {
            n++;
            s=s+i;
        }
    }
  }
  printf("%d %d\n",n,s);
  return 0;
}

7-6 循環的統計 15

在牆角堆放着一堆完全相同的正方體小木塊,從上往下數起,第一層是1塊,第二層是3塊,第三層是6塊…… 因為木塊堆得實在是太有規律了,你只要知道它的層數就可以計算所有木塊的數量了。

輸入格式:

只有一個整數 n ,表示這堆小木塊的層數,已知1 <= n <= 100 。

輸出格式:

只有一個整數,表示這堆小木塊的總數量。

輸入樣例:

5 

輸出樣例:

35 
#include<stdio.h>
int sum(int i);
int main()
{
  int n,i,s=0;
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
    s=s+sum(i);
  }
  printf("%d\n",s);
  return  0;
}
int sum(int i)
{
    if(i==1)
    {
        return 1;
    }
    else
    {
    return  i+sum(i-1);
    }
}

7-7 求n以內最大的k個素數以及它們的和 20

本題要求計算並輸出不超過n的最大的k個素數以及它們的和。

輸入格式:

輸入在一行中給出n(10n10000)和k(1k10)的值。

輸出格式:

在一行中按下列格式輸出:

素數1+素數2+…+素數k=總和值 

其中素數按遞減順序輸出。若n以內不夠k個素數,則按實際個數輸出。

輸入樣例1:

1000 10 

輸出樣例1:

997+991+983+977+971+967+953+947+941+937=9664 

輸入樣例2:

12 6 

輸出樣例2:

11+7+5+3+2=28 
#include<stdio.h> 
int fun(int n)
{
    int i;
    if(n<=0)
    {
      return -1;
    }
    else if(n<2)
    {
      return 1;
    }
    else
    {
        for(i=2;i<n;i++)
        {
            if(n%i==0)
                  {
                return 1;
                  }
        }
        return 0;
    }
}
int main()
{
    int i,sum=0,n,k;
    scanf("%d %d",&n,&k);
    for(i=n;i>1 && k>0;i--)
    {
        if(fun(i)==0)
        {
            printf("%d",i);
            sum+=i;
            k--;
            if(k!=0&&i>2)
            {
                printf("+");
            }
            else
            {
                printf("=%d",sum);
                break;
            }
        }
    }
    return 0;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM