开启掘金成长之旅!这是我参与「掘金日新计划 · 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';
}
结果如下:
补充:
- 一个变量的地址就称为该变量的指针。 指针就是一个地址,它在计算机中是一个内存单元的编号,一个十六进制数。
- 访问方式:
- 直接访问:按照变量名进行访问。
- 间接访问:将一个变量的存放在另一个变量中,然后通过该变量来找到之前变量的地址,进而访问之前的变量。
- 指针变量:专门来储存指针的变量。如定义一个指针变量p,p是一个指向int型数据的指针,即p可以存int型变量的地址。即:
int *p;
- “&” 取地址符 获得变量所占存储单元的地址;
- “*” 指针运算符 间接访问运算符,获得指针所指向的内容