C语言部分编程题

1.输出学生成绩

#include<stdio.h>

int main(){

    int n;

    scanf("%d\n",&n);

    int i;

    double a[n],max,min,s=0,ave;

    for(i=0;i<n;i++){

        scanf("%lf",&a[i]);

        s+=a[i];

        if(i==0){

            max=a[i];

            min=a[i];

        }

        if(a[i]>max)

            max=a[i];

        if(a[i]<min)

            min=a[i];

    }

    ave=1.0*s/n;

    printf("average = %.2f\n",ave);

    printf("max = %.2f\n",max);

    printf("min = %.2f",min);

    return 0;

}

2.求幂之和

#include<stdio.h>

#include<math.h>

int main()

{int n,sum=0;

scanf("%d",&n);

for(int i=1;i<=n;i++)

{sum+=pow(2,i);

}

printf("result = %d",sum);

return 0;

}

3.近似求PI

#include <stdio.h>

int main()

{

    double eps;

    scanf("%le", &eps);

    double sum=1;

    double temp=1;

    for(int i=1;temp>eps;i++)

       {

        temp = temp*i/(2*i+1);

        sum += temp;

    }

    printf("PI = %.5f\n", 2*sum);

    return 0;

}

4. 本题要求计算并输出不超过n的最大的k个素数以及它们的和。

#include <stdio.h>

int main()

{

    int n,k,i,j,q=0,sum=0;

    scanf("%d%d",&n,&k);

    i=n;

    for(i;i>=2;i--)

    {

        int isprime =1;

        for(j=2;j<i-1;j++)

        {

            if(i%j==0){isprime=0;break;}

        }

        if(isprime==1)

        {

            sum+=i;

            if(q==0)printf("%d",i);

            else printf("+%d",i);

            q++;

        }

        if(q>=k||i==2)

        {

            printf("=%d",sum);

            break;

        }

    }

return 0;

}

5.出生年

#include <stdio.h>

#include<string.h>

int flag(int year , int n)

{

    int cnt=0 , i=3 , j;

    int flg=0;

    int a[4] = {0};//使不足四位的补0

    int b[10]={0};

  for(i=3;i>=0;i--){

        a[i] = year%10;//将年份的各个数字存到数组中去

        year/=10;

        b[a[i]]++;//计算年份中该数字出现的次数

    }

   for(i=0 ; i<10 ; i++){

    if(b[i]!=0){

        cnt++;//计算有几位数字相同

    }

   }

   if(cnt==n){

    flg=1;

   }

    return flg;

}

int main()

{

    int year , n , num = 0;

    scanf("%d%d" , &year , &n);

    while(flag(year , n)!=1)

    {

        year++;

        num++;

    }

    printf("%d %04d\n" , num , year);

    return 0;

}

1.判断奇偶性

int even( int n )

{

    if(n%2==0) //n为偶数

    {

        return 1;

    }

     return 0;//n为奇数

}

2.使用函数计算两点间的距离

double dist( double x1, double y1, double x2, double y2 ){

    double sum,Sum;

    sum=pow(x1-x2,2)+pow(y1-y2,2);

    Sum=sqrt(sum);

    return Sum; 

}

3. 使用函数输出一个整数的逆序数

int reverse( int number )

{

    int sum=0;//用来将number的每一个数字倒着加起来

    for(;number!=0;number/=10)//这里也可以用while语句

        sum=sum*10+number%10;//sum*10是为了将原本的数字往左推 

    return sum;

}

4. 统计各位数字之和是5的数

int is( int number )

{

    int gw=0,sw=0,bw=0,qw=0;

    int fi=0;

    gw=number%10;

    sw=number%100/10;

    bw=number/100%10;

    qw=number/1000;

    int num=gw+sw+bw+qw;

    if(num==5)

        fi=1;

    return fi;

}

void count_sum( int a, int b )

{

    int i=a;

    int count=0,sum=0;

    for(;i>=a&&i<=b;i++)

    {

        if(is(i))

        {

            count++;

            sum+=i;

        }

           

    }

    printf("count = %d, sum = %d",count,sum);

}

5. 使用递归函数计算1到n之和

int sum( int n )

{

    if (n <= 0)

        return 0;

    if (n == 1)

        return 1;

    else

        return n + sum(n - 1);

}

6. 使用函数的选择法排序

//选择排序

void sort( int a[], int n )

{

    int *p;

    p=a;

    int i,j,t;

    for(i=0;i<n-1;i++)

    {

        for(j=i+1;j<n;j++)

        {

            if( *(p+i)>*(p+j) )

            {

                t=*(p+i);

                *(p+i)=*(p+j);

                *(p+j)=t;

            }

        }

    }

}

//冒泡排序

void sort( int a[], int n )

{

    int *p;

    p=a;

    int i,j,t;

    for(i=0;i<n-1;i++)

    {

        for(j=0;j<n-1-i;j++)

        {

            if( *(p+j)>*(p+j+1) )

            {

                t=*(p+j);

                *(p+j)=*(p+j+1);

                *(p+j+1)=t;

            }

        }

    }

}

7. 递归计算P函数

double P( int n, double x ){

       if(n<=0){

              return 1;

       }else if(n==1){

              return x;

       }else{

              return ((2*n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n;

       }

}

8.比较大小

#include<stdio.h>

int main()

{

  int x,y,z,min;

  scanf("%d %d %d",&x,&y,&z);

 

  //将x位置存放xy中最小的那个

  if(x>y)

  {

      min = x;

      x = y;

      y = min;      

  }

  //将x位置存放xz中最小的那个

  if(x>z)

  {

      min = x;

      x = z;

      z = min;

  }

 

  //经过以上两步,x位置已经是三个数中最小的了,现在仅需将yz中小的那个放到y位置即可

  if(y>z)

  {

      min = y;

      y = z;

      z = min;

  }

   printf("%d->%d->%d",x,y,z);

  return 0;

}

//如果第一个if判断不成立,则直接进行下面x与z的比较

//如果二个if判断仍不成立,则直接进行下面y与z的比较

//如果三个if判断仍不成立,则直接输出

9.近似求PI

#include<stdio.h>

int main(){

    int i=1,j;

    double eps,pi=1,item=1.0;

   

    scanf("%le", &eps);

    while(item>=eps){

        item=1.0;

        for(j=1;j<=i;j++)

            item=item*j/(2*j+1);

        pi=pi+item;

        i++;

    }

    printf("PI = %.5lf",2*pi);

    return 0;

}

10. 最大公约数和最小公倍数

#include <stdio.h>

int main(void) //如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])

{

       int m,n,

              min,max;

       scanf("%d %d",&m,&n);  //    &

      

       if(m<n){

              min=m;

              max=n;

       }else{

              min=n;

              max=m;

       }

       if(min<=0){

              return 0;

       }

       //求最大公约数

       int i;

       for(i=min;i>0;i--){

              if(m%i==0&&n%i==0){

                     break;

              }

       }

       //求最小公倍数

       int j;

       for(j=max;;j++){

              if(j%m==0&&j%n==0){

                     break;

              }

       }

       printf("%d %d",i,j);   // \n

       return 0;

}

11.统计字符

#include<stdio.h>

int main(void)

{

    char ch;   //要判断字符所以定义char函数

    int n,letter,blank,digit,other;

    letter=blank=digit=other=0;

    n=0;

    for(n=1;n<=10;n++)   //总共输入十个字符所以循环十次

    {

        ch=getchar();

        if((ch>='A' && ch<='Z') || (ch>='a' && ch<='z'))   //当ch是字母时

        {

            letter=letter+1;

        }

        else if(ch==' ' || ch=='\n')   //当ch是回车或者空格时

        {

            blank=blank+1;

        }

        else if(ch>='0' && ch<='9')   //当ch是数字时

        {

            digit=digit+1;

        }

        else   //当ch是其余字符时

        {

            other=other+1;

        }

    }

    printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);

    return 0;

}

12.统计学生成绩

#include<stdio.h>

int main()

{

    int n;

    int score;

    int A, B, C, D, E;

    A = B = C = D = E = 0;

    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {

        scanf("%d", &score);

        if (score >= 90) { A++;}

        else if (score < 90 && score >= 80) { B++; }

        else if (score<80&& score>=70) { C++; }

        else if (score<70&& score>=60) { D++; }

        else if (score<60) { E++; }

    }

    printf("%d %d %d %d %d", A, B, C, D, E);

    return 0;

}

13.猴子吃桃问题

#include<stdio.h>

int main()

{

       int n;

       scanf("%d",&n);

       int i,s=1;

       for(i=2;i<=n;i++)

       {

              s=(s+1)*2;     

       }

       printf("%d",s);

       return 0;;

        

 }

14. 求最大值及其下标

#include <stdio.h>

int main(){

    int n;

    scanf("%d",&n);

    int a[10];

    for(int i=0;i<n;i++){

        scanf("%d",&a[i]);

    }

    int max=a[0],index=0;

    for(int j=0;j<n;j++){

        if(max<a[j]){

            max=a[j];

            index=j;

        }

    }

    printf("%d %d",max,index);

    return 0;

}

15. 将数组中的数逆序存放

#include <stdio.h>

int main(){

    int n,a[10];

    scanf("%d",&n);

    for(int i=n-1;i>=0;i--)

        scanf("%d",&a[i]);

    for(int j=0;j<n;j++){

        printf("%d",a[j]);

        if(j<n-1)

            printf(" ");

    }

    return 0;

}

16. 字符串逆序

#include <stdio.h>

int main(){

    char str[100];

    gets(str);

    int i;

    for(i=strlen(str)-1;i>=0;i--)

        printf("%c",str[i]);

    return 0;

}

17. 查找指定字符

#include <stdio.h>

int main(){

    char ch;

    scanf("%c",&ch);

    getchar();

    char str[100];

    gets(str);

    int index,isFound=0;

    for(int i=0;i<strlen(str)-1;i++){

        if(str[i]==ch){

            isFound=1;

            index=i;

        }

    }

    if(isFound==0){

        printf("Not Found");

    }else{

        printf("index = %d",index);

    }

    return 0;

}

18. 交换最小值和最大值

#include <stdio.h>

int main()

{

       int n,i,min,max,mi,ma,a[10];

       scanf("%d",&n);

       for(i=0;i<n;i++){

              scanf("%d",&a[i]);

       }

       min=a[0];

       max=a[0];

       for(i=0;i<n;i++){

              if(a[i]>max){

                     max=a[i];

              }

              if(a[i]<min){

                     min=a[i];

              }

       }

       int temp;

       for(i=0;i<n;i++){

              if(a[i]==max){

                     temp=a[n-1];

                     a[n-1]=max;

                     a[i]=temp;

              }

       }

       for(i=0;i<n;i++){

              if(min==a[i]){

                     temp=a[0];

                     a[0]=min;

                     a[i]=temp;

              }

       }

       for(i=0;i<n;i++){

              printf("%d ",a[i]);

       }

    return 0;

}

19. 统计一行文本的单词个数

#include <stdio.h>

int main(){

    int count=0;

    char ch;

    ch=getchar();

    while(ch!='\n'){

        if(ch!=' '){

            ch=getchar();

            if(ch==' '||ch=='\n')

                count++;

            continue;

        }

        else if(ch==' ')

            ch=getchar();

    }

    printf("%d",count);

    return 0;

}

20. 选择法排序

#include <stdio.h>

int main(){

    int n,a[10],i,j,t;

    scanf("%d",&n);

    for(i=0;i<n;i++)

        scanf("%d",&a[i]);

    for(i=0;i<n-1;i++){

        for(j=i+1;j<n;j++){

            if(a[j]>a[i]){

                t=a[j];

                a[j]=a[i];

                a[i]=t;

            }

        }

    }

    for(i=0;i<n;i++){

        printf("%d",a[i]);

        if(i<n-1)

            printf(" ");

    }

    return 0;

}

21. 冒泡法排序

#include <stdio.h>

int main(){

    int N,K,t;

    int i,j;

    int a[100];

    scanf("%d %d",&N,&K);

    for(i=0;i<N;i++)

        scanf("%d",&a[i]);

    for(i=0;i<K;i++){

        for(j=0;j<N-i-1;j++){

            if(a[j]>a[j+1]){

                t=a[j+1];

                a[j+1]=a[j];

                a[j]=t;

            }

        }

    }

    for(i=0;i<N-1;i++)

        printf("%d ",a[i]);

    printf("%d",a[N-1]);

    return 0;

}

22. 字符串字母大小写转换

#include <stdio.h>

int main(){

    char s[100];

    int i;

    gets(s);

    for(i=0;s[i]!='#';i++){

        if(s[i]>='A'&&s[i]<='Z')

            s[i]+=32;

        else if(s[i]>='a'&&s[i]<='z')

            s[i]-=32;

    }

    for(i=0;s[i]!='#';i++)

        printf("%c",s[i]);

    return 0;

}

23. 字符串替换

#include<stdio.h>

int main(){

    char ch,a[81];

    int i,j=0;

    ch=getchar();

    while(ch!='\n'){

        if(ch>='A'&&ch<='Z')

            ch='A'+'Z'-ch;

        a[j++]=ch;

        ch=getchar();

    }

    for(int k=0;k<j;k++)

        printf("%c",a[k]);

    return 0;

}

24.求矩阵各行元素之和

#include <stdio.h>

int main(){

    int m,n,i,j,sum;

    scanf("%d %d",&m,&n);

    int a[m][n];

    for(i=0;i<m;i++){

        for(j=0;j<n;j++){

            scanf("%d",&a[i][j]);

        }

    }

    for(i=0;i<m;i++){

       sum=0;

        for(j=0;j<n;j++){

            sum+=a[i][j];

        }

        printf("%d\n",&a[i][j]);

    }

    return 0;

}

25.求矩阵的局部最大值

#include<stdio.h>

int main(){

    int m,n,i,j,c=0;

    scanf("%d %d",&m,&n);

    int a[m][n];

//输入

    for(i=0;i<m;i++){

        for(j=0;j<n;j++)

            scanf("%d",&a[i][j]);

    }

//比较

    for(i=1;i<m-1;i++){

        for(j=1;j<n-1;j++)

            if(a[i][j]>a[i-1][j]&&a[i][j]>a[i+1][j]&&a[i][j]>a[i][j-1]&&a[i][j]>a[i][j+1])

            {c++;printf("%d %d %d\n",a[i][j],i+1,j+1);} //输出

    }

    if(c==0) printf("None %d %d",m,n);

    return 0;

}

26.打印杨辉三角

#include<stdio.h>

#include<math.h>

int main()

{

       int n,i,j,k;

       scanf("%d",&n);

       int str[n][n];

       for(i=0;i<n;i++)//先对最左列和对角线的元素赋值 1

       {

              str[i][0]=str[i][i]=1;

       }

       for(i=2;i<n;i++) //从第二列递推其他元素

       {

              for(j=1;j<i;j++)

              {

                     str[i][j]=str[i-1][j-1]+str[i-1][j];    

              }    

       }

       for(i=0;i<n;i++)

       {

              for(k=1;k<n-i;k++)

                     {

                            printf(" ");//按正三角形形式,打印空格

                     }

              for(j=0;j<=i;j++)

              {

                     printf("%4d",str[i][j]);

              }

              printf("\n");

       }

   return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值