计算机二级C语言程序设计

8,436 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

计算机二级C语言程序设计题

题目:

请编写一个函数fun(),函数的功能是删除字符串中的所有空格。例如,主函数中输入"asd af aa z67",则输出为"asdafaaz67"。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void fun(char *str)
{
	int i=0;
	char *p=str;
	while(*p)
	{
		if(*p!=' ')
		{
			str[i++]=*p;
		}
		p++;
	}
	str[i]='\0';
}
main()
{
	char str[81];
	void NONO ();
	printf("Input a string:");
	gets(str);
	puts(str);
	fun(str);
	printf("*** str:%s\n",str);
	NONO();
}
void NONO ()
{/* 请在此函数内打开文件,输入调试数据,
 调用 fun 函数,输出数据,关闭文件。 */
	char str[81];
	int n=0;
	FILE *rf, *wf;
	rf=fopen("in.dat","r");
	wf=fopen("out.dat","w");
	while(n<8) 
	{
		fgets(str, 80, rf);
		fun(str);
		fprintf(wf, "%s", str);
		n++;
	}
	fclose(rf);
	fclose(wf);
	system("pause");
}

分析题目:

删除字符串中的所有空格就是找到字符串中的空格进行删除。

解题思路:

首先设置一个指针变量指向字符串的头位置,并通过循环查找不是空格的字符,将不是空格的字符赋值到字符串,如果是空格,则跳过该字符,就实现了空格字符的删除。

参考答案如下:

void fun(char *str)
{
	int i=0;
	char *p=str;
	while(*p)
	{
		if(*p!=' ')
		{
			str[i++]=*p<img src=";" alt="" width="50%" />
		}
		p++;
	}
	str[i]='\0';
}

结果如下:

1.png

补充:

  • 一个变量的地址就称为该变量的指针。 指针就是一个地址,它在计算机中是一个内存单元的编号,一个十六进制数。
  • 访问方式:
  1. 直接访问:按照变量名进行访问。
  2. 间接访问:将一个变量的存放在另一个变量中,然后通过该变量来找到之前变量的地址,进而访问之前的变量。
  • 指针变量:专门来储存指针的变量。如定义一个指针变量p,p是一个指向int型数据的指针,即p可以存int型变量的地址。即:
int *p;
  • “&” 取地址符 获得变量所占存储单元的地址;
  • “*” 指针运算符 间接访问运算符,获得指针所指向的内容