每日学习
一、思维导图
二、练习题
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
-
*p++和++*p的区别
答:*p++是把地址p里的内容先去出来先输出,再加1;++*p是把地址p里的内容加1再输出;相当于i++和++i的区别,可以得出‘ * ’计算的优先级比‘++’高。 -
有以下定义,说明哪些量可以改变哪些不可以改变?
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指向的值都不能变 -
终端输入字符串,使用指针完成逆置并去空格操作。
#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