习题8-指针

编程题

1、部分字符串复制

【问题描述】

有一个字符串,包含n个字符,写一个函数,将此字符串中从第m个字符开始的全部字符复制为另一个字符串。并编写主函数,输入字符串和一个整数,调用copystr()完成部分复制,在主函数中输出复制结果。

函数原型为void copystr(char *,char *,int );

【输入形式】键盘输入分两行,第一行输入一个字符串,第二行输入一个整型数

【输出形式】输出复制结果

【样例输入】

qwertyuiop

3

【样例输出】

result:ertyuiop

【样例说明】

//第二组数据

qwert

6

第二组数据输出

input error!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void copystr(char *a,char *b,int n)
{a=a+(n-1);while(*a!='\0'){*b=*a;a++;b++;}
}
int main()
{unsigned int n;char a[100]={'\0'},b[100]={'\0'};fgets(a,100,stdin);scanf("%d",&n);if(n>=strlen(a)){printf("input error!\n");}else{copystr(a,b,n);printf("result:%s\n",b);}return 0;
}

2、指针的运用:定义函数,实现冒泡法排序

【问题描述】编写函数,使用指针实现冒泡法排序。数据输入输出在主函数中完成

【输入形式】一维数组,6个int型数
【输出形式】输出按由小到大的排序结果
【样例输入】34 78 -123 41 90 19
【样例输出】-123 19 34 41 78 90

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void px(int *p)
{int i,j,t;for(i=5;i>0;i--){for(j=0;j<5;j++){if(*(p+j)>*(p+1+j)){t=*(p+j);*(p+j)=*(p+1+j);*(p+1+j)=t;}}}
}
int main()
{int a[6],i;for(i=0;i<6;i++){scanf("%d",&a[i]);}px(a);for(i=0;i<6;i++){printf("%d ",a[i]);}printf("\n");return 0;
}

3、矩阵转置

【问题描述】

编写函数,实现将一个3×3的矩阵转置。

矩阵输入及输出都在主函数中完成。

【输入形式】输入一个3×3的矩阵
【输出形式】输出转置矩阵,数据间空格间隔,每行最后一个数据后无空格
【样例输入】

12 56 84

74 85 92

23 56 94

【样例输出】

12 74 23

56 85 56

84 92 94

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void zz(int (*p)[3])
{int i,j,t;for(i=0;i<3;i++){for(j=0;j<i;j++){t=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=t;}}
}
int main()
{int i,j;int a[3][3];for(i=0;i<3;i++){for(j=0;j<3;j++){scanf("%d",&a[i][j]);}}zz(a);for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n\n");}return 0;
}

4、从字符串中删除某个字符

【问题描述】

编写把字符串str中指定字符删除的函数和主函数。

函数原型为:

        void DeleteChar(char *str,char c);

【输入形式】

输入分两行,第一行:一个字符串

第二行:要删除的一个字符

【输出形式】已删除指定字符后的字符串
【样例输入】

asddde

d

【样例输出】

ase

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void DeleteChar(char *str,char c)
{unsigned int i,j=0;char a[100];for(i=0;i<strlen(str);i++){if(str[i]!=c){a[j]=str[i];j++;}}a[j]='\0';strcpy(str,a);
}
int main()
{char str[100],c;fgets(str,100,stdin);scanf("%c",&c);DeleteChar(str,c);printf("%s",str);return 0;
}

程序片段编程题

1、程序填空:字符串中找最大字符并按要求处理

【问题描述】在字符串str中找出最大的字符放在第一个位置上,并将该字符前的原字符往后顺序移动,如"fdswab"变成"wfdsab"。

【输入形式】一个字符串
【输出形式】按要求处理后的字符串
【样例输入】fdswab
【样例输出】wfdsab

#include<stdio.h>
#include<string.h>
int main()
{char str[80], *p, max, *q;p = q = str;gets(p);max = *p;while(*p != '\0'){if(max < *p){max = *p;q=p ;}p++;}p = q;while( p>str ){*p = *(p-1);p-- ;}*p = max;puts(p);return 0;
}

2、程序填空:判断回文字符串

【问题描述】

函数int fun(char *s),判断输入的字符串是否是回文字符串。若是回文串,函数返回1;否则函数返回0。

注:字符串顺读和倒读都一样,则是回文。如"asxsa"是回文串,"asxdsa"不是回文串。

【输入形式】一个字符串
【输出形式】是回文串输出yes,否则输出no
【样例输入】asdsa
【样例输出】yes

#include <stdio.h>
#include <string.h>
int fun(char *s)
{char *p, *q;int n;n=strlen(s);q=&s[n-1];  for (p=s; p<=q; q--, p++ )  if (*p!=*q)break;if (p<=q )   return 0;elsereturn 1;
}
int  main()
{char a[80] = "\0";scanf("%s", a);if ( fun(a)==1) printf("yes");  else printf("no");return 0;
}

3、程序填空:数组排序

【问题描述】将array数组按从小到大进行排序

【输入形式】一维数组各元素的值

【输出形式】按由小到大排列的一维数组各元素的值
【样例输入】10 9 8 7 6 5 4 3 2 1
【样例输出】1 2 3 4 5 6 7 8 9 10

#include <stdio.h>
int  main()
{int a[10];int i,j,temp;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j] )   {temp=a[i];a[i]=a[j] ; a[j]=temp;}for(i=0;i<10;i++)printf("%d ",a[i]);return 0;
}

4、程序填空:求矩阵a,b的乘积

【问题描述】以下程序是求矩阵a,b的乘积,结果存入矩阵c中并按矩阵形式输出。

【输入形式】无
【输出形式】矩阵a,b的乘积,按行输出
【样例输入】无
【样例输出】

     22 -28
     28 -36
     13 -17 

#include <stdio.h>
int main()
{int a[3][2] = {{2,-1},{4,0},{3,1}};int b[2][2] = {{7,-9},{-8,10}};int i, j, k, s, c[3][2];for(i=0;i<3;i++)for(j=0;j<2;j++){for( k=s=0;k<2;k++)  s += a[i][k]*b[k][j];   c[i][j] = s;}for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%d ",c[i][j]);printf("\n");}return 0;
}

5、程序填空:求一维数组a中偶数的个数和偶数的平均值

【问题描述】设数组a中的元素均为正整数,程序片段是求a中偶数的个数和偶数的平均值。

【输入形式】一个数组的元素值
【输出形式】偶数个数 平均值
【样例输入】1 2 3 4 5 6 7 8 9 10
【样例输出】5 6.0

#include <stdio.h>
int main()
{int k,s,i;float ave;int a[10] ;for (i=0;i<10;i++){scanf("%d", &a[i]);  }for(k=s=i=0;i<10;i++){if(a[i]%2!=0){ continue ; }s +=  a[i];k++;}if(k!=0){ave=(float)s/k;printf("%d %.1f\n",k,ave);}return 0;
}

6、程序填空:求二维数组a中的最大值与b中的最大值之差

【问题描述】求二维数组a中的最大值与b中的最大值之差。

【输入形式】按行输入二维数组a和数组b中各元素的值,第一个数组为5*5,第二个数组为6*4
【输出形式】数组a与数组b中最大值的差
【样例输入】

3 1 9 8 6

1 3 8 11 34

6 23 98 4 2

3 4 0 8 3

4 2 5 2 78

1 3 9 8

4 3 2 97

3 4 56 2

2 54 33 4

5 9 9 8

5 5 53 4

【样例输出】

1.0

#include<stdio.h>
float  find_max(float *x[],int m,int n)
{int  i,j;float  max = **x;for(i=0;i<m;i++)for(j=0;j<n;j++){        if(*(*(x+i)+j)>max){max = x[i][j];}}return  max;
}
int  main()
{float  a[5][5],b[6][4], *pa[5],*pb[6];            //定义相应的两个指针数组int  i,j;for(i=0;i<5;i++){        pa[i]=a[i];      }for(i=0;i<6;i++){        pb[i]=b[i];        }for(i=0;i<5;i++)for(j=0;j<5;j++){        scanf("%f",&a[i][j]);      }for(i=0;i<6;i++)for(j=0;j<4;j++){        scanf("%f",&b[i][j]);    }printf("%.1f\n",find_max(pa,5,5)-find_max(pb,6,4));return  0;
}

7、程序填空:输出两个整数中最大数

【问题描述】功能:输出两个整数中的最大数,两个整数由键盘输入。

【输入形式】两个整数
【输出形式】两个整数中大的那个数
【样例输入】1 2

【样例输出】max=2

#include <stdio.h>
#include <stdlib.h>
int  main()
{int *p1,*p2;p1=(int *)malloc(sizeof(int));   //动态存储区分配 p2=(int *)malloc(sizeof(int));   //动态存储区分配 scanf("%d%d", p1 ,p2);if(*p2>*p1)  {  *p1=*p2;  }free(p2);printf("max=%d\n",*p1);free(p1);return 0;
}

8、程序填空:求数组中前n个元素中的最大元素的值及位置

【问题描述】程序中的函数 int find(int a[], int n, int *k)的功能是:求一维数组a的前n个元素中的最大元素的值及其所在的位置,并把它们返回给主调函数。

【输入形式】一维整型数组各元素的值
【输出形式】最大元素的值及其位置
【样例输入】3 9 4 1 7 6 -10 10 -5 2

【样例输出】最大值=10, 最大值是数组a的第8个元素

#include <stdio.h>
int main()
{int i,k,max;int find(int a[], int n, int *k);int a[10];for(i=0; i<10; i++){    scanf("%d",  &a[i]);   }max=find(a,10,&k);printf("最大值=%d, 最大值是数组a的第%d个元素\n", max, k+1);return 0;
}int find(int a[], int n, int *k)
{int i, max;max=a[0]; *k=0;for(i=1; i<n; i++)if(a[i]>max){max=a[i];  *k=i;}return max;
}

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

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

相关文章

电影选票选座系统|影院购票|电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)

电影院订票选座小程序 目录 基于微信小程序的电影院购票系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能实现 2、管理员功能实现 &#xff08;1&#xff09;影院信息管理 &#xff08;2&#xff09;电影信息管理 &#xff08;3&#xff09;已完成…

Internet Download Manager6.42免费版下载神器新体验

&#x1f680; 开篇就燃&#xff01;你的下载速度被“TA”承包了 #### &#x1f31f; 初识IDM 6.42&#xff0c;下载界的“超跑”驾到 各位追求效率的小伙伴们&#xff0c;今天小红要来揭秘一款让我彻底告别“龟速”下载的神器——Internet Download Manager (简称IDM) 6.42版&…

xtu oj 四位数

样例输入# 2 1990 1111样例输出# 5 0 分离整数与合并 AC代码 #include<stdio.h> //判断四个数码是否相等 int Judge(int n){int flag1;int gn%10,sn/10%10,bn/100%10,qn/1000;if(gs&&gb&&gq)flag0;return flag; } int main(){int T;scanf("%d…

dayu_widgets-简介

前言: 越来越多的人开始使用python来做GUI程序&#xff0c;市面上却很少有好的UI控件。即使有也是走的商业收费协议&#xff0c;不敢使用&#xff0c;一个不小心就收到法律传票。 一、原始开源项目: 偶然在GitHub上发现了这个博主的开源项目。https://github.com/phenom-films…

抽象类Abstart Class

抽象类其实就是一种不完全的设计图 必须用abstract修饰 模板方法&#xff1a;建议使用final修饰&#xff0c;不能被重写。

DGL库之HGTConv的使用

DGL库之HGTConv的使用 论文地址和异构图构建教程HGTConv语法格式HGTConv的使用 论文地址和异构图构建教程 论文地址&#xff1a;https://arxiv.org/pdf/2003.01332 异构图构建教程&#xff1a;异构图构建 异构图转同构图&#xff1a;异构图转同构图 HGTConv语法格式 dgl.nn.…

AI智能聊天问答系统源码+AI绘画系统+图文搭建部署教程,文生图图生图,TTS语音识别输入,AI智能体,文档分析

一、前言 人工智能的快速进步吸引了全球的瞩目&#xff0c;各式AI应用如绘图、语言模型和视频处理等已在多个领域获得应用。这些技术不仅加速了科技的创新&#xff0c;也在艺术创作、内容生产和商业实践等方面显示了其巨大潜力。例如&#xff0c;AI语言模型极大提升了内容自动…

【动态规划-最长公共子序列(LCS)】【hard】【科大讯飞笔试最后一题】力扣115. 不同的子序列

给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 10^9 7 取模。 示例 1&#xff1a; 输入&#xff1a;s “rabbbit”, t “rabbit” 输出&#xff1a;3 解释&#xff1a; 如下所示, 有 3 种可以从 s 中得到 “rabbit”…

ABAP 表转JSON格式

FUNCTION ZRFC_FI_SEND_PAYPLAN2BPM. *"---------------------------------------------------------------------- *"*"本地接口&#xff1a; *" IMPORTING *" VALUE(INPUT) TYPE ZSRFC_FI_SEND_PAYBPM_IN *" EXPORTING *" VAL…

vue3数字滚动插件vue3-count-to

1.安装 npm i vue3-count-to 2.引入 import { CountTo } from vue3-count-to3.使用 <countTo :startVal"0" :endVal"57.63" :decimals"2" :duration"3000"></countTo> 配置项:

yolov5-7.0模型DNN加载函数及参数详解(重要)

yolov5-7.0模型DNN加载函数及参数详解&#xff08;重要&#xff09; 引言yolov5&#xff08;v7.0&#xff09;1&#xff0c;yolov5.h(加载对应模型里面的相关参数要更改)2&#xff0c;main主程序&#xff08;1&#xff09;加载网络&#xff08;2&#xff09;检测推理&#xff0…

AVL树如何维持平衡

1.AVL树的特性 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种…

【万字长文】Word2Vec计算详解(一)CBOW模型

【万字长文】Word2Vec计算详解&#xff08;一&#xff09;CBOW模型 写在前面 本文用于记录本人学习NLP过程中&#xff0c;学习Word2Vec部分时的详细过程&#xff0c;本文与本人写的其他文章一样&#xff0c;旨在给出Word2Vec模型中的详细计算过程&#xff0c;包括每个模块的计…

【redis-06】redis的stream流实现消息中间件

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果&#xff0c;作为提升用户体验的重要手段&#xff0c;在网页和应用开发中扮演着举足轻重的角色…

同望OA tooneAssistantAttachement.jsp 任意文件读取漏洞复现

0x01 产品简介 同望OA,即同望科技打造的智企云协同管理系统,是一款高效的企业协同移动办公系统。秉承“互联网++企业管理”理念,定位于以移动互联办公为基础的企业协同管理软件平台。它旨在通过内置常用标准模块与专项管理模块应用,安全快速地打通管理与业务通道,实现管理…

QT 实现QMessageBox::about()信息自定义显示

这是我记录Qt学习过程的第四篇心得文章&#xff0c;主要是方便自己编写的应用程序显示“关于信息”&#xff0c;对QMessageBox::about()输入信息进行规范&#xff0c;可以设置应用程序名称&#xff0c;通过定义宏从pro文件获取应用程序版本号&#xff0c;以及编译程序的QT版本、…

写一个代码:打印100~200之间的素数

我们要输出100-200之间的素数&#xff0c;首先我们先得输出100-200之间的数字&#xff0c;一般用于遍历循环的数字要用到for循环&#xff0c;同时在输出的100~200之间的数字进行判断是不是素数&#xff0c;我们知道素数的判断条件在于当一个数字从1开始到自己本身的时候&#x…

2024年最新(AI绘画)Stable Diffusion4.9下载及安装教程.

软件介绍 Stable Diffusion 是一款在图像生成领域具有重大影响力的软件。 从工作原理上看&#xff0c;它利用深度学习的先进算法&#xff0c;构建起复杂且强大的神经网络架构。其核心在于能够解读用户输入的文本信息&#xff0c;并将这些信息转化为图像的特征与细节。 在使用…

【C++网络编程】(一)Linux平台下TCP客户/服务端程序

文章目录 Linux平台下TCP客户/服务端程序服务端客户端相关头文件介绍 Linux平台下TCP客户/服务端程序 图片来源&#xff1a;https://subingwen.cn/linux/socket/ 下面实现一个Linux平台下TCP客户/服务端程序&#xff1a;客户端向服务器发送&#xff1a;“你好&#xff0c;服务…