(以下代码均用Visual Studio 2022 编写)
1.从键盘输入一个字符串,编写程序,将删除其中某个指定的字符(从键盘输入),同一字母的大、小写按不同字符处理。
分析:首先声明一个数组a[200],通过gets(a),获得字符串a,再通过getchar(),获得单个字符b,将这个字符b与数组a中每一个数比较,用strlen()来确定循环次数,如果b等于数组a中某一个字符,那么这个字符不会输出。代码如下:
#include <stdio.h>
int main() {
char a[200];
char b;
int i;
printf("please input string and character:\n");
gets(a);
printf("string:%s\n", a);
b = getchar();
for (i = 0; i < strlen(a); i++)
{
if (b != a[i])
printf("%c", a[i]);
}
printf("\n");
return 0;
}
2.编写程序实现:输入一行字符,统计单词个数(空格分隔)。
#include <stdio.h>
int main()
{
char a[200];
int i = 0, word = 0;
printf("请输入一行字符:");
gets(a);
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] != ' ')
{
word++;
}
}
printf("单词个数:%d\n", word);
return 0;
}
3.编写程序实现:输入10个数据,按从小到大用冒泡法排序,并显示排序结果。然后再输入一个数,插入其中,要求插入后仍然有序。
分析:冒泡法排序的思想是比较相邻的两个元素,若前面的大,后面的小,则进行交换,使大数往下沉。一趟比较完后,最大的数沉到最后a[9]中,之后进行第二趟比较,是a[8]为次大的。依次进行,知道最后的a[0]和a[9]比较。
可以推知,对于五个数要比较四趟才能使五个数按从小到大顺序排列。如果有n个数,要进行n-1次比较,在第i趟中,要进行n-i次两两比较。用二重循环。
#include<stdio.h>
int main()
{
int a[10], t, i, j, number;
printf("请输入10个数据:\n");
for (i = 0; i < 10; i++)
{
scanf_s("%d", &a[i]);
}
printf("\n");
for (j = 0; j <9; j++)
{
for (i = 0; i < 9 - j; i++)
{
if (a[i] > a[i + 1])
{
t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
}
}
}
printf("排序结果:\n");
for (i = 0; i <= 9; i++)
{
printf("%d\n", a[i]);
}
printf("请再输入一个数据:");
scanf("%d", &number);
for (i = 9; i >= 0; i--)
if (number > a[i]) { a[i + 1] = number; break; }
else a[i + 1] = a[i];
if (number < a[0]) a[0] = number;
for (i = 0; i <= 10; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
4.编写程序实现:输入10个数据,按从小到大用选择法排序,然后输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
分析:选择法排序的思想是首先选择a[0]为对象,与它后面所有的元素比较,若后面的元素小,则与a[0]交换,使a[0]最小;其次将a[1]与它后面的所有元素比较。使a[1]为a[1]~a[9]中最小的数;依次进行,直到最后的a[8]与它后面的a[9]比较,使a[8]为a[8]~a[9]中的最小。这样便实现了10个数由小到大的排列。折半法不会,学了再改。
#include<stdio.h>
#define N 10
int main()
{
int i, j, t, a[N];
printf("请输入要排序的10个数:\n");
for (i = 0; i < N; i++)
scanf_s("%d",&a[i]);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if (a[i] > a[j])
{
t = a[j];
a[j] = a[i];
a[i] = t;
}
printf("排序的结果为:");
for (i = 0; i < N; i++)
printf("%5d",a[i]);
return 0;
}
欢迎指正!