FaFu--练习复盘--1

1、输出图形及二维数组应用

1.1.输出图形

描述

        编写程序打印n行如下图形,其中1≤n≤500。

输入用例   

        7                           

输出用例 

具体实现

#include"stdio.h"
int main(){int n,i,j;scanf("%d",&n);for(i = 1; i<= n; i++){for (j = 1; j<= n-i; j++)printf(" ");for(j =1 ;j<=i; j++)printf("%c",'A'+(n-j)%26);for(j =1 ;j<=i-1; j++)printf("%c",'A'+(n+j-i)%26);printf("\n");}return 0;
}

  

1.2.旋转数字

描述

        编写程序打印n行如下菱形图形(1≤n≤99),图形有n行n列个整数,图形从第1行的中间开始,数字分别是1,2,……n*n-1,n*n,并且顺时针向中间转入,如果1个数据项宽度不足n*n位,用0补足到n*n位。

 输入用例

        7

输出用例

       

具体实现

#include "stdio.h"
const int N0 = 100;
struct Dir{int row,col;}dir[4] = {{1,1},{1,-1},{-1,-1},{-1,1}};int a[2*N0][2*N0] = {0};int main(){int n,i,j,m;scanf("%d",&n);int row,col,rowTest,colTest,d=0;row = 1;col = n;m = 0;i = n*n;while(i){i/=10;m++;}for(i = 1; i<= n*n; i++){a[row][col] = i;rowTest = row + dir[d].row;colTest = col + dir[d].col;if(rowTest < 1 || rowTest >= 2*n || colTest < 1 || colTest >= 2*n || a[rowTest][colTest] != 0){d = (d+1)%4;rowTest = row + dir[d].row;colTest = col + dir[d].col;}row = rowTest;col = colTest;}for( i = 1; i < 2*n ; i++){for (j = 1; j< 2*n; j++)if(i<=n && j<n+i || i>n && j<3*n-i){if(a[i][j] == 0)printf("%*c",m,' ');elseprintf("%0*d",m,a[i][j]);}printf("\n");        }return 0;
}

1.3求和

描述

        有1个n×n的矩阵,从左上到右下称为主斜线(倾角135º),从右上到左下称为次斜线(倾角45º),在主斜线上最大,次斜线上最小的元素称为该矩阵的斜线鞍点,求出该矩阵所有斜线鞍点的和。

        如5×5的矩阵:元素7为上面矩阵的一个斜线鞍点,元素10和19也是上面矩阵的斜线鞍点。

输入用例

5

3        2        5        98        10

44     12        1       12         8 

67     61        45      7         19 

12     21        33      56        3

35     36        78      98        19    

输出用例

36

具体实现

#include "stdio.h"
const int N0 = 105;
int a[N0][N0];
int n;
void readData(){int i,j;scanf("%d",&n);for(i =1 ; i<=n ; i++)for(j=1; j<=n; j++)scanf("%d",&a[i][j]);
}
bool masterMax(int i, int j){int p,q;for(p=1; p<=n ; p++)for(q=1; q<=n; q++)if(p-q == i-j && a[p][q] > a[i][j])return false;return true;
}
bool slaverMin(int i,int j){int p,q;for(p=1; p<=n ; p++)for(q=1; q<=n; q++)if(p+q == i+j && a[p][q] < a[i][j])return false;return true;
}
int main(){int i,j,total;readData();for(total = 0, i=1; i<=n; i++)for(j=1; j<=n; j++)if(masterMax(i,j) && slaverMin(i,j))total += a[i][j];printf("%d\n",total);return 0;
}

2、数组与结构体应用

 2.1.数组中的元素查找

描述

        一维数组a中有20个整数,编写程序在数组a中查找元素q,如果找到第一个等于q的元素,则输出该元素在数组中的下标;如果没找到则输出-1。

输入用例

5

3 21 5 98 44 12 64 7 66 96 76 67 61 2 13 16 9 78 56 69

输出用例

2

具体实现

#include <stdio.h>
#include<math.h>
int main (){int a[20];int i,q,flag=0;scanf("%d",&q);for (i=0;i<20;i++) scanf("%d",&a[i]);for(i=0;i<20;i++)if (a[i]==q){break;}	if (i<20) printf("%d",i);else printf("-1");return 0;} 

2.2.多重元素下标查找

描述

        一维数组a中有10个整数,编写程序在数组a中查找所有值等于q的元素,并输出这些元素在数组中的下标;如果没找到则输出-1。

输入用例

58

57 89 76 35 58 65 58 73 58 47

输出用例

4 6 8 

具体实现 

#include <stdio.h>
#include<math.h>
int main (){int a[10];int i,q,flag=0;scanf("%d",&q);for (i=0;i<10;i++) scanf("%d",&a[i]);for(i=0;i<10;i++)if (a[i]==q){printf("%d ",i);flag++;}	if (flag) ;//这有一个空语句else printf("-1");return 0;} 

2.3.极端偏差成绩查找

描述

        输入某班级n(0<n<100)个学生的成绩到数组a中,找出所有成绩中与平均值绝对偏差最大的学生成绩,并输出该学生的成绩。

输入用例

10

23 21 5 17 19 42 6 10 8 31

输出用例

42

#include <stdio.h>
#include<math.h>
int main ()
{int a[100];int i,n,c,k,sum=0,avg;scanf("%d",&n);for (i=0;i<n;i++) scanf("%d",&a[i]);for (i=0;i<n;i++) sum=sum+a[i];avg=sum/n;c=fabs(a[0]-avg);k=0;for (i=0;i<n;i++)if (fabs(a[i]-avg)>c){c=fabs(a[i]-avg);k=i;}printf("%d",a[k]);return 0;} 

2.4.学生成绩标准差计算 

描述

        输入某班级n(0<n<100)个学生的成绩到数组a中,编写程序求成绩的标准差,求标准差的公式如下:

        其中,表示学生的总平均成绩,表示第i个学生的成绩。 

输入用例

6

95 85 75 65 55 45

输出用例

18.708

具体实现

#include <stdio.h>
#include<math.h>
int main (){int a[100];int i,n,c,k;double st,sum=0,avg;scanf("%d",&n);for (i=0;i<n;i++) scanf("%d",&a[i]);for (i=0;i<n;i++) sum=sum+a[i];avg=sum/n;sum=0;for (i=0;i<n;i++){sum=sum+(a[i]-avg)*(a[i]-avg);}st=sqrt(sum/(n-1));printf("%.3lf",st);return 0;} 

2.5.次对角线元素求和

描述

        有一个5×5矩阵(即二维数组b),编写程序输出该矩阵次对角线上的所有元素之和。

输入用例

3          21        5        98        10

44        12        1        12        8

67        61        45      67        17

12        21        33      56        34

35        36        78      90        19

输出用例

123

具体实现

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

2.6.矩阵对角线区域调整

描述

        有一个5×5矩阵(即二维数组b),编写程序将矩阵的左下三角(含主对角线)各元素加10,右上三角各元素(不含主对角线)减10。

输入用例

13 21 55 98 47

12 18 19 67 61

89 80 36 78 10

89 87 67 80 12

12 33 88 57 70

输出用例 

23 11 45 88 37

22 28 9  57 51

99 90 46 68 0

99 97 77 90 2

22 43 98 67 80 

具体实现 

#include <stdio.h>
#include<math.h>
int main (){int b[5][5];int i,j;for(i=0;i<5;i++){for(j=0;j<5;j++){scanf("%d",&b[i][j]);if(i<j){b[i][j]-=10;}else{b[i][j]+=10;}printf("%d ",b[i][j]);}printf("\n");}return 0;} 

2.7.二维数组先列后行降序排序

 描述

        有一个n行m列(0<n<20,0<m<20)的整型二维数组b,编写程序对二维数组b[n][m]先按列降序排序,再按行降序排序。

输入用例

4 5

21  3   5   98   10

44 12  1   12    8

67 61 45  67   17

35 36 78  90    19

输出用例

98  78  67 61  19

90  45  44  36  17

67  35  12  10  5

21  12   8    3   1

具体实现 

#include <stdio.h>
int main (){int b[20][20];int n,m,i,j,k,temp;scanf("%d%d",&n,&m); for (i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&b[i][j]);for(k=0;k<m;k++)for(i=n-1;i>0;i--)for(j=0;j<i;j++)if(b[j][k]<b[j+1][k]){temp=b[j][k];b[j][k]=b[j+1][k];b[j+1][k]=temp;}for(k=0;k<n;k++)for(i=m-1;i>0;i--)for(j=0;j<i;j++)if(b[k][j]<b[k][j+1]){temp=b[k][j];b[k][j]=b[k][j+1];b[k][j+1]=temp;}for (i=0;i<n;i++){for(j=0;j<m;j++)printf("%d ",b[i][j]);printf("\n");}return 0;} 

2.8. 二维数组字符串升序排序

描述

        输入n个字符串(长度小于20)存入二维数组c中,编写程序对其进行排序(由小到大)并按次序输出。

输入用例

3

bcd

abd

abc

输出用例

abc

abd

bcd

具体实现

#include<stdio.h>
#include<string.h>
void myGets(char s[]){char ch;while((ch=getchar())!='\n' && ch!=EOF)*s++=ch;*s=0;
}
int main(){char c[20][20],temp[20];int n,i,j;scanf("%d",&n);getchar();for(i=0;i<n;i++)gets(c[i]);for(i=n-1;i>0;i--)for(j=0;j<i;j++)if(strcmp(c[j],c[j+1])>0){strcpy(temp,c[j]);strcpy(c[j],c[j+1]);strcpy(c[j+1],temp);}for(i=0;i<n;i++)puts(c[i]);return 0;  
}

2.9.删除小写字符形成新字符串

描述

        从键盘输入一个字符串s,删除其中所有的小写字符后形成一个新字符串,然后输出。

输入用例

www.163.com

输出用例

.163.

具体实现

#include <stdio.h>
#include <string.h>
int main (){char s[30];int i,j;gets(s);i=0;while (s[i]!='\0'){if(s[i]>='a' && s[i]<='z'){j=i;while (s[j]!='\0'){s[j]=s[j+1];j++;	}s[j-1]='\0';}else i++;}puts(s);	return 0;} 

2.10.恺撒密码加密 

描述

        朱迪斯·恺撒在其政府的秘密通信中使用恺撒密码进行信息加密,恺撒加密因而得其名。凯撒密码的基本思想是将待加密的信息(称为明文)中每个字母在字母表中向后移动常量key,得到加密信息(称为密文)。例如,假设字母表为小写英文字母表,key等于3,则对于明文computer systems将加密为frpsxwhu vbvwhpv。

输入用例

3

computer system

输出用例

frpsxwhu vbvwhpv

具体实现

#include <stdio.h>
#include <string.h>
int main (){char s[100]={0};int i,key;scanf("%d",&key);while(getchar()!='\n');gets(s); i=0;while (s[i]!='\0'){if ((s[i]>=65 && s[i]<=90)  ){s[i]=(s[i]+key-65)%26+65;}if (s[i]>=97 && s[i]<=122){s[i]=(s[i]+key-97)%26+97;	}i++;}puts(s);	return 0;} 

2.11.优秀学生信息输出

描述

        有n个学生,每个学生的数据包括学号、姓名和成绩,要求输出成绩优秀(大于等于90分)学生的信息(包括学号、姓名和整型成绩)。如果没有符合条件的,则输出“No”。

输入用例

3

1001 Make 86

1002 Linda 58

1003 Jone 90

输出用例

1003 Jone 90

具体实现 

#include <stdio.h>
#include <string.h>
int main (){struct student{int num;char name[10];int score;	};struct student stu[20];int n,i,flag=0;scanf("%d",&n);for (i=0;i<n;i++){scanf("%d%s",&stu[i].num,stu[i].name);scanf("%d",&stu[i].score);} for (i=0;i<n;i++)if (stu[i].score>=90){flag=1;printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].score);}if(flag==0) printf("No");return 0;} 

2.12.高分学生筛选输出

描述

        有n个学生,每个学生的数据包括学号、姓名和3门课程的成绩,要求输出平均成绩高于90分以上(包括90分)或全部课程成绩均在85分以上(包括85分)的学生信息(包括学号和姓名),如果没有符合条件的,则输出“No”。

输入用例

3

1001 Make 86 91 89

1002 Linda 78 78 80

1003 Jone 90  67 71

输出用例

1001 Make

具体实现

#include <stdio.h>
#include <string.h>
int main (){struct student{int num;char name[10];int score[3];float avg;};struct student stu[20];int n,i,sum,flag=0;scanf("%d",&n);for (i=0;i<n;i++){scanf("%d%s",&stu[i].num,stu[i].name);scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);} for (i=0;i<n;i++){stu[i].avg=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;if ((stu[i].avg>=90)||(stu[i].score[0]>=85 && stu[i].score[1]>=85 && stu[i].score[2]>=85)){flag=1;printf("%d %s\n",stu[i].num,stu[i].name);}}if(flag==0) printf("No");return 0;} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/415530.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql-实战案例 (超详细版)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

Linux粘滞位的理解,什么是粘滞位?

文章目录 前言如何理解&#xff1f;粘滞位的操作最后总结一下 前言 粘滞位&#xff08;Stickybit&#xff09;&#xff0c;或粘着位&#xff0c;是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位&#xff0c;如此以来&#xff0c;只有目录内文件的所有者或者root…

milkv-duo cvi-mmf 硬件加速 JPG 解码性能测试

前言 本文是基于 nihui 老师的 opencv-mobile 对其支持 milkv-duo cvi-mmf 硬件加速 JPG 解码的测试。 nihui 老师原文章如下&#xff1a;opencv-mobile 现已支持 milkv-duo cvi-mmf 硬件加速 JPG 解码 opencv-mobile 仓库地址如下&#xff1a;nihui/opencv-mobile: The minim…

小程序样例1:简单待办列表

基本功能&#xff1a; 显示所有待办列表&#xff08;点击不同的文本进行显示&#xff09; 没完成的待办 已完成的待办 新建待办test 清除待办foo 代码js文件&#xff1a; //index.js //获取应用实例 const app getApp(); Page({data: {todo: ,todos: [{"id": 1474…

操作教程|JumpServer堡垒机结合Ansible进行批量系统初始化

运维人员常常需要对资产进行系统初始化的操作&#xff0c;而初始化服务器又是一项繁琐的工作&#xff0c;需要花费运维人员大量的时间和精力。为了提高效率&#xff0c;许多组织会使用自动化工具和脚本来简化这些任务。自动化工具的运用可以大幅降低运维人员的工作量&#xff0…

64.Spring事件监听的核心机制是什么?

Spring事件监听的核心机制是什么? spring的事件监听有三个部分组成 事件(ApplicationEvent) 负责对应相应监听器 事件源发生某事件是特定事件监听器被触发的原因监听器(ApplicationListener) 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了事件发生后的响应…

力扣日记1.19-【二叉树篇】538. 把二叉搜索树转换为累加树

力扣日记&#xff1a;【二叉树篇】538. 把二叉搜索树转换为累加树 日期&#xff1a;2023.1.19 参考&#xff1a;代码随想录、力扣 ps&#xff1a;因为准备组会汇报又搁置了好久&#xff08;其实就是懒逃避T^T)&#xff0c;但这是最后一道二叉树啦啊啊啊&#xff01;&#xff01…

MS-DETR: Efficient DETR Training with Mixed Supervision论文学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2401.03989.pdf 代码地址&#xff08;中稿后开源&#xff09;&#xff1a;GitHub - Atten4Vis/MS-DETR: The official implementation for "MS-DETR: Efficient DETR Training with Mixed Supervision" 摘要 DETR 通过迭代…

100个实战项目——在树莓派4B+Ubuntu20.04桌面版配置下运行智能小车(一)

主机SSH远程链接从机 查看python版本 python 我的是python3.8 所以我需要安装pip3 sudo apt install python3-pip 接着安装程序需要的引脚库 sudo pip3 install RPi.GPIO 注意必须要有sudo&#xff0c;因为我是远程遥控的树莓派&#xff0c;没有权限运行程序&#xff0…

学习视频一些杂乱的东西

文章目录 ref获取dom元素监听深层的某个属性? 可选链操作符 和 ?? 双问号表达式v-slot 语法糖作用域插槽动态插槽 初始化数组骚操作数字滚动 -> gsapstyle妙招新奇的原型链 object.createB站笔记链接JS相关设计模式ajaxsvgvue3scsswebpack内存泄漏 ref获取dom元素 直接给…

黑马 Javaweb - MySQL 精华篇

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 知…

中小企业股权质押融资(下)

股权质押融资的主要风险 由于股权资产的特殊性&#xff0c;较固定资产抵押和质押、第三方担保等方式&#xff0c;股权质押融资风险易受企业经营状况等因素的影响&#xff0c;主要包括股权价值下跌的风险、股权质押的道德风险、股权处置风险以及现行法律不完善导致的法律风险。…