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.mzph.cn/news/636528.shtml

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

相关文章

软考系分之计算机网络通信方向、同步和交换

文章目录 1、概述2、通信方向和同步3、交换方式4、总结 1、概述 本篇依旧是一图概括主要考察的知识点&#xff0c;包括通信方向&#xff08;单工、半双工、全双工&#xff09;&#xff0c;同步方式和数据交换等。 2、通信方向和同步 通信方向&#xff08;单工、半双工、全双工…

【react】创建react项目+项目结构

使用create-react-app快速搭建开发环境 create-react-app是一个快速创建React开发环境的工具&#xff0c;底层由Webpack构建&#xff0c;封装了配置细节 npx create-react-app react_hm执行命令后开始创建 创建好执行cd react_hm npm start 当看到webpack compiled successfu…

spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构

spring boot shardingsphere mybatis-plus druid mysql 搭建mysql数据库读写分离架构 ##关于window mysql主从搭建简单教程 传送门 window mysql5.7 搭建主从同步环境-CSDN博客 ##父pom.xml <?xml version"1.0" encoding"UTF-8"?> <project…

傲空间私有部署Windows指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。 Docker Desktop for Windows…

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

MySQL主从集群

MySQL主从集群 主从模式、集群模式&#xff0c;都是在一个项目中使用多个mysql节点进行存储和读取数据。 当单机模式部署&#xff0c;不满足安全性、高可用、高并发等需求的时候&#xff0c;就需要考虑主从模式或者集群模式部署。 什么是主从模式&#xff1f; 主从模式&…

[3D]菜板上的鱼

本来想画条鲨鱼&#xff0c;结果成了条菜板上的鱼。 VS&#xff01; ** VS&#xff01; ** 【扭曲】更像菜板上的鱼了。

[C#]winform部署openvino官方提供的人脸检测模型

【官方框架地址】 https://github.com/sdcb/OpenVINO.NET 【框架介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是一个由Intel推出的&#xff0c;针对计算机视觉和机器学习任务的开源工具套件。通过优化神经网络&#xff…

C++设计模式之 模板方法模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是模板方法模式&#xff08;第18种设计模式&#xff09; 模板方法模式&#xff0…

【MySQL】——关系数据库标准语言SQL(大纲)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

51单片机8*8点阵屏

8*8点阵屏 8*8点阵屏是一种LED显示屏&#xff0c;它由8行和8列的LED灯组成。每个LED灯的开闭状态都可以独立控制&#xff0c;从而可以显示出数字、字母、符号、图形等信息。 8*8点阵屏的原理是通过行列扫描的方式&#xff0c;控制LED灯的亮灭&#xff0c;从而显示出所需的图案或…

多线程编程常见面试题讲解(锁策略,CAS策略,synchronized原理,JUC组件,集合类)

&#x1f495;"跑起来就有意义"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;多线程编程常见面试题讲解 hello各位朋友们,最近笔者刚刚结束了学校的期末考试,现在回来继续更新啦!!! 今天要学习的是多线程常见面试题讲解,这些内容都是面试中常考的…

在k8s上部署ClickHouse

概述 clickhouse的容器化部署&#xff0c;已经有非常成熟的生态了。在一些互联网大厂也已经得到了大规模的应用。 clickhouse作为一款数据库&#xff0c;其容器化的主要难点在于它是有状态的服务&#xff0c;因此&#xff0c;我们需要配置PVC。 目前业界比较流行的部署方式有…

SaaS多租户篇

文章目录 1. 多租户是什么2. 技术组件2.1 如何实现多租户的DB封装2.2 如何实现多租户的redis封装2.3 如何实现多租户的Web和Security封装 1. 多租户是什么 2. 技术组件 2.1 如何实现多租户的DB封装 2.2 如何实现多租户的redis封装 2.3 如何实现多租户的Web和Security封装

数组、数组的删除添加、函数、返回值、匿名函数、回调函数

一、数组 概念&#xff1a;将多个元素按一定顺序排列放在一个集合中 创建数组&#xff08;两种&#xff09;&#xff1a; 字面量创建 构造函数创建 数组的长度&#xff08;length&#xff09;、类型 空数组 长度为0数组是object 引用类型 如何获取数组中单个元素 索引&…

react中数据不可变

先看官网 一、不可变数据的概念 不可变数据意味着数据一旦创建&#xff0c;就不能被更改。在React中&#xff0c;每次对数据的修改都会返回一个新的数据副本&#xff0c;而不会改变原始数据。这种方式确保了数据的稳定性和一致性。 二、Props中的不可变数据 在React中&#xf…

MeterSphere本地化部署实践

项目结构 搭建本地环境 安装JDK11&#xff0c;配置好JDK环境&#xff0c;系统同时支持JDK8和JDK11安装IEAD&#xff0c;配置JDK环境配置maven环境,IDEA配置(解压可以直接使用)无限重置IDEA试用期配置redis环境(解压可以直接使用) 配置kafka环境 安装mysql-5.7环境&#xff…

VBA自学日志

文章目录 前言一、For each 循环二、offset 偏移三、Resize 属性四、Exit 语句五、DO...LOOP语句六、一些错误代码总结七、GOTO语句八、do while 和 do until九、如何在VBA内使用Excel工作表函数十、VBA使用随机数十一、排序总结 前言 VBA自学成柴的第三周 一、For each 循环 …

1、中级机器学习课程简介

文章目录 1、课程简介2、先决条件 本课程所需数据集夸克网盘下载链接&#xff1a;https://pan.quark.cn/s/9b4e9a1246b2 提取码&#xff1a;uDzP 1、课程简介 欢迎来到机器学习中级课程&#xff01; 如果你对机器学习有一些基础&#xff0c;并且希望学习如何快速提高模型质量…

基于Yolov5+Deepsort+SlowFast算法实现视频目标识别、追踪与行为实时检测

前言 前段时间打算做一个目标行为检测的项目&#xff0c;翻阅了大量资料&#xff0c;也借鉴了不少项目&#xff0c;最终感觉Yolov5DeepsortSlowfast实现实时动作检测这个项目不错&#xff0c;因此进行了实现。 一、核心功能设计 总的来说&#xff0c;我们需要能够实现实时检测视…