//将10进制数n转换为r进制数
#include<stdio.h>
#include<string.h>
int main()
{
int n = 0;
int r = 0;
int i = 0;
char a[100];
int d = 0;
scanf("%d %d",&n,&r);
for(i=0;n!=0;i++)
{
d=n%r;
if(d<10)
{
a[i]=d+'0';
}
else
{
a[i]=d-10+'a';
}
n=n/r;
}
a[i]='\0';
strrev(a);
puts(a);
return 0;
}
//使用结构数组进行平面点排序
#include<stdio.h>
struct point
{
int x;
int y;
int d;//d为该点到原点距离的平方
}p[100];
int main()
{
int n = 0;
int i = 0;
int j = 0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&p[i].x,&p[i].y);//取地址符&别忘了加!!!
p[i].d=p[i].x*p[i].x+p[i].y*p[i].y;
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i].d>p[j].d)
{
struct point t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
for(i=0;i<n;i++)
{
printf("(%d,%d) ",p[i].x,p[i].y);
}
return 0;
}
//日期计算
int calu(int year,int month,int day);
int is_leap(int year);
int main()
{
int year,month,day;
scanf("%d %d %d",&year,&month,&day);
int ret=calu(year,month,day);
printf("%d\n",ret);
return 0;
}
int calu(int year,int month,int day)
{
int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int leap=is_leap(year);
int i = 0;
for(i=1;i<month;i++)
{
day=day+a[leap][i];
}
return day;
}
int is_leap(int year)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
return 1;
}
else
{
return 0;
}
}
//用指针做函数参数交换两个变量的值
void swap(int* x,int* y);
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
swap(&a,&b);
printf("%d %d",a,b);
return 0;
}
void swap(int* x,int* y)
{
int t=*x;
*x=*y;
*y=t;
}
//通过指针实现字符串的输入、输出以及字符的输出
int main()
{
char s[20];
char* p=NULL;
p=s;
gets(p);
printf("%s\n",p);
//正序
for(;*p!='\0';p++)
{
printf("%c ",*p);
}
printf("\n");//这个循环过后,指针p中存储的是\0的地址
//倒序
p=p-1;
while(p!=s)
{
printf("%c ",*p);
p--;
}
printf("%c",*s);
return 0;
}
//用指针打印字符串 hello world
int main()
{
char s[]="hello world";
char* p;
char* q;
//打印hello world
for(p=s;*p!='\0';p++)
{
printf("%c",*p);
}
printf("\n");
//打印 hello
q=s+5;//q=&s[5];
for(p=s;p<q;p++)//p<q是指针的关系运算,表示p存储的地址是否小于q存储的地址,其中,p、q必须为两个相同类型的指针
{
printf("%c",*p);
}
printf("\n");
//倒序打印hello world
for(p=s+10;p>=s;p--)
{
printf("%c",*p);
}
printf("\n");
return 0;
}
//用指针实现数组元素的正序及倒序输出
int main()
{
int a[5]={1,2,3,4,5};
int* p;
//正序输出
for(p=a;p<a+5;p++)
{
printf("%d ",*p);
}
printf("\n");
//倒序输出
for(p=a+4;p>=a;p--)//数组名a表示首元素的地址,也就是a[0]的地址 。p=a+4也可以写成p=&a[4]
{
printf("%d ",*p);
}
printf("\n");
return 0;
}
//交换两个指针变量的值
int main()
{
int a = 1;
int b = 2;
int* pa;
int* pb;
int* t;//注意:这里t为指针变量
pa=&a;
pb=&b;
printf("交换前:a=%d,b=%d,*pa=%d,*pb=%d\n",a,b,*pa,*pb);//a=1,b=2,*pa=1,*pb=2
t=pa;
pa=pb;
pb=t;
printf("交换后:a=%d,b=%d,*pa=%d,*pb=%d\n",a,b,*pa,*pb);//a=1,b=2,*pa=2,*pb=1
//交换后,pa中存放的是b的首地址,所以*pa由指向变量a变为指向变量b
// pb中存放的是a的首地址,所以*pb由指向变量b变为指向变量a
return 0;
}
//函数实现打印n行的直角三角形
void print(int i)
{
int j = 0;
for(j=1;j<=i;j++)
{
printf("*");
}
printf("\n");
}
int main()
{
int i = 0;
int n = 0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
print(i);
}
return 0;
}
//输入一个3*3的矩阵,找出其中的max,min及其位置并输出
int main()
{
int a[3][3]={0};
int i = 0;
int j = 0;
int max,min,maxi,maxj,mini,minj;
max=min=maxi=maxj=mini=minj=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
max=min=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
maxi=i;
maxj=j;
}
if(a[i][j]<min)
{
min=a[i][j];
mini=i;
minj=j;
}
}
}
printf("max=%d,在%d行%d列\n",max,maxi+1,maxj+1);
printf("min=%d,在%d行%d列\n",min,mini+1,minj+1);
return 0;
}
//输出杨辉三角的前n行
int main()
{
int i = 0;
int a[20][20]={0};
int n = 0;
int j = 0;
printf("请输入n:");
scanf("%d",&n);
a[0][0]=1;
for(i=1;i<n;i++)
{
a[i][0]=a[i][i]=1;
for(j=1;j<n-1;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%-5d ",a[i][j]);
}
printf("\n");
}
return 0;
}
//对数组的全部元素进行倒序排列
int main()
{
int i = 0;
int a[7]={0};
for(i=0;i<7;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<3;i++)
{
int t = a[i];
a[i]=a[6-i];
a[6-i]=t;
}
for(i=0;i<7;i++)
{
printf("%d ",a[i]);
}
return 0;
}
//使用数组进行成绩处理
int main()
{
int i = 0;
int sum = 0;
int score[5]={0};
for(i=0;i<5;i++)
{
scanf("%d",&score[i]);
sum = sum+score[i];
}
printf("总分:%d\n",sum);
printf("平均分:%.1lf\n",(double)sum/5);
return 0;
}