C语言学习记录
前言
一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流!
不当之处请斧正!在此感谢!这边就先从学习C语言写起,自己本身对程序语言方面不擅长,所以决定对此从基础开始学习,
大牛们对此文可以忽略!
Mooc上C语言练习
念整数
题目内容:
你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi
输入格式:
一个整数,范围是[-100000,100000]。
输出格式:
表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。
输入样例:
-30
输出样例:
fu san ling
时间限制:500ms内存限制:32000kb
解题:
先分析i的值,注意i等于0时的输出。i为负数时应该如何处理。
分析如何正序的得到i的每个数。
如何确定空格加的时机。
输出比较简单,得到后直接用swith输出。
#include <stdio.h>
int main(int argc, char **argv) {
int i,x,d,mask=1;
scanf("%d",&i);
if(i==0)
{
printf("ling");
}else if(i>0)
{
x=i;
while(x>9)
{
x/=10;
mask*=10;
}
//printf("%d\n",mask);
do{
d=i/mask;
i%=mask;
mask/=10;
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>0)
{
printf(" ");
}
}while(mask>0);
}else
{
printf("fu ");
i = -i;
x=i;
while(x>9)
{
x/=10;
mask*=10;
}
//printf("%d\n",mask);
do{
d=i/mask;
i%=mask;
mask/=10;
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>0)
{
printf(" ");
}
}while(mask>0);
}
return 0;
}
注意:
1. i等于0时的输出应为一个定值,i小于0时应先转为正整数,同时结果加个"fu"输出。
2. 加空格的条件的变量应为mask。
3. 第二个while循环结束判断条件应为mask变量