【c语言基础】c语言学习第9天笔记和练习

文章展示了两段C语言代码,一段用于递归输出整数的每一位,另一段则涉及字符串处理,包括删除空格和字符串逆序。代码中探讨了指针操作如`*p++`与`++*p`的差异,并提醒了`gets`函数的安全问题,建议使用`fgets`代替。
摘要由CSDN通过智能技术生成

每日学习

一、思维导图
c语言学习第9天

二、练习题

1.终端输入一个数,递归输出他的每一位,例:123 输出 123 ,void为返回值

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void dgnx(int num){
	if(num>=0&&num<=9){
		printf("%d ",num);
	}else{
		dgnx(num/10);
		dgnx(num%10);
	}
}
int main(int argc, const char *argv[])
{
	int var;
	scanf("%d",&var);
	dgnx(var);
	putchar(10);
	return 0;
}

终端输出结果:

linux@linux:~/zuoye230711/d721$ gcc zy1.c 
linux@linux:~/zuoye230711/d721$ ./a.out 
123
1 2 3 
  1. *p++和++*p的区别
    答:*p++是把地址p里的内容先去出来先输出,再加1;++*p是把地址p里的内容加1再输出;相当于i++和++i的区别,可以得出‘ * ’计算的优先级比‘++’高。

  2. 有以下定义,说明哪些量可以改变哪些不可以改变?
    const char *p; //p指向的值不能变,p的指向可变
    const (char *) p; //p指向的值不能变,p的指向可变
    char const p; //p的指向不能变,p指向的值可变
    const char
    const p; //p的指向和p指向的值都不能变
    char const *p; //p指向的值不能改变
    (char ) const p; //p不能变,p指向的内容可以变
    char const
    const p; //p的指向和p指向的值都不能变

  3. 终端输入字符串,使用指针完成逆置并去空格操作。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void delstrk(char *p){
	int i=0,j,len=strlen(p);
	for(i=0;i<len;i++){
		if(*(p+i)==' '){
			for(j=i;j<len;j++){
				*(p+j)=*(p+j+1);
			}
		}
	}
}
void turna(char *p){
	int i,len=strlen(p);
	char temp;
	for(i=0;i<len/2;i++){
		temp=*(p+i);
		*(p+i)=*(p+len-i-1);
		*(p+len-i-1)=temp;
	}
}
int main(int argc, const char *argv[])
{
	char a[100];
	gets(a);
	delstrk(a);
	turna(a);
	puts(a);
	return 0;
}

终端运行结果:

linux@linux:~/zuoye230711/d721$ gcc zy4.c 
zy4.c: In function ‘main’:
zy4.c:26:2: warning: implicit declaration of function ‘gets’; did you mean ‘fgets’? [-Wimplicit-function-declaration]
   26 |  gets(a);
      |  ^~~~
      |  fgets
/usr/bin/ld: /tmp/ccGg6DdP.o: in function `main':
zy4.c:(.text+0x15c): 警告: the `gets' function is dangerous and should not be used.
linux@linux:~/zuoye230711/d721$ ./a.out 
aajdhasj alsdjaljd a
adjlajdslajsahdjaa
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值