/*30.求一个数的二进制序列中1的个数。
#include <stdio.h>
int main()
{
int a;
int count=0;
scanf("%d",&a);
while(a>0)
{
if(a%2==1)
count++;
a=a/2;
}
printf("count=%d\n",count);
return 0;
}
// #include <stdio.h>
// int main()
// {
// int count = 0;
// int num = 15;
// int i = 32;
// while(i)
// {
// if(num & 1 == 1)
// {
// count++;
// }
// //num=num/2;
// num = num >> 1;
// i-=1;
// }
// printf("count= %d\n",count);
// return 0;
// }
//x=x&(x-1)
// #include <stdio.h>
// int main()
// {
// int count = 0;
// int num = 0;
// scanf("%d",&num);
// //0000 1111
// //0000 1110
// //0000 1110---1
// //0000 1101
// //0000 1100---2
// //0000 1011
// //0000 1000---3
// //0000 0111
// //0000 0000---4
// while(num)
// {
// count++;
// num = num & (num-1);
// }
// printf("count = %d\n",count);
// return 0;
// }
*/
/*29.对任意一个整型数组排序(选择排序)
//n个记录的文件可经过n-1趟直接选择排序得到有序结果:
// 初始状态:无序区为R[1..n],有序区为空。
// 第一趟排序:
// 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第一个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区
// 和记录个数减少1个的新无序区。
// 第i趟排序:
// 第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n]。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第一个
// 记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
#include <stdio.h>
#define N 10
int main()
{
void sort(int a[]);
int a[N];
int i;
printf("请输入一个数组:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
sort(a);
printf("排序后数组:");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void sort(int a[])
{
int i,j,t,min;
for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
{
if(a[min]>a[j])
{
min=j;
}
}
t=a[i];
a[i]=a[min];
a[min]=t;
}
}
*/
/*28.不允许创建临时变量求一个字符串的长度(递归)
#include <stdio.h>
int main()
{
int my_strlen(char *string);
char str[20];
scanf("%s",&str);
int ret=my_strlen(str);
printf("%d\n",ret);
return 0;
}
int my_strlen(char *string)
{
if(*string=='\0')
return 0;
else
return (my_strlen(string+1)+1);//string+1就是string++
}
*/
/*27.编写一个函数可以求字符串的长度
#include <stdio.h>
int main()
{
int my_strlen(char *string);
char str[20];
scanf("%s",&str);
int ret=my_strlen(str);
printf("%d\n",ret);
return 0;
}
int my_strlen(char *string)
{
int length=0;
while(*string++!='\0')
{
length++;
}
return length;
}
*/
/*26.用非递归的方式求斐波那契数列的第n个数(迭代)
// 迭代:
// 每一次迭代的结果会作为下一次迭代的初始值;
#include <stdio.h>
int main()
{
int fun(int n);
int n;
printf("请输入n的值:");
scanf("%d",&n);
printf("第%d个数是:%d\n",n,fun(n));
return 0;
}
int fun(int n)
{
int ret;
int pre;
int tmp;
ret=pre=1;
while(n>2)
{
n--;
tmp=pre;
pre=ret;
ret=pre+tmp;
}
return ret;
}
*/
/*25.用递归的方式求斐波那契数列的第n个数
#include <stdio.h>
int main()
{
int fun(int n);
int n;
printf("请输入n的值:");
scanf("%d",&n);
printf("第%d个数是:%d\n",n,fun(n));
return 0;
}
int fun(int n)
{
if(n==1||n==2)
return 1;
if(n>2)
return (fun(n-1)+fun(n-2));
}
*/
/*24.将多个字符串排序输出
#include <stdio.h>
#include <string.h>
int main()
{
int i,j;
char s[10][20],*p[10],*q;
for(i=0;i<5;i++)
{
scanf("%s",&s[i]);
p[i]=s[i];
}
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(strcmp(p[j],p[j+1])>0)
{
q=p[j];
p[j]=p[j+1];
p[j+1]=q;
}
}
}
for(i=0;i<5;i++)
{
printf("%s\n",p[i]);
}
return 0;
}
*/
/*23.对任意一个整型数组排序(冒泡排序)
//冒泡排序:
// 比较相邻的元素,如果第一个比第二个大,就交换他们两个;if(a[i]>a[i+1])
// 对每一对元素作同样的工作,从开始第一对到结尾的最后一对。for(i=0;i<N-j;i++)
// 持续每次对越来越少的元素重复上面的步骤。直到没有任何一对数字需要比较。for(j=1;j<N;j++)
#include <stdio.h>
#define N 10
int main()
{
void sort(int a[]);
int a[N];
int i;
printf("请输入一个数组:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
sort(a);
printf("排序后数组:");
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void sort(int a[])
{
int i,j,t;
for(j=1;j<N;j++)
{
for(i=0;i<N-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
}
*/
/*22.将一个整型数组逆序
#include <stdio.h>
#define N 10
int main()
{
int a[N];
int i;
int tmp;
printf("请输入一个数组:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<N/2;i++)
{
tmp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=tmp;
}
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
*/
/*21.求一个3*3矩阵对角线元素之和
#include <stdio.h>
int main()
{
int a[3][3];
int sum1=0;
int sum2=0;
int i,j;
printf("请输入一个3*3矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
sum1=sum1+a[i][i];
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if((i+j)==2)
{
sum2=sum2+a[i][j];
}
}
}
printf("sum1=%d,sum2=%d\n",sum1,sum2);
return 0;
}
*/