练习一
输入一个字符串。删除空格
hello world ! ! !
#include <myhead.h>
int main(int argc, const char *argv[])
{
char str[100] = "";
printf("Please enter a string\n");
gets(str);
int len = strlen(str);
int i, j;
for(i=0; i<len; i++)
{
for(j=0; j<len-i; j++)
{
if(str[j] == ' ')
{
char t = str[j];
str[j] = str[j+1];
str[j+1] = t;
}
}
}
puts(str);
return 0;
}
练习二
输入一个字符串,实现单词的逆置
good good study ---->study good good
//1,先整体逆置
yduts doog doog
//、2单词逆置
study good good
#include <myhead.h>
int main(int argc, const char *argv[])
{
char str1[100] = "";
char str2[100] = "";
char str3[100] = "";
printf("Please enter a string\n");
gets(str1);
// global inverted
int len = strlen(str1);
int i, j, k;
for(i=1; i<=len; i++)
str2[i-1] = str1[len-i];
strcpy(str3, str2);
// partially inverted
for(i=0; i<len; i++)
{
if((i==0 && str2[i]!=' ') || (str2[i]!=' ' && str2[i-1]==' '))
k = i;
if(str2[i+1]=='\0' || (str2[i]!=' ' && str2[i+1]==' '))
{
for(j=0; j<=i-k; j++)
{
str3[k+j] = str2[i-j];
}
}
}
printf("After changing:\n");
puts(str3);
return 0;
}
练习三
输入一个字符串,计算单词的个数
"good good study" 3
ii+1 ii+1 ii+1
#include <myhead.h>
int main(int argc, const char *argv[])
{
char str[100] = "";
printf("Please enter a string\n");
gets(str);
int len = strlen(str);
int i, count = 0;
for(i=0; i<len; i++)
{
if((str[i]!=' ' && str[i+1]==' ') || str[i+1]=='\0')
count++;
}
printf("There are %d words\n", count);
return 0;
}
练习四
“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”
#include <myhead.h>
int main(int argc, const char *argv[])
{
int a, b, c;
int sum = 0;
for(a=0; a<=20; a++)
{
for(b=0; b<=33; b++)
{
c = 100 - a -b;
sum = 5*a + 3*b + c/3;
if((sum == 100) && (c%3 == 0))
printf("There are %d roosters, %d hens, %d chicks\n", a, b, c);
}
}
return 0;
}
练习五
打印图形
#include <myhead.h>
int main(int argc, const char *argv[])
{
int i, j;
int mul;
for(i=1; j<=9; i++)
{
for(j=1; j<=i; j++)
{
mul = i * j;
printf("%d×%d=%-2d ", j, i, mul);
}
putchar(10);
}
return 0;
}
练习六
循环输入n个元素,交换数组中最大值和最小值
12 3 5 2 5 --->2 3 5 12 5
#include <myhead.h>
int main(int argc, const char *argv[])
{
int arr[100];
int i;
int count = 0;
printf("Please enter some number\n");
printf("(End in 0)\n");
for(i=0; ; i++)
{
scanf("%d", &arr[i]);
if(arr[i] == 0)
break;
count++;
}
printf("Before changing:\n");
int max = 0, min = 0, temp;
for(i=0; i<count; i++)
{
printf("%-4d ", arr[i]);
if(arr[max] < arr[i])
max = i;
if(arr[min] > arr[i])
min = i;
}
putchar(10);
temp = arr[max];
arr[max] = arr[min];
arr[min] = temp;
printf("After changing:\n");
for(i=0; i<count; i++)
printf("%-4d ", arr[i]);
putchar(10);
return 0;
}
练习七
输入字符串,输入变量k的值,将字符循环右移k位
eg: k=2
char arr[]="abcde"
移动的结果是:
deabc
#include <myhead.h>
int main(int argc, const char *argv[])
{
char str1[100] = "";
char str2[100] = "";
int k, i, j;
printf("Please enter a string\n");
gets(str1);
printf("k = ");
scanf("%d", &k);
int len = strlen(str1);
for(i=1; i<=k; i++)
{
for(j=0; j<len-1; j++)
{
str2[j+1] = str1[j];
}
str2[0] = str1[len-1];
strcpy(str1, str2);
}
printf("After shift right %d places:\n", k);
puts(str2);
return 0;
}
练习八
定义字符串并输入,请实现对字符串每个字符升序排序
“bdcae” --->"abcde"
#include <myhead.h>
int main(int argc, const char *argv[])
{
char str[100];
int len = strlen(str);
printf("Please enter a string\n");
scanf("%s", str);
for (int i = 0; i < len - 1; i++)
{
int min = i;
for (int j = i + 1; j < len; j++)
{
if (str[min] < str[j])
{
min = j;
}
}
if(min != i)
{
char temp = str[min];
str[min] = str[i];
str[i] = temp;
}
}
printf("After changing:\n");
printf("%s\n", str);
return 0;
}
练习九
输入5个学生的姓名,请输出姓名中的最大值
#include <myhead.h>
int main(int argc, const char *argv[])
{
char str[5][100] = {""};
printf("Please enter 5 name\n");
for(int i=0; i<5; i++)
{
scanf("%s", str[i]);
}
char max[100];
strcpy(max, str[0]);
for(int i=0; i<5; i++)
{
if(strcmp(max, str[i]) < 0)
{
strcpy(max, str[i]);
}
}
printf("The maximum values is %s\n", max);
return 0;
}