您的位置:首页 > 其它

The C Programming Language Learning

2018-03-01 17:30 232 查看

1.编写函数 reverse(s),将字符串 s 中的字符顺序颠倒过来。

int reserve(char s[]){
int i,j;
char temp;
i=0;
while(s[i]!='\0')
++i;//find the end of string

--i;//back off from '\0'
j=0;
while(j<i){
temp = s[j];
s[j] = s[i];
s[i] = temp;
--i;
++j;
}

return 0;
}


2.统计输入数字字符出现的次数

#include <stdio.h>
main(){
int ndigit[10];
int space,others;
int i,c;
for(i=0;i<10;i++)
ndigit[i]=0;

while((c=getchar())!='\n'){
if(c>='0'&& c<='9')
ndigit[c-'0']++;
}
for(i=0;i<10;i++)
printf("%d %d次\n",i, ndigit[i]);
}


3.char对象占用8位,unsigned char的范围是2的8次方0到255 singed char为-128到127

4.编写一个程序以确定分别由 signed 及 unsigned 限定的 char、short、int 与 long 类型变量的取值范围。

#include <stdio.h>
#include <limits.h>
int main(){

printf("singed char %d 到%d\n",SCHAR_MIN, SCHAR_MAX);
printf("singed short %d 到%d\n",SHRT_MIN, SHRT_MAX);
printf("singed int %d 到%d\n",INT_MIN, INT_MAX);
printf("singed long %ld 到%ld\n",LONG_MIN, LONG_MAX);

printf("unsigned char max:%u\n",UCHAR_MAX);
printf("unsigned short max:%u\n",USHRT_MAX);
printf("unsigned int max:%u\n",UINT_MAX);
printf("unsigned long max:%lu\n",ULONG_MAX);

return 0;
}
不同的机器值可能不同
singed char -128 到127
singed short -32768 到32767
singed int -2147483648 到2147483647
singed long -9223372036854775808 到9223372036854775807
unsigned char max:255
unsigned short max:65535
unsigned int max:4294967295
unsigned long max:18446744073709551615


5.标准库函数 strlen(s)可以返回字符串参数 s 的长度,但长度不包括末尾的’\0’

#include <stdio.h>
#include <string.h>
int main(){
char name[] = "I like linux c";

int l = mystrlen(name);
printf("len:%d\n", l);

return 0;
}
int mystrlen(char s[]){
int len=0;
while(s[++len]!='\0')
;
return len;

}


6.算术运算符,整数除法会截断结果中的小数部分

9/4=2 9/10=0

取模运算符%:x%y的结果是 x 除以 y 的余数

9%10=9 9%3=0

7.如果某一年的年份能被 4整除但不能被 100 整除,那么这一年就是闰年,此外,能被 400 整除的年份也是闰年

/**
*返回值1为闰年,0不是闰年
*/
int years(int year){

if((year%4==0) && (year%100!=0)|| (year%400==0))
return 1;
else
return 0;

}


8.删除字符串s中出现的所有字符c

void squeeze(char s[], int c){

int i,j=0;
for(i=0;s[i]!='\0';i++){
if(s[i]!=c)
s[j++] = s[i];
}
s[j] = '\0';


}

表达式++n 先将 n 的值递增 1,然后再使用变量 n 的值,而表达式 n++则是先使用变量 n 的值,然后再将 n 的值递增 1。

也就是说,对于使用变量 n 的值的上下文来说,++n 和 n++的效果是不同的

“`

9.按位运算符

C 语言提供了 6 个位操作运算符。这些运算符只能作用于整型操作数,

即只能作用于带符号或无符号 char、short、int、long 类型:

& 按位与(AND)

| 按位或(OR)

^ 按位异或(XOR)

<< 左移

(>>) 右移

~ 按位求反(一元运算符)

按位与运算符&经常用于屏蔽某些二进制位,置0

按位或运算符|常用于将某些二进制位置为 1

10.编写一个函数 invert(x, p, n),该函数返回对 x 执行下列操作后的结果值:将 x 中从第 p 位开始的 n 个(二进制)位求反(即,1 变成 0,0 变成 1) 的其余各,x位保持不变。



11.函数trim用于删除字符串尾部的空格符,制表符与换行符



12.在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其它文件可以通过 extern 声明来访问它(定义外部变量的源文件中也可以包含对该外部变量的extern 声明)外部变量的定义中必须指定数组的长度,但 extern 声明则不一定要指定数组的长度。外部变量的初始化只能出现在其定义中。

13.指针是一种保存变量地址的变量



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: