当前位置: 首页 > news >正文

数组习题及答案

一维数组练习题

键盘录入一组数列,利用冒泡排序将数据由大到小排序

从键盘输入年、月、日,计算并输出该日是该年第几天

#include <stdio.h>int main(){int year,month,day;int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入年月日(yyyy-mm-dd):");scanf("%d-%d-%d",&year,&month,&day);if(year %4 == 0&&year %100 !=0 ||year%400 == 0) months[1] = 29;int sum = day;for(int i=0;i<month-1;i++) sum += months[i];printf("%d月%d日是%d年的第%d天\n",month,day,year,sum);return 0;}

键盘录入一组数列,求最大数、最小数、均值

#include <stdio.h>int main(){int n,temp;int sum = 0;printf("需要输入多少数据:"); scanf("%d",&n);int a[n];printf("输入数列:");for(int i = 0;i < n;i++) scanf("%d",&a[i]);printf("输入的数列:");for(int i = 0;i < n;i++){for(int j = 0;j < i;j++){if(a[j+1]<a[j])      //升序排序 {temp = a[j];a[j] = a[j+1];a[j+1] = temp; }}}for(int i = 0;i < n;i++){sum  += a[i];}int max = a [n-1];int min = a[0];double x = (double)sum/(double)n;printf("最大数%d,最小数%d,均值%d",max,min,x);return 0;} 

从键盘录入一组数列,判断是否是回文,举例:12321,abba,121

//方法一 #include <stdio.h> int main(){int n;int b = 0;int c = 0;int d = 1;while(d){int b = 0;int c = 0;printf("请输入数列的长度:");scanf("%d",&n);char a[n];printf("请输入数列:");for(int i=0;i<n;i++) scanf("%s",&a[i] );printf("数列为:");for(int i=0;i<n;i++) printf(" %c",a[i]);printf("\n");for(int i=0;i<n;i++){if(a[0+i]==a[n-1-i]) b++;} if(b == n)  c = 1;if(c){while(1){for(int i=0;i<n;i++) printf("%c",a[i]);printf("是回文数\n");break;} }else{for(int i=0;i<n;i++) printf("%c",a[i]);printf("不是回文数\n");}printf("是否退出(1继续/0退出):");scanf("%d",&d);}return 0;}​​​//方法二#include <stdio.h>int main(){int d = 1;int b,c;int n;while(d){b = 0;c = 0;printf("请输入将要输入的字符长度:");scanf("%d",&n);char a[n] ;printf("请输入数列:");scanf("%s",&a);printf("数列为:");printf("%s\n",a);int len =sizeof(a) / sizeof(a[0]);printf("数列长度为:%d\n",len);for(int i=0;i<len;i++){if(a[0+i]==a[len-1-i])  b++;} if(b == len)  c = 1;if(c){while(1){printf("%s",a);printf("是回文数\n");break;} }else{printf("%s",a);printf("不是回文数\n");}printf("是否退出(1继续/0退出):");scanf("%d",&d); }return 0;} //方法三 #include <stdio.h>//  #include <string.h>           memset(a,0, sizeof(a)); 将所有元素变为0达到清空效果 int main(){int d = 1;int b,c;int len = 0;int i = 0;char a[100] = {};while(d){b = 0;c = 0;len = 0;i = 0;char a[100] = {}; printf("请输入数列:");scanf("%s",a);printf("数列为:");printf("%s\n",a);while(a[i]!='\0'){i++;len++;}printf("数列长度为:%d\n",len);for(int i=0;i<len;i++){if(a[0+i]==a[len-1-i])  b++;} if(b == len)  c = 1;if(c){while(1){printf("%s",a);printf("是回文数\n");break;} }else{printf("%s",a);printf("不是回文数\n");}printf("是否退出(1继续/0退出):");scanf("%d",&d); }return 0;}

用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值

#include <stdio.h>int main(){int a[10],b;   //b为输入数 int c = 1;   // 用于判断输入是否非法的循环 int d = 1;   // 用于循环利用while(d){int c = 1;   // 用于判断输入是否非法的循环 printf("输入10个的整型数:");for(int i = 0;i < 10;i++) scanf("%d",&a[i]);printf("输入整型数为:");for(int i = 0;i < 10;i++) printf("%4d",a[i]);printf("\n");printf("输入要查找的数:");scanf("%d",&b);for(int i = 0;i < 10;i++){if(b==a[i]){printf("%d的在数组中的下标值为%d\n",b,i);c = 0; }}while(c){printf("%d为非法数据\n",b);break; }// 清空输入缓冲区所有字符while (getchar() != '\n');printf("是否继续判断(继续:1/结束:0):");scanf("%d",&d);} printf("判断结束");return 0;} 

通过键盘输入 10 个学员成绩: 1)输出不及格学员的成绩和下标。 2)求最高分的下标值 3)求最低成绩的下标值 4)求总成绩及平均成绩

#include <stdio.h>int main(){int a[10],temp;  //a为成绩数组,temp为中转值 int b[10];      //b用于备份a数组的数据,让其不影响原数组 int d = 1;   // 用于循环利用int flag = 0;    // 用于判断是否排序 while(d){printf("输入10个成绩:");for(int i = 0;i < 10;i++) scanf("%d",&a[i]);printf("输入成绩为:");for(int i = 0;i < 10;i++) printf("%4d",a[i]);printf("\n");for(int i = 0;i < 10;i++){if(a[i] < 60) printf("%d不及格,下标为%d\n",a[i],i); }for(int i = 0;i < 10;i++) b[i] = a[i] ;          //备份,利用for(int i = 0;i < 9;i++){for(int j = 0;j < 9-i;j++){if(b[j+1]<b[j])      //升序排序 {temp = b[j];b[j] = b[j+1];b[j+1] = temp;flag = 1; }}}for(int i = 0;i < 10;i++){if(a[i]==b[9]) printf("%d为最大成绩,下标为%d\n",b[9],i);if(a[i]==b[0]) printf("%d为最小成绩,下标为%d\n",b[0],i);} // 清空输入缓冲区所有字符while (getchar() != '\n');printf("是否继续判断(继续:1/结束:0):");scanf("%d",&d);} printf("判断结束");return 0;} 

二维数组练习题

一个二维数组赋了初值,用户输入一个数,在该二维数组中查找。找到则返回行列位置,没找到则提示。

#include <stdio.h>int main(){int n;int m=0;int a [5][2] = {{1,1},{2,2},{3,3},{4,4},{5,5}};printf("输入一个数:");scanf("%d",&n);for(int i=0;i<5;i++){for(int j=0;j<2;j++){if(n == a[i][j]) {printf("%d在第%d行第%d列\n",n,i,j);m++;}}}if(m==0) printf("%d未在数组中",n); return 0;} 

二维整型数组,求所有元素平均值,求每行最大值,求每列最小值。

#include <stdio.h>int main(){int n,m;float sum = 0;int max = 0;       //最大初始化 printf("输入有几行几列:");scanf("%d %d",&n,&m); int a[n][m];printf("输入数组数:");for(int i = 0;i < n;i++){for(int j = 0;j < m;j++) scanf("%d",&a[i][j]);}printf("输入的数组a为:\n");for(int i = 0;i < n;i++){for(int j = 0;j < m;j++) printf("%4d",a[i][j]);printf("\n");}for(int i = 0;i < n;i++){for(int j = 0;j < m;j++) sum += a[i][j];}   sum = sum/(float)(n*m);printf("所有元素平均值为%f\n",sum);printf("输入的数组b为:\n");for(int i = 0;i < n;i++){for(int j = 0;j < m;j++) printf("%4d",b[i][j]);printf("\n");}   ​//每行最大  for(int i = 0;i < n;i++){for(int j = 0;j < m;j++){if(a[i][j] > max){max = a[i][j];}}printf("%d行最大为:",i); printf("%d\n",max);}//每列最小  for(int j = 0;j < m;j++){int min = a[0][j];for(int i = 0;i < n;i++){if(a[i][j] < min){min = a[i][j];}}printf("%d列最小为:",j); printf("%d\n",min);}return 0;}

在行列相等数组计算主对角线元素的和

#include <stdio.h>
int main()
{int n;int sum = 0;printf("请输入行列的大小n = ");scanf("%d",&n);int a[n][n];printf("请输入数组值:");for(int i=0;i<n;i++){for(int j=0;j<n;j++) scanf("%d",&a[i][j]);}printf("输入的数组为:\n");for(int i=0;i<n;i++){for(int j=0;j<n;j++) printf("%4d",a[i][j]);printf("\n");}for(int i=0;i<n;i++){sum += a[i][i];}printf("斜角和为:%d",sum);return 0;} 

计算一个矩阵下三角元素的和

#include <stdio.h>    //行索引 ≥ 列索引(即 i ≥ j) 下三角 int main() {int n;int num = 0;printf("请输入行列的大小n = ");scanf("%d",&n);int a[n][n]; printf("请输入数组值:");for(int i=0;i<n;i++){for(int j=0;j<n;j++) scanf("%d",&a[i][j]);}printf("输入的数组为:\n");for(int i=0;i<n;i++){for(int j=0;j<n;j++) printf("%4d",a[i][j]);printf("\n");}printf("下三角元素:\n");for (int i = 0; i < n; i++) {for (int j = 0; j <= i; j++) {  printf("a[%d][%d] = %d\n", i, j, a[i][j]);num += a[i][j];}}printf("%d",num);return 0;
}

电影院为了答谢影迷的支持,在某一排的某一列座位上放置了一个大礼包,放置礼物的位置具有这样的规则(行和列的平方和为开店日期 512(5月12日)); 请设计程序找出大礼包的位置,(假定电影院有20排,每排25个座位)

#include <stdio.h>
int main()
{int a[20][25];for(int i = 0;i < 20;i++){for(int j = 0;j < 25;j++){if(i*i+j*j == 512) printf("礼物在第%d行,第%d列",i,j);}}return 0;
}

字符数组练习题

编写一个程序,读取用户输入的字符串,并将其反转输出。

#include <stdio.h>
int main()
{int n;printf("字符串长度:");scanf("%d",&n);char a[n] ;      //空格' '也是字符,对应的ASCII 为32 int len = sizeof(a) / sizeof(a[0]);printf("输入字符串:");scanf("%s",a);printf("\n");printf("反转过来的字符串为:");for (int i = len - 1; i >= 0; i--){printf("%c", a[i]);}printf("\n");return 0;}

编写一个程序,判断用户输入的字符串是否为回文(即正反读都一样的字符串)。

#include <stdio.h>
int main()
{int n;       //字符串长度 int b = 0;       //用于回文判断 printf("字符串长度:");scanf("%d",&n);char a[n] ;      //空格' '也是字符,对应的ASCII 为32 int len = sizeof(a) / sizeof(a[0]);printf("输入字符串:");scanf("%s",a);printf("\n");printf("字符串为:");for (int i = 0; i <len; i++){if(a[0+i] == a[len-1-i])  b++;}printf("\n");if(b++ == len) printf("%s是回文",a);else printf("%s不是回文",a);return 0;}
http://www.dtcms.com/a/289964.html

相关文章:

  • f4硬件配置spi
  • 一维DP深度解析
  • 三菱A1SJ PLC以太网模块:上位机与触摸屏高效通讯解决方案
  • 深入解析:如何在Kafka中配置Source和Sink连接器构建高效数据管道
  • 金仓数据库:融合进化,智领未来——2025年数据库技术革命的深度解析
  • 【Linux指南】Linux系统 -权限全面解析
  • Windows下编译libarchive
  • JavaWeb笔记四
  • 深入详解随机森林在医学图像质量评估中的应用与实现细节
  • OCR 身份识别:让身份信息录入场景更高效安全
  • PHP反序列化漏洞详解
  • 第十八节:第七部分:java高级:注解的应用场景:模拟junit框架
  • 【c++】leetcode5 最长回文子串
  • 【Project】ELK 7.17.16 日志分析系统部署
  • Day07_网络编程20250721(网络编程考试试卷)
  • 关于 URL 中 “+“ 号变成空格的问题
  • CentOS 7安装 FFmpeg问题可以按照以下步骤进行安装
  • Spring Boot 3核心技术面试指南:从迁移升级到云原生实战,9轮技术攻防(含架构解析)
  • Django实战:基于Django和openpyxl实现Excel导入导出功能
  • 基于python django的BOSS直聘网站计算机岗位数据分析与可视化系统,包括薪酬预测及岗位推荐,推荐算法为融合算法
  • 智能体性能优化:延迟、吞吐量与成本控制
  • django filter按两个属性 去重
  • JAVA面试宝典 -《 架构演进:从单体到 Service Mesh》
  • Go从入门到精通(26) - 一个简单web项目-实现服务注册
  • Go语言实战案例-读取CSV文件并打印
  • python 正则表达式
  • 借助 Amazon SageMaker Catalog 功能,简化从数据到洞察的路径
  • FastLLVE:实时低光视频增强新突破
  • 大端小端:数据存储的核心密码
  • Apache IoTDB(2):时序数据库 IoTDB 集群安装部署的技术优势与适用场景分析