第十次C程序上机报告

任务1:
输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,再对y串的内容前后倒置后存入数组z中并输出。
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。
运行示例
Enter a string: abcABCD
Enter an integer: 4
The new string is DCBA
#include<stdio.h>
#include<string.h>
void getx(char *c1);
void getr(char *c2);
void main()
{
	char a[100];
	printf("Enter a string:\n");
	gets(a);
	getx(a);
}
void getx(char *c1)
{
	char x[100]={0};
	int i,j=0,m,k=0;
	printf("Enter an integer:\n");
	scanf("%d",&m); 
	while(*(c1+j)!='\0')    
	{j++;}   
	for(i=j-m;i<j;i++)
	{
		x[k]=c1[i];
		k++;
	}
	x[k]='\0';
	printf("Output:%s\n",x);
	getr(x);
	printf("The new string is:%s\n",x);
}
void getr(char *c2)
{
	char tlen=strlen(c2);  
	char Loop=tlen/2;  
	for(int i=0;i<Loop;i++)  
	{  
		char temp=c2[i];  
		c2[i]=c2[tlen-1-i];  
		c2[tlen-1-i]=temp; 
	}
}

运行结果:
----------------------分割线----------------------
任务2:
定义一维整形数组,对数组分别进行“由大到小”和"由小到大"排序并输出。
要求:用函数和指针实现排序
#include<stdio.h>   
#include<string.h>
int A(int*x,int n);  
int B(int*x,int n);  
void main()  
{
	int a[100];  
	int n=0,i=0;  
	printf("请输入一组数:\n");  
	while(1)  
	{
		scanf("%d",&a[i]);  
		i++;  
		n++;  
		if(getchar()=='\n')  
			break;
	}  
	A(a,n);  
	B(a,n);  
}  
int A(int*x,int n)  
{
	int temp=NULL;  
	int i,j;  
	for(j=0;j<n;j++)  
	{  
		for(i=0;i<n-1;i++)  
		{
			if(*(x+i)<*(x+i+1))  
			{
				temp=*(x+i);  
				*(x+i)=*(x+i+1);  
				*(x+i+1)=temp;
			}  
		}  
	}  
	printf("由大到小:\n");  
	for(j=0;j<n;j++) 
	{
		printf("%d ",*(x+j));
	}  
	printf("\n");  
	return 0;
}  
int B(int*x,int n)  
{
	int temp=NULL;  
	int i,j;  
	for(j=0;j<n;j++)  
	{  
		for(i=0;i<n-1;i++)  
		{
			if(*(x+i)>*(x+i+1))  
			{
				temp=*(x+i);  
				*(x+i)=*(x+i+1);  
				*(x+i+1)=temp;
			}  
		}  
	}  
	printf("由小到大:\n");  
	for(j=0;j<n;j++)  
	{
		printf("%d ",*(x+j));
	}  
	printf("\n");  
	return 0;
}  

运行结果:
----------------------分割线----------------------
任务3:
输入字符串s,将字符放入d数组中,最后输出d中的字符串。
要求: 用函数和指针 实现
运行示例
输入字符串:abc123edf456gh
输出 字符串:abcedfgh
#include<stdio.h>   
#include<string.h> 
void h(char *a);  
void main()  
{    
    char x[100];  
    printf("Input:\n");  
    gets(x);  
    h(x);
}  
void h(char *a)
{
	int i,j;
	char b[100];
	for(i=j=0;a[i]!='\0';i++)  
    {  
        if(a[i]>=65&&a[i]<=90||a[i]>=97&&a[i]<=122)  
        {  
            b[j]=a[i];  
            j++;  
        }  
    }  
    b[j]='\0';  
    printf("Output:\n%s\n",b);  
}

运行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值