6.14 6.15作业

0.

strncmp函数:

int strncmp(const char *str1, const char *str2, size_t n)

比较str1str2进行比较,最多比较前n个字符

Strncat函数:

char *strncat(char *dest, const char *src, size_t n)

src字符串连接到dest字符串的尾部,长度为n

Strncpy函数:

char *strncpy(char *dest, const char *src, size_t n) 

src字符串复制到dest字符串,复制n个字符,当src长度小于dest时,用空字符填充剩余部分

如图输入的src为12,小于dest的长度,用空字符填充了dest的剩余部分,由sizeof得出复制后的dest占8个字节,由此可见dest字符串已被空字符填充。

1.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	char a[100]="";
	int i,j=0;
	gets(a);
	for(i=0;a[i]!='\0';i++)  //遍历字符串直到'\0'
	{
		if(a[i]==' ')     //其中有字符为' '时,删除空格 
		{   
			for(j=i;a[j]!='\0';j++)
			{
				a[j]=a[j+1];
			}
			i--;
		}
		else             //当不是空格时,i往后跳一位
			i++;
	}
	puts(a);
	
	return 0;
}

2.

//输入一个字符串,实现单词的逆置
	char a[100]="";
	gets(a);                  //存放字符串
	int i=0;
	int j = strlen(a)-1;
	char t;	
	while(i<j)
	{
		t=a[i];
		a[i]=a[j];       //整体转置
		a[j]=t;
		i++;
		j--;
	}
	
	int l,k;       //单词起始位置和结束位置
	i=j=k=l=0;  
	for(i=0;a[i]!='\0';)
	{
		if(a[i]!=' '&&(a[i+1]==' '||a[i+1]=='\0')) //找到i在每个单词末尾的位置
		{ 
			k = i;
			j = l;
			while(j<k)
			{
				t=a[j];
				a[j]=a[k];
				a[k]=t;          //每个单词逆置
				j++;
				k--;
			}
			l=i=i+2;
		}
		else if(a[i]==' '&&a[i-1]==' ')
		{
			l=i=i+1;
		}
		else
		{
			i++;
		}
	}
	puts(a);

3.

//输入一个字符串,计算单词的个数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	//输入一个字符串计算单词的个数
	char a[100]="";	
	gets(a);	
	int i=0,count=0; 	//定义单词计数器count
	for(i=0;a[i]!='\0';i++)
	{
		//字母后面是空格或者是结束符'\0'时,就是有一个单词
		if(a[i]!=' '&&(a[i+1]==' '||a[i+1]=='\0'))
		count++;
	}
	printf("单词个数有%d个\n",count);
	return 0;
}

4.

//穷举算法
	int i=0,j=0,k=0; 	
	for(i=0;i<100/5;i++)
	{
		for(j=0;j<(100-5*i)/3;j++)
		{
			k=100-j-i;
			if(5*i+3*j+k/3==100&&k%3==0)
			{
				printf("鸡翁、鸡母、鸡雏为%d、%d、%d只\n",i,j,k);
			}
		}
	}

5. 

//打印九九乘法表
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=i;j++)
		{
			printf(" %d*%d=%d\t",j,i,i*j);
		}
		putchar(10);
	}

6.

//循环输入n个元素,交换数组中的最大值和最小值
int n;	
	int i;
	printf("输入一个数组的元素个数并输入该数组:\n");
	scanf("%d",&n);
	int arr[n];
	int max=0;//最大值下标
	int min=0;//最小值下标
    int t;
	for(i=0;i<n;i++)
	{
		scanf("%d",&arr[i]);
	}
	arr[max] = arr[min] = arr[0];
    for (i = 0; i < n; i++) {
        if (arr[i] > arr[max]) {
           max= i;
        }
        if (arr[i] < arr[min]) {
           min= i;
        }
    } 
    printf("最大值:%d\n", arr[max]);
    printf("最小值:%d\n", arr[min]);	
	t=arr[max];
	arr[max]=arr[min];               //交换最大值和最小值
	arr[min]=t;
	for(i = 0;i<n;i++)
	{
		printf("%d\n",arr[i]);
	}

7. 

//输入字符串,输入变量k,将字符串循环右移k位
	char a[100]="";
	printf("输入一个字符串:");
	gets(a);
	int i,k=0;
	int len=strlen(a);
	printf("plesase enter k:");
	scanf("%d",&k);
	while(k--)           
	{
	char t=a[len-1];
	for(i=len-1;i>0;i--)
	{
		a[i]=a[i-1];
	}
	a[0]=t;
	}
	puts(a);	

8.

char a[100],t;
    gets(a);
    for(int i=0;i<strlen(a);i++)
    {
        for(int j=0;j<strlen(a)-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
puts(a);

9.

//输入五个学生的姓名,输出其中最大值
char a[5][50]={""};
	int i;
	for(i = 0;i<5;i++)
	{   
		printf("请输入第%d个姓名:",i+1);
		scanf("%s",a[i]);
	}
	char b[50]="";
	strcpy(b,a[0]);
	for(i=1;i<5;i++)
	{
		if(strcmp(b,a[i])<0)
			strcpy(b,a[i]);
	}
	printf("最大的姓名是:%s\n",b);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值