请实现可以用某个值来替换数组中指定值的所有元素的函数。
函数接口定义:
void replace(int *a,int n,int b,int c);
函数传入的参数数组a为指定的数组,参数n为数组a的大小,参数b为数组中需要被替换的值,参数c为替换b的值。
#include <stdio.h>
void replace(int *a,int n,int b,int c);
int main(){
int n;
int a[105],b,c;
while(~scanf("%d %d %d",&n,&b,&c)){
for(int i = 0;i < n;i++)
scanf("%d",&a[i]);
replace(a,n,b,c);
for(int i = 0;i < n;i++){
if(i)
printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
}
/***## 9ba53fffc0e4fa3f ##***/
void replace(int *a,int n,int b,int c)
{
for(int j = 0 ; j < n ; j++)
{
if(a[j] == b)
{
a[j] = c;
}
}
}
请实现计算一个数组指定下标值之和的函数。
函数接口定义:
int sum(int *a,int *b,int n,int m);
函数传入的参数数组a为指定的数组,参数数组b中存储的是需要求和的指定下标,参数n为数组a的大小,参数m为数组b的大小,函数的返回值为指定下标所对应的值之和。
#include<stdio.h>
int sum(int *a,int *b,int n,int m);
int main(){
int a[105],b[105],n,m;
while(~scanf("%d %d",&n,&m)){
for(int i = 0;i < n;i++)
scanf("%d",&a[i]);
for(int i = 0;i < m;i++)
scanf("%d",&b[i]);
printf("%d\n",sum(a,b,n,m));
}
}
/***## 22ac04c3fc76c7a6 ##***/
int sum(int *a,int *b,int n,int m)
{
int s = 0;
for(int j = 0 ; j < m ; j++)
{
s = s + a[b[j]] ;
}
return s;
}
请实现反转数组指定区间的函数。
函数接口定义:
void inserve(int *a,int n,int l,int r);
函数传入的参数数组a为指定的数组,参数n为数组a的大小,参数l为所需反转的区间的起点下标,参数r为所需反转的区间的终点下标,函数无须返回值。
#include <stdio.h>
void inserve(int *a,int n,int l,int r);
int main(){
int n,l,r;
int a[105];
while(~scanf("%d %d %d",&n,&l,&r)){
for(int i = 0;i < n;i++)
scanf("%d",&a[i]);
inserve(a,n,l,r);
for(int i = 0;i < n;i++){
if(i)
printf(" ");
printf("%d",a[i]);
}
puts("");
}
}
/***## ffa160cf2fadfa31 ##***/
void inserve(int *a,int n,int l,int r)
{
for(int j = l , i = r; j<i ; j++,i--)
{
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
请实现可以删除数组中指定下标元素的函数。
函数接口定义:
void del(int *a,int n,int m);
函数传入的参数数组a为指定的数组,参数n为数组a的大小,参数m为需要被删除的元素的下标。
#include<stdio.h>
void del(int *a,int n,int m);
void output(int *a,int n){
for(int i = 0;i < n;i++){
if(i)
printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
int main(){
int n,m;
int a[105];
while(~scanf("%d %d",&n,&m)){
for(int i = 0;i < n;i++){
scanf("%d",&a[i]);
}
output(a,n);
del(a,n,m);
output(a,n - 1);
}
}
/***## c4b70977cbad5e15 ##***/
void del(int *a,int n,int m)
{
for(int j = m ; j < n ; j++)
{
a[j] = a[j+1];
}
}
珍惜空间,杜绝浪费
输入一个含有n个数的数组,使用C++中的 new 指令给数组开内存,要求开刚好足够的内存,数据类型为 int
然后往数组里输入 n 个数
最后将数组打印出来
输入要求:
输入数据有多组
每组数据第一行输入一个整数n(0<n<100),表示数组长度为n
接下来一行输入n个数存入数组当中
输出要求:
每组依次输出数组中的数,每个数后面有一个空格,每组数据打印结束后换行。
数据示例1:
输入:
5
1 2 3 4 5
输出:
1 2 3 4 5
#include<stdio.h>
int* createArray(int n); // 动态开辟内存空间并读入n个整数
int main(){
int n;
while(~scanf("%d", &n)){
int *p = createArray(n);
for(int i=0; i<n; i++){
printf("%d ", p[i]);
}
printf("\n");
delete[] p;
}
}
int* createArray(int n)
{
int *y = new int[n];
for(int i=0; i<n; i++){
scanf("%d",&y[i]);
}
return y;
}
打印存储在结构体变量中的学生信息
输入要求:
多组输入。每组输入包括学号,学生姓名,学生生日(包括年,月,日)。
输出要求:
每个学生信息占一行。包括:学号 姓名 生日
生日的输出格式为 yyyy-mm-dd,即4位整数代表年,2位整数代表月,2位整数代表日。数据确保输入的日期合法,并且年为4位整数,如果月和日不足2位数,则前面补0
数据示例1:
输入:
20201 张三 2000 1 1
20202 李四 2002 12 12
输出:
20201 张三 2000-01-01
20202 李四 2002-12-12
#include<stdio.h>
struct date {
int year, month, day;
};
struct student{
int id;
char name[20];
date bd;
};
void output(student s);
int main(){
student s;
while(~scanf("%d %s %d %d %d", &s.id, s.name,
&s.bd.year, &s.bd.month, &s.bd.day)){
output(s);
}
}
void output(student s)
{
printf("%d %s %4d-%02d-%02d\n", s.id, s.name, s.bd.year, s.bd.month, s.bd.day);
}
输入一串字符串,使用指针,将字符串中选择的位置下标后面的子串打印出来
输入要求:
数据有多组
第一行输入一个字符串 ( 2 =< len <= 100)
第二行输入一个值 n ( 1 <= l <= 50 ),表示要打印的次数
接下来输入 n 个数x,表示要截取的下标
输出要求:
输出n个下标从 x 到 len - 1的子串,每个子串后需要换行
数据示例1:
输入:
abcdefghijk
4
3 4 5 6
输出:
defghijk
efghijk
fghijk
ghijk
#include<stdio.h>
int main()
{
char a[100];
while(~scanf("%s",&a))
{
int n,b[50],q=0;
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
{
scanf("%d",&b[i]);
}
while(a[q] != '\0')
{
q++;
}
for(int i = 0 ; i < n ; i++)
{
for(int j = b[i] ; j < q ; j++)
{
printf("%c",a[j]);
}
printf("\n");
}
}
return 0;
}
在数组指定下标位置插入一个元素
输入要求:
第一行,输入数组的长度n,插入元素的下标m和插入元素的值x
第二行,输入n个数组元素
输入确保0<=n<=100, 0<=m<=n
输出要求:
输出插入操作后数组元素的值
数据示例1:
输入:
6 0 111
1 3 5 2 4 6
6 6 111
1 3 5 2 4 6
输出:
111 1 3 5 2 4 6
1 3 5 2 4 6 111
#include<stdio.h>
void insert(int *a,int n,int m, int x);
void output(int *a,int n){
for(int i = 0;i < n;i++){
if(i)
printf(" ");
printf("%d",a[i]);
}
puts("");
}
int main(){
int n,m,x;
int a[105];
while(~scanf("%d %d %d",&n,&m,&x)){
for(int i = 0;i < n;i++){
scanf("%d",&a[i]);
}
insert(a,n,m,x);
output(a, n+1);
}
}
void insert(int *a,int n,int m, int x)
{
for(int i = 0 ; i <= n ; i++)
{
if(i == m)
{
for(int j = n ; j >= m ; j--)
{
a[j] = a[j-1];
}
a[m] = x ;
break;
}
}
}