数据结构02

0201

输入一个含有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 *p=new int[n];
	for(int i=0;i<n;i++)
	{
		scanf("%d",&p[i]);
	}
	return p;
}

0202

打印存储在结构体变量中的学生信息
输入要求:
多组输入。每组输入包括学号,学生姓名,学生生日(包括年,月,日)。
输出要求:
每个学生信息占一行。包括:学号 姓名 生日
生日的输出格式为 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 %d-%02d-%02d\n",s.id, s.name, s.bd.year, s.bd.month, s.bd.day);
}

0203

输入一串字符串,使用指针,将字符串中选择的位置下标后面的子串打印出来
输入要求:
数据有多组
第一行输入一个字符串 ( 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>
#include <string.h>
int main()
{
	char a[100];
	int n,x,i,l;
	while(~scanf("%s",&a))
	{
		l=strlen(a);
		scanf("%d",&n);
		while(n--)
		{
			scanf("%d",&x);
			for(i=x;i<l;i++)
			{
				printf("%c",a[i]);
			}
			printf("\n");
		}
	}
}

0204

在数组指定下标位置插入一个元素
输入要求:
第一行,输入数组的长度n,插入元素的下标m和插入元素的值x
第二行,输入n个数组元素
输入确保0<=n<=100, 0<=m<=n
输出要求:
输出插入操作后数组元素的值
数据示例1:
输入:
n m  x
6 0 111
1 3 5 2 4 6
6 6 111
1 3 5 2 4 6
6 2 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)
{
	int i=0,j=0,b[100];
	
	for(i=n-1;i>=m;i--)
	{
		a[i+1]=a[i];
	}
	a[m]=x;
	n++;
}

おすすめ

転載: blog.csdn.net/unhere123/article/details/115983147