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,' ');
              else
                printf("%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;
 } 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将PDF文件转换为Word格式?推荐PDF转换工具

pdf转word格式可以帮助我们对文档的格式进行调整和排版&#xff0c;有时候&#xff0c;pdd文件的排版可能不符合我们的需求&#xff0c;或者需要进行一些样式和布局的调整。通过将PDF转word&#xff0c;我们可以轻松地修改字体、样式、段落间距等&#xff0c;使文档符合我们的要…

logstack 日志技术栈-02-ELK 的缺点?loki 更轻量的解决方案?

ELK/EFK日志系统 如果今天谈论到要部署一套日志系统&#xff0c;相信用户首先会想到的就是经典的ELK架构&#xff0c;或者现在被称为Elastic Stack。 Elastic Stack架构为Elasticsearch Logstash Kibana Beats的组合&#xff0c;其中&#xff0c;Beats负责日志的采集&…

【kali后续配置】Kali Linux 换源更新及配置SSH服务一文通(一键换源脚本)

在前面&#xff0c;我们已经下载并安装了Kali Linux 2023版本&#xff0c;因为一些事情的耽误&#xff0c;后面的一些操作教程没有发出来&#xff0c;今天给大家补上。 Kali Linux安装 前置准备&#xff1a; VMware安装kali Linux 镜像下载 kali源 官方源 deb http://htt…

构建高效外卖系统:技术实践与代码示例

外卖系统在现代社会中扮演着重要的角色&#xff0c;为用户提供了便捷的用餐解决方案。在这篇文章中&#xff0c;我们将探讨构建高效外卖系统的技术实践&#xff0c;同时提供一些基础的代码示例&#xff0c;帮助开发者更好地理解和应用这些技术。 1. 技术栈选择 构建外卖系统…

基于CNN卷积神经网络的minst数据库手写字识别

一、理论基础 卷积神经网络&#xff08;Convolutional Neural Networks, CNN&#xff09;是一类包含卷积计算且具有深度结构的前馈神经网络&#xff08;Feedforward Neural Networks&#xff09;&#xff0c;是深度学习&#xff08;deep learning&#xff09;的代表算法之一。…

【数据结构】常见八大排序算法总结

目录 前言 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 6.1Hoare版本 6.2挖坑法 6.3前后指针法 6.4快速排序的递归实现 6.5快速排序的非递归实现 7.归并排序 8.计数排序&#xff08;非比较排序&#xff09; 9.补充:基数排序 10.总结…

Web3解密:区块链技术如何颠覆传统互联网

随着区块链技术的崛起&#xff0c;Web3正逐渐成为新一代互联网的代名词。它不再依赖中心化的权威机构&#xff0c;而是通过去中心化、透明、安全的特性&#xff0c;为用户带来更为开放和公正的互联网体验。本文将深入解密Web3&#xff0c;揭示区块链技术如何颠覆传统互联网的基…

新品发布 | 多通道总线记录仪TLog1004,是你期待的吗?

新品发布 2024年1月12日&#xff0c;同星智能又发布一款多通道 CAN &#xff08;FD&#xff09;总线、LIN 总线接口logger设备&#xff0c;此款产品在TLog1002基础上进行了升级&#xff0c;同时内置 3 路数字输入和 2 路数字输出&#xff0c;便于多种信号测量和系统集成。可以满…

Python + Selenium —— 网页元素定位之Xpath定位!

前面讲的定位方式&#xff0c;都能够很方便的定位到网页元素。但是这些属性并非所有的网页元素都具备&#xff0c;可以这么说&#xff0c;绝大部分情况下都很难保证元素具备这些属性。 也就是很多时候需要使用其他的方式来定位&#xff0c;在 WebDriver 中提供了 Xpath 和 Css…

【Linux】进程间通信——system V 共享内存、消息队列、信号量

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 写在前面1. 共享内存1.1 共享内存的概念1.2 共享内存的原理1.3 共享内存的使用1.3.1 …

Linux/Traceback

Enumeration nmap 使用nmap初步扫描发现只开放了22和80端口&#xff0c;端口详细扫描情况如下 先看看web是什么样子的&#xff0c;打开网站发现有一条留言&#xff0c;显示该站点已经被黑了&#xff0c; 并且留下了后门 查看源代码&#xff0c;可以看到下面的注释 <!--So…

(C语言)编译和链接

前言͟͟͞͞&#x1f48c;&#xff1a;对于现在的各种编译器而言许多都是好多个功能的集成&#xff0c;那么我们的代码到底是如何去实现的呢&#xff1f;难道我们的计算机可以直接读懂我们所写的代码&#xff0c;并运行吗&#xff1f;对于很多细心的小伙伴们可能会想这样的问题…

Arduino开发实例-INA219 电流传感器驱动

INA219 电流传感器驱动 文章目录 INA219 电流传感器驱动1、INA219 电流传感器介绍2、硬件准备及接线3、代码实现1、INA219 电流传感器介绍 INA219 模块用于同时测量电流和电压。 该模块使用 I2C 通信传输电压和电流数据。 其他特性: 测量精度:1%最大测量电压:26V最大测量电…

解决小程序字体在最左上角问题

问题如下 原因&#xff1a; 出现这种现象的原因是项目默认开启了Skyline渲染模式&#xff0c;因为Skyline渲染模式不支持原生导航栏&#xff0c;所以在json文件中设置的导航栏失效&#xff0c;文字就会向上移动&#xff0c;如果想要使用原生的导航栏&#xff0c;可以将app.jso…

C#,入门教程(20)——列表(List)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(19)——循环语句&#xff08;for&#xff0c;while&#xff0c;foreach&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/124060844 List顾名思义就是数据列表&#xff0c;区别于数据数组&#xff08;arr…

centos7安装Redis7.2.4

文章目录 下载Redis解压Redis安装gcc依赖&#xff08;Redis是C语言编写的&#xff0c;编译需要&#xff09;编译安装src目录下二进制文件安装到/usr/local/bin修改redis.conf文件启动redis服务外部连接测试 参考&#xff1a; 在centos中安装redis-5.0.7 Memory overcommit must…

基于JavaWeb+SSM+Vue停车场微信小程序系统的设计和实现

基于JavaWebSSMVue停车场微信小程序系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关…

Linux命令手册

简介 Multics&#xff08;大而全&#xff09;项目失败&#xff0c;吸取教训启动Unix&#xff08;小而精&#xff09;&#xff0c;Linus Benedict Torvalds受Unix启发开发初始版本Linux内核&#xff0c;Git也由其开发&#xff0c;目的是为了更好的管理Linux内核开发。Unix是商业…

有线桥接|Wifi隔了一堵墙就没信号?房间的网线口利用起来,让房间死角也有网!

前言 本篇文章是路由器有线桥接主路由&#xff0c;起到AP&#xff08;热点&#xff09;的效果 上次发布的无线桥接&#xff0c;使用的前提是需要把旧路由放置在主路由的信号范围内&#xff0c;这极大限制了桥接路由器的放置位置。 如果隔了一堵墙基本上就无法连接Wifi&#x…

供应链安全项目in-toto开源框架详解

引言&#xff1a;in-toto 是一个开源框架&#xff0c;能够以密码学的方式验证构件生产路径上的每个组件和步骤。它可与主流的构建工具、部署工具进行集成。in-toto已经被CNCF技术监督委员会 (Technical Oversight Committee&#xff0c;TOC)接纳为CNCF孵化项目。 1. 背景 由于…