自学C语言
第一题:念数字
重点的几个步骤:
- 如何分离一个数
int mask=1;
int t=a;//为了不改变a的大小,因为a还要参与后续的运算
while(t>9){
t/=10;
mask*=10;
}//可以算出a是几位数
do{
int d=a/mask;
switch(d){
...
}
a%=mask;
mask/=10;
}while(mask>0);
- 分离过后念出数字的拼音(要用Switch-case)
switch(d){
case 0:printf("ling");break;
case 1:printf("yi"); break;
case 2:printf("er"); break;
case 3:printf("san"); break;
case 4:printf("si"); break;
case 5:printf("wu"); break;
case 6:printf("liu"); break;
case 7:printf("qi"); break;
case 8:printf("ba"); break;
case 9:printf("jiu"); break;
}if(mask>9){
printf(" ");
}//每输出一个数都要加一个空格,直到输出最后一个数
第二题:使用指针交换函数
由于返回函数只能返回一个值
- 要使用&把地址发送给函数
exchange(&x,&y);
-
实现X,Y值的交换
t=*u; 表示把x的值存储在t中.
记住,u的值是&x,所以u指向x,这意味着用*u即可表示x的值
void exchange(int *u,int *v)
{
int t;
t=*u;//t获得u所指向对象的值
*u=*v;//相当于x=y;
*v=t;
}
指针和数组
- 在指针前使用*运算符可以得到该指针所指向对象的值。
dates+2==$dates[2] //相同的地址
*(dates+2)==dates[2] //相同的值
- 指针加一,指针的值递增它所指向类型的大小
数组和指针的关系:
//定义a[n]的意思是*(a+n),可以认为*(a+n)的意思是“到内存a的位置,然后移动n个单元,检索存储在那里的值
*(dates+2) //dates第3个元素的值
*dates+2 //dates第1个元素的值加2
标签:case,dates,语言,mask,break,数组,printf,指针
From: https://www.cnblogs.com/ninnne/p/17103072.html