1002
1.字符数组的初始化:
char ch[10][5] = {“ling”, “yi”, “er”, “san”, “si”, “wu”, “liu”, “qi”, “ba”, “jiu”};
2.ASCII码中 字符数字比数字大48。即‘1’=49,‘0’是48,空格是32
3.截取百位,十位,个位方法:
if(sum/100 > 0){ //百位
printf("%s ",ch[sum/100] );
}
if((sum/10) > 0){ //十位
printf("%s ", ch[(sum/10)%10]);
}
printf("%s" , ch [sum%10]); //个位
1005 继续(3n+1)猜想
1.要用一个flag来标记已经覆盖的数:
st[num[i]] = 1;
2.从大到小输出数组,并且最后一个没有空格。
for(i=100;i>1;i--){
if(st[i] == 1){
if(count>0){ //第一次count=0,因此不打印空格
printf(" ");
}
printf("%d",i);
count ++;
}
}
1007 素数对猜想
1.求质数的方法(给定范围内)
for(i=2;i<=n;i++){
is_flag=1;
for(j=2;j<=sqrt(i);j++)
if(i%j == 0){
is_flag =0;
break;
}
}
1008 数组元素循环右移问题
1.转置函数
void reverse_num(int n[],int begin, int end){
int i;
int len = end-begin+1; //转置数组的长度
int temp = 0;
for( i=0; i< len/2 ; i++ ){ //首尾一起转置
temp = n[begin+i]; //注意这是加i
n[begin+i] = n[end-i];
n[end-i] = temp;
}
}
1009 说反话
1.将字符串用gets函数获得,然后分割单词
gets(s);
for( i=0; i<strlen(s); i++){
if( s[i] != ' '){ //如果不是空格,则放入二维数组的一维中
str[count][j++] = s[i];
}else{
str[count][j] = '\0'; //若碰到空格,则再后面加‘\n’,
count++ ; //单词数加一
j = 0;
}
}
str[count][j] = '\0';