程序练习题:
//将welcome to nanjing 变成nanjing to welcome
#include
#include
#define MAX_SIZE 1024
void reverse_string(char *src,int len)
{
int i;
char temp;
for(i = 0;i < len / 2;i++)
{
temp = *(src + i);
*(src + i) = *(src + len - 1 - i);
*(src + len - 1 - i) = temp;
}
}
void reverse_word(char *src)
{
int len = 0;
while(*src != '\0')
{
if(*src == ' ')
{
reverse_string(src - len,len);
len = 0;
}
else
{
len++;
}
src ++;
}
reverse_string(src -len,len);
}
int main()
{
char src[MAX_SIZE] = {0};
printf("Please input a string:");
gets(src);
reverse_string(src,strlen(src));
reverse_word(src);
printf("src = %s\n",src);
}
2、十进制数转换成二进制数
#include
/*
int main()
{
int num;
int n;
int a[32] = {0};
int i = 0;
printf("Please input a num\n");
scanf("%d",&num);
while(num > 0)
{
n = num % 2;
a[32 - i - 1] = n;
i++;
num = num / 2;
}
for(i = 0;i < 32;i++)
{
printf("%d",a[i]);
}
}*/
int main()
{
int num;
printf("Please input a number:");
scanf("%d",&num);
int i = 0;
for(i = 0;i < 32;i++)
{
printf("%d",num >> (32 - 1 - i) & 1);
}
}
//十进制转换成八进制
#include
int main()
{
unsigned int num;
unsigned int i = 0;
printf("Please input a number:");
scanf("%u",&num);
printf("Result = ");
for(i = 0;i <= 30;i += 3)
{
printf("%d",num >>(30 - i) & 7);
}
return 0;
}
//N!最后有多少个0
#include
main() { int i; int count = 0; int N; printf("Please input a num N:"); scanf("%d",&N); while(N >= 5) { count += N / 5; N /= 5; } printf("The number of 0 in the end of %d! is:%d.\n",N,count); } //x的y次方最后三位数 #include
main() { int i; int x; int y; int last = 1; printf("Input X and Y(X**Y):"); scanf("%d**%d",&x,&y); for(i = 1;i <= y;i++) { last = last * x % 1000; } printf("The last 3 digits of %d**%d is:%d\n",x,y,last % 1000); } //杨辉三角 #include
#include
int main() { int n; int i; int j; int **p; printf("请输入n的值:\n"); scanf("%d",&n); p=(int**)malloc(sizeof(int*)*n); for(i=0;i
< n;i++) { for(j = 0;j <= i;j++) { if(j == 0) *(*(p + i) + j) = 1; //p[i][j] = 1; else if(j == i) *(*(p + i) + j) = 1; //p[i][j] = 1; else *(*(p + i) + j) = *(*(p + i - 1) + j - 1) + *(*(p + i - 1) + j); //p[i][j] = p[i-1][j-1]+p[i-1][j]; } } for(i = 0;i < n;i++) { for(j = 0;j <= i;j++) // printf("%d ",p[i][j]); printf("%d ",*(*(p + i) + j)); printf("\n"); } return 0; } //16进制 #include
char a[11] = {0}; char *func(int num) { unsigned int mask = 0x00000000f; unsigned int m = 0; int i = 0; int j = 0; for(i = 28,j = 0;i >= 0;i = i - 4,j++) { m = (num >> i) & mask; if(m >= 0&&m < 10) { a[j + 2] = m + '0'; } else { a[j + 2] = (m - 10) + 'a'; } } a[0] = '0'; a[1] = 'x'; a[10] = '\0'; return a; } int main() { int num = 0; char *p; printf("please input a num:"); scanf("%d",&num); p = func(num); printf("result is:%s\n",p); return 0; }