C语言 数组(一)

(以下代码均用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;
}

欢迎指正!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇