编写函数,去掉一个字符串中除头部和尾部空格外的所有空格,并编写主函数进行调用测试。
输入:
占一行(注:输入的字符串长度不会超过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;
}