> 文档中心 > 牛客网C语言语法篇练习之习题集(4)

牛客网C语言语法篇练习之习题集(4)

    

 

目录

1.箭形图案(控住输出这个图案)

 2.反斜线形图案(简单的输出一个斜线)

3.班级成绩输入输出(成绩输入,然后再输出成绩和成绩的和,两种方法来做一下)

4.矩阵元素定位(二维数组里面找数字)

5.  有序序列判断(数组排序)

6.有序序列插入一个整数(插入第三者)

7.序列中删除指定数字(删除第三者)

8. 序列中整数去重(找出真假,留真,去假)

9.筛选法求素数(就是加强版的找素数)

10. 最高身高(二维数组里面找最大的数)


时隔一周时间,我又开始刷题了(没错,我其实是偷懒了一周时间),现在牛客网语法篇大概还有70道题,这块刷完后,就去力扣上用Java再刷一些题

我认为刷题这件事,是学习途中很有必要的一件事,也值得坚持下去,

既提升自己的算法水平,更提高自己写代码的能力。

所以看到这里的小伙伴,如果你还没有开始刷题,请赶快开始刷题吧,

如果你已经开始刷题了,请继续坚持下去。

下面开始正文

1.箭形图案(控住输出这个图案)

链接  箭形图案_牛客题霸_牛客网 (nowcoder.com)

分析一下吧

上代码,自己看一下,和你想的一样不

#includeint main(){    int n = 0;    while(~scanf("%d",&n))    { int i=0,j=0; //上半部分 for(i=0;i<=n;i++) {     for(j=0;j<n-i;j++)     {  printf("  ");     }     for(j=0;j<=i;j++)     {  printf("*");     }     printf("\n"); } //下半部分for(i=0;i<n;i++){    for(j=0;j<=i;j++)    { printf("  ");    }    for(j=0;j<n-i;j++)    { printf("*");    }    printf("\n");}      }    return 0;}

 

 2.反斜线形图案(简单的输出一个斜线)

链接    反斜线形图案_牛客题霸_牛客网 (nowcoder.com)

 这道题不难,但我把这道题放在这里的原因是,

我写的虽然是正确的跑过去了,但在我看了别人的代码后,发现我写的代码有点长,

所以是想提醒大家,有时候做完题后可以看看别人代码,找找差距。

好了简单的看一下解析和代码吧

#includeint main(){    int n = 0;    while (~scanf("%d", &n))    { int i = 0, j = 0; for (i = 1; i <= n; i++) {     for (j = 1; j <= i; j++)     {  if (j != 1)  {printf(" ");  }  if (i == j)  {      printf("*\n");  }     } }    }    return 0;}

 

3.班级成绩输入输出(成绩输入,然后再输出成绩和成绩的和,两种方法来做一下

链接     班级成绩输入输出_牛客题霸_牛客网 (nowcoder.com)

 

 下面先看第一个方法


 

 4.矩阵元素定位(二维数组里面找数字)

链接   矩阵元素定位_牛客题霸_牛客网 (nowcoder.com)

 

 

#includeint main(){    int n,m,x,y;    int arr[15][15]={0};    scanf("%d %d\n",&n,&m);    for(int i=0;i<n;i++)    { for(int j=0;j<m;j++) {     scanf("%d ",&arr[i][j]); }    }    scanf("%d %d",&x,&y);    printf("%d",arr[x-1][y-1]);    return 0;}

 

5.  有序序列判断(数组排序)

链接   有序序列判断_牛客题霸_牛客网 (nowcoder.com)

 分析一下

 

#includeint main(){    int n = 0,flag1=0,flag2=0;    scanf("%d",&n);    int a[50]={0};    for(int i=0;i0) {     if(a[i-1]>a[i]){  flag1 = 1;     }else if(a[i-1]<a[i]){  flag2 = 1;     } }    }    if(flag1&&flag2){ printf("unsorted\n");    }else{ printf("sorted\n");    }    return 0;}

 

6.有序序列插入一个整数(插入第三者)

链接      有序序列插入一个整数_牛客题霸_牛客网 (nowcoder.com)

 

 

#includeint main(){    int n,i,a,j;    int arr[50] = { 0 };    scanf("%d", &n);    for (i = 1; i <= n; i++)    { scanf("%d", &arr[i]);    }    scanf("%d", &a);    for (i = 1; i <= n + 1; i++)    { if (a < arr[i]||i==n+1) {     for (j = 0; j < i; j++) {  arr[j] = arr[j + 1];     }     arr[i-1] = a;     break; }    }    for (i = 0; i <= n; i++) { printf("%d ", arr[i]);    }    return 0;}

 

7.序列中删除指定数字(删除第三者)

链接     序列中删除指定数字_牛客题霸_牛客网 (nowcoder.com)

 简单分析一下

 看代码,和你想的一样不,哪里有区别

#includeint main(){    int n,i,a,j;    int arr[50] = { 0 };    scanf("%d", &n);    for (i = 0; i < n; i++)    { scanf("%d", &arr[i]);    }    scanf("%d", &a);    for (i = 0; i < n; i++)    { if (arr[i] != a) {    printf("%d ",arr[i]); }else{     arr[i]=arr[i+1]; }    }    return 0;}

 

8. 序列中整数去重(找出真假,留真,去假)

链接    序列中整数去重_牛客题霸_牛客网 (nowcoder.com)

 分析一下

 上代码

#includeint main(){    int n =0,i=0,j=0;    //输出    scanf("%d",&n);    int arr[5000]={0};    for(i=0;i<n;i++)    { scanf("%d ",&arr[i]);    }    //去重    for(i=0;i<n;i++)    { for(j=i+1;j<n;j++) {     if(arr[i]==arr[j])     {//删除  for(int k=j;k<n-1;k++)  {      arr[k]=arr[k+1];  }  n--;  j--;     } }    }     //输出    for(i=0;i<n;i++)    { printf("%d ",arr[i]);    } return 0;}

 

9.筛选法求素数(就是加强版的找素数)

链接    ​​​​​​筛选法求素数_牛客题霸_牛客网 (nowcoder.com)

 分析一下

 上代码

#includeint main(){    int n = 0;    int arr[100] = {0};    //输入    while(scanf("%d",&n) != EOF)    { int i = 0,j = 0; for(i = 2 ; i <= n ; i++){     arr[i]=i; } //筛选 for(i=2 ; i<=n ; i++){     for(j=2 ; j<i ; j++){  if(i%j == 0){      arr[i]=0;  }     } }     int ret =0;     //输出     for(i=2;i<=n;i++){     if(arr[i] != 0){  printf("%d ",arr[i]);     }else{  ret++;     } }     printf("\n%d",ret);   }    return 0;}

 

10. 最高身高(二维数组里面找最大的数)

链接    最高身高_牛客题霸_牛客网 (nowcoder.com)

 分析一下

 上代码

#includeint main(){    int n = 0,m = 0;    scanf("%d %d",&n,&m);    int arr[10][10]={0};    int x=0,y=0,max=0;    for(int i=0;i<n;i++)    { for(int j=0;j<m;j++) {     scanf("%d ",&arr[i][j]);     if(max<arr[i][j])     {  x=i+1;  y=j+1;  max = arr[i][j];     } } }    printf("%d %d\n",x,y);    return 0;}