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

C语言程序设计(第四版)—习题7程序设计题

目录

1.选择法排序。

2.求一批整数中出现最多的数字。

3.判断上三角矩阵。

4.求矩阵各行元素之和。

5.求鞍点。

6.统计大写辅音字母。

7.字符串替换。

8.字符串转换成十进制整数。


1.选择法排序。

输入一个正整数n(1<n≤10),再输入n个整数,将它们从大到小排序后输出。试编写相应程序。

本题要求将给定的n个整数从大到小排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

4
5 1 7 6

输出样例:

7 6 5 1
#include<stdio.h>
int main()
{int a[10];int n;scanf("%d",&n);int i,j;for(i=0;i<n;i++)//输入数组内数字scanf("%d",&a[i]);int max,temp;for(j=0; j<n; j++)//选择排序{max = j;for(i=j+1; i<n; i++){if(a[max]<a[i])max = i;}temp = a[j];a[j] = a[max];a[max] = temp;}for(i=0;i<n-1;i++)//输出printf("%d ",a[i]);printf("%d",a[n-1]);return 0;
}

 2.求一批整数中出现最多的数字。

输入一个正整数n(1<n≤1 000),再输入n个整数,分析每个整数的每一位数字,求出现次数最多的数字。例如输入3个整数1234、2345、3456,其中出现次数最多的数字是3和4,均出现了3次。试编写相应程序。

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:

输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:

在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:

3
1234 2345 3456

输出样例:

3: 3 4
#include <stdio.h>
int main () {int n,i,x;int mostC[10]= {0}; //设每个数字出现的次数为0scanf("%d",&n);for(i=0; i<n; i++) {scanf("%d",&x);if(x==0)//输入数字为0时,0出现一次mostC[0]++;else {while(x>0) { //记录每个数字出现的次数mostC[x%10]++;x/=10;}}}int max = 0;//出现的最多次数for(i=0; i<10; i++) {if(max<mostC[i])max = mostC[i];}printf("%d:",max);for(i=0; i<10; i++)if(mostC[i]==max)//找和最多出现次数相等的数字printf(" %d",i);return 0;
}

3.判断上三角矩阵。

输入一个正整数n(1≤n≤6)和 n 阶方阵 a 中的元素,如果 a 是上三角矩阵,输出 “ YES ”,否则,输出 “ NO ”。上三角矩阵指主对角线以下的元素都为0的矩阵,主对角线为矩阵的左上角至右下角的连线。 试编写相应程序。

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入格式:

输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

输入样例:

3
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
3
1 2 3
1 4 5
0 -1 6

输出样例:

YES
NO
NO

矩阵的坐标位置间的关系:

#include<stdio.h>
int main(){int T;scanf("%d",&T);//输入待测矩阵的个数int n;int x;while(T--){int flag = 1;//标记,flag=1是上三角矩阵,否则flag=0不是scanf("%d",&n);for(int i=0;i<n;i++){//n行for(int j=0;j<n;j++){//列scanf("%d",&x);if(i>j && x!=0){flag = 0;}}}if(flag == 1){printf("YES\n");}else {printf("NO\n");}}return 0;
}

4.求矩阵各行元素之和。

输入2个正整数 m和 n(1≤m≤6,1≤n≤6),然后输入矩阵a(m行n列)中的元素,分别求出各行元素之和,并输出。试编写相应程序。

本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:

输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:

每行输出对应矩阵行元素之和。

输入样例:

3 2
6 3
1 -8
3 12

输出样例:

9
-7
15
#include<stdio.h>
int main()
{int m,n;scanf("%d %d",&m,&n);int a[m][n];for(int i=0;i<m;i++){int sum=0;for(int j=0;j<n;j++){scanf("%d",&a[i][j]);sum+=a[i][j];}printf("%d\n",sum);}return 0;
}

5.求鞍点。

输入1个正整数n(1≤n≤6)和n阶方阵a中的元素,假设方阵a最多有1个鞍点,如果找到a的鞍点,就输出其下标,否则,输出 “ NO ”。鞍点的元素值在该行上最大,在该列上最小。试编写相应程序。

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

输出样例1:

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE
#include<stdio.h>
int main(){int arr[6][6];//题目中说明:1≤n≤6int n;scanf("%d",&n);for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&arr[i][j]);int Hmax=0,Lmin=0; int L=-1,H=-1;for(int i=0;i<n;i++){Hmax = arr[i][0];for(int j=0;j<n;j++){if(arr[i][j] >= Hmax){//找i行里面的最大的数,所在的列Hmax = arr[i][j];L = j;}}Lmin = arr[0][L];for(int k=0;k<n;k++){//遍历L列所在的每一行if(arr[k][L] <= Lmin){//列里面找最小Lmin = arr[k][L];H = k;}}if(Hmax == Lmin){break;}	}if(Hmax == Lmin){printf("%d %d",H,L);}else{printf("NONE");}return 0;
}

6.统计大写辅音字母。

输入一个以回车结束的字符串(少于80个字符),统计并输出其中大写辅音字母的个数。大写辅音字母是指除 'A',  'E',  'I',  'O',  'U'以外的大写字母。试编写相应程序。

英文辅音字母是除AEIOU以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出字符串中大写辅音字母的个数。

输入样例:

HELLO World!

输出样例:

4
#include<stdio.h>
int main()
{char ch[90];gets(ch);int i=0;int num=0;//统计大写辅音字母的个数while(ch[i]!='\0'){if((ch[i]>='B'&&ch[i]<='Z')&&ch[i]!='E'&&ch[i]!='I'&&ch[i]!='O'&&ch[i]!='U')num++;i++;}printf("%d",num);return 0;
}

7.字符串替换。

输入一个回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串。试编写相应程序。

原字母对应字母 

A\rightarrow Z

B\rightarrow Y

C\rightarrow X

D\rightarrow W

      …

X\rightarrow C

 Y\rightarrow B

 Z\rightarrow A

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母对应字母
AZ
BY
CX
DW
XC
YB
ZA

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。

输出格式:

输出在一行中给出替换完成后的字符串。

输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.

对应的规律:

#include<stdio.h>
int main(){char ch[80],op;int len = -1;while(1){scanf("%c",&op);if(op=='\n')break;elselen++;ch[len] = op;}for(int i=0;i<=len;i++){if(ch[i]>='A'&&ch[i]<='Z'){ch[i] = 155-ch[i];}}for(int i=0;i<=len;i++){printf("%c",ch[i]);}return 0;
}

8.字符串转换成十进制整数。

        输入一个以字符 “ # ”结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果过滤后字符串的首字符为 “ - ”,代表该数是负数。试编写相应程序。

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905
#include<stdio.h>
int main(){char op[80];char ch;int n=0;//十六进制字符个数int flag = 1;//标记符号do{scanf("%c",&ch);if((ch>='a'&&ch<='f') || (ch>='A'&&ch<='F') || (ch>='0'&&ch<='9')){op[n] = ch;n++;}if(ch=='-' && n==0){//在第一个十六进制字符之前存在字符“-”flag = -1;}}while(ch != '#');int sum = 0;int c = 1;for(int i=n-1;i>=0;i--){if(op[i]>='a'&&op[i]<='z')sum+=(op[i]-'a'+10)*c;if(op[i]>='A'&&op[i]<='Z')sum+=(op[i]-'A'+10)*c;if(op[i]>='0'&&op[i]<='9')sum+=(op[i]-'0')*c;c*=16;}printf("%d",flag*sum);return 0;
}

相关文章:

  • 【AIGC】Stable Diffusion的ControlNet插件
  • Unity类银河恶魔城学习记录7-5 p71 Improving sword throwing state源代码
  • HCIA-HarmonyOS设备开发认证V2.0-内核扩展组件
  • Linux第57步_“linux系统镜像”和“根文件系统”重新打包小结
  • Llama-Factory的baichuan2微调
  • 2000-2021年县域指标统计数据库
  • Python编程-二万字浅谈装饰器原理与装饰器设计模式和函数式编程案例讲解
  • linux的make和makefile
  • 第三节 zookeeper基础应用与实战2
  • 单片机的省电模式及策略
  • FileZilla Server 1.8.1内网搭建
  • MySQL 基础知识(一)之数据库和 SQL 概述
  • BUUCTF misc 专题(47)[SWPU2019]神奇的二维码
  • 【初始C++】引用的概念及使用场景、引用与指针的区别、内联函数、类型推导关键字auto、范围for循环、指针空值nullptr
  • Excel+VBA处理高斯光束
  • 《剑指offer》分解让复杂问题更简单
  • 【391天】每日项目总结系列128(2018.03.03)
  • co.js - 让异步代码同步化
  • CSS盒模型深入
  • JDK 6和JDK 7中的substring()方法
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Python学习之路13-记分
  • spark本地环境的搭建到运行第一个spark程序
  • Twitter赢在开放,三年创造奇迹
  • Vue2.0 实现互斥
  • 记录一下第一次使用npm
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 微信开放平台全网发布【失败】的几点排查方法
  • 详解NodeJs流之一
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (算法)N皇后问题
  • (译)2019年前端性能优化清单 — 下篇
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • .NET Core 2.1路线图
  • .net framework4与其client profile版本的区别
  • .NET企业级应用架构设计系列之结尾篇
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET与 java通用的3DES加密解密方法
  • /etc/fstab和/etc/mtab的区别
  • @31省区市高考时间表来了,祝考试成功
  • @AutoConfigurationPackage的使用
  • @ModelAttribute注解使用
  • @SpringBootApplication 包含的三个注解及其含义
  • [@Controller]4 详解@ModelAttribute
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作