第十一周作业

编写函数,去掉一个字符串中除头部和尾部空格外的所有空格,并编写主函数进行调用测试。

输入:

占一行(注:输入的字符串长度不会超过80)

输出:

占一行


样例输入:

a,b,c

样例输出:

a,b,c
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

/*char* shanchu(char* str);
int main()
{
	char str[80];
	gets_s(str, 80);
	printf("%s", shanchu(str));
	return 0;
}

char* shanchu(char *str)
{
	
	char str1[80];
	int len=strlen(str),m=1;
	str1[0] = str[0];
	int i;
	for ( i = 1;i<len-1;i++)
	{
		if (str[i] != ' ')
		{
			m = m + 1;
			str1[m] = str[i];
		}
	}
	str1[m + 1] = str[len - 1];
	return str1;
}*///以上是我对题目的错误理解,下面重新来做
//头部和尾部并不是指第一个和最后一个

char* shancu(char* str, int i, int j, char ch);
int main()
{
	char str[100];
	gets(str, 100);
	//找到左端第一个非空格字符
	int i = 0;
	while ( str[i]&& str[i] == ' ')
	{
		i++;
	}
	//找到右端第一个非空格字符
	int j = strlen(str)-1;
	while (str[j]&& str[j] == ' ')
	{
		j--;
	}
	printf("%s", shanchu(str, i, j,' '));
	return 0;
}

char* shanchu(char* str, int i, int j, char ch)
{
	while (j >= i)
	{
		if (str[j] == ch)
		{
			int n = j;
			while (str[n])
			{
				str[n] = str[n + 1];
				n++;
			}
			str[n] = 0;
		}
		j--;
	}
	return str;
}

"写出正整数的三位分节格式。如,当用户输入82668634时,程序应该输出82,668,634。

输入:正整数

输出:三位分解格式。

样例:

82668634

82,668,634


样例输入:

1

样例输出:

1
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
int main()
{
	int n,i=0;
	char m[200];
	scanf("%d", &n);
	while (n)
	{
		if ((i + 1) % 4 == 0) {
			m[i++] = ',';
		}
		m[i++] = '0' + n % 10;
		n = n / 10;
	}
	for (int j = i - 1; j >= 0; j--)
	{
		printf("%c", m[j]);
	}
	
	return 0;

}

将字符串中奇数下标(从0开始)的字符顺序颠倒。如字符12345678,结果为18365472

输入:字符串,不含空格。

输出:结果字符串。


样例输入:

1234567890

样例输出:

1038567492
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<string.h>


int main()
{
	char n[200];
	scanf("%s", n);
	int i = 1;
	int j = strlen(n);
	if (j % 2 == 0) { j--; }
	while (j > i)
	{
		char temp = n[i];
		n[i] = n[j];
		n[j] = temp;
		i = i + 2;
		j = j - 2;
	}
	printf("%s", n);
	
	return 0;
}

输入一个长度不超过 100 的字符串,删除串中的重复字符。

  输入:

  输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。

  输出:

  删除重复字符后的字符串。例如:abced。


样例输入:

give

样例输出:

give

编写程序,输入字符串到字符数组s中,再输入一个字符给变量c,判断s中是否有c,若有则将该字符从s中删除后输出。若没有,则输出字符串“NotFound”。

输入2行,1个字符串和1个字符:

输出:删除后的字符串

样例1:

输入:

smiles

s

输出:

mile

样例2:

输入:

smiles

a

输出:

NotFound


样例输入:

aab
b

样例输出:

aa
//感觉这个理解清晰
#include<string.h>
int main() {
	char a[100], b;
	gets(a);
	b = getchar();
	int s = -1;
	for (int i = 0; i < strlen(a); i++)
		(a[i] == b) ? s = 1 : 0;
	if (s == -1) {
		printf("NotFound");
		return 0;
	}
	else
		for (int i = 0; i < strlen(a); i++) (a[i] == b) ? 0 : printf("%c", a[i]);
	return 0;
}

输入两个字符串,统计第2个字符串(至少含2字符)在第1个字符串中出现的次数。没有出现,次数为0.

  输入:两个字符串,以空格分隔。

  输出:出现次数,整数。

样例1:

banana  an

2

样例2:

bnnnn nn

3


样例输入:

nanfinancebananafnainancebanannan  nan

样例输出:

6
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()
{
	char str[200];
	char str1[200];
	scanf("%s%s", str, str1);
	int i = 0, j=0, sum = 0;
	while (str[i])
	{
		int flag = 0;
		while (str1[j])
		{
			if (str[i] != str1[j])
			{
				flag = 1;
				break;
			}
			i++; j++;
		}
		flag == 0 ? sum++ : i++;
		j = 0;
	}
	printf("%d", sum);
}

"输入字符串,字符串中有若干星号*,去掉字符串首尾的星号(*),保留中间的星号。 字符串长度不大于200.

  输入:带有*号的字符串。

  输出:首尾不带*号的字符串。

样例:

***street**music****

street**music

#include<string.h>

int main()
{
	char str[200];
	gets_s(str, 200);
	//找到左端第一个非*字符
	int i = 0;
	while (str[i] == '*') { i++; };
	//找到右端第一个非*字符
	int j = strlen(str) - 1;
	while (str[j] == '*') { j--; }
	int m = i;
	for (m; m <= j; m++)
	{
		printf("%c", str[m]);
	}
	return 0;
}
	

所谓孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数是3和5,5和7也是孪生数。

    编写程序,求给定区间[m,n]中的孪生数的数量。例如[2,10]中的孪生数有(3,5)和(5,7),则[2,10]中孪生数的数量为2.

    输入:正整数m,n,    m,n>1.

    输出:[m,n]中的孪生的数量


样例输入:

2 100

样例输出:

8
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
int isprime(int n);

int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	int i,cut=0;
	for (i = m; i <= n - 2; i++)
	{
		if (isprime(i) && isprime(i+2))
		{
			cut=cut+1;
		}
	}
	printf("%d", cut);
	return 0;
}

int isprime(int n)
{
	int x = 1;
	for (int i = 2; i <= n / 2; i++)
	{
		if (n % i == 0) { x = 0; }
	}
	return x;
}

从键盘输入一个32位的二进制形式的IP地址,将其转换为点分十进制的表示,如果输入的字符串中含有1和0以外的字符,则输出“该字符串不是正确的IP地址”。

    输入:0、1二进制序列,不会超过32位,位数不足时程序自动在前面补0.

    输出:点分IP地址。


样例输入:

11111111100000011111111110001111

样例输出:

255.129.255.143
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<string.h>

int trans(char* str);
int check(char* str);
int main()
{
	char str[33];
	gets_s(str,33);
	if (strlen(str) != 32)
	{
		int d = 32 - strlen(str);
		for (int i = 32; i >= d; i--)
		{
			str[i] = str[i - d];
		}
		for (int i = 0; i < d; i++)
		{
			str[i] = '*';
		}
	}
	if (check(str))
	{
		printf("该字符串不是正确的IP地址");
	}
	else
	{
		printf("%d.%d.%d.%d", trans(str), trans(str + 8), trans(str + 16), trans(str + 24));
	}
	return 0;
}

int check(char* str)
{
	int cut = 0;
	for (int i = 0; i < 32; i++)
	{
		if (str[i] == '1' && str[i] == '0')
		{
			cut++;
		}
	}
	if (cut == 31)
	{
		return 1;
	}
	else { return 0; }
}

int trans(char* str)
{
	int i = 0, n = 0;
	for (i = 0; i < 8; i++)
	{
		if (str[i] == '1')
		{
			n = 2 * n + 1;
		}
		else {
			n = 2 * n;
		}
	}
	return n;
}

在医院打点滴(吊针)的时候,如果滴起来有规律,先是滴一滴,停一下;然后滴二滴,停一下;再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有v毫升,每一滴是d毫升,每一滴的速度是一秒(假设最后一滴不到d毫升,则花费的时间也算一秒),停一下的时间也是一秒,这瓶水什么时候能滴完呢?(0 < d < v <6000)
输入:一滴是多少毫升和一瓶盐水有多少毫升,中间用空格隔开.
输出:滴完需要多少时间.


样例输入:

0.5 1.7

样例输出:

6
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()
{
	double d, v;
	scanf("%lf %lf", &d, &v);
	int i;
	int n = 1;
	int t = (int) v / d;
	int time = ((v / d) - t > 0) ? t + 1 : t;
	int tt = 0;
	for (i = 0; i<n; i++)
	{
		v = v - d;
		if (v < 0)
		{
			break;
		}
		tt++;
		n++;
	}
	printf("%d", tt + time);
	return 0;
}

                
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值