c语言重点编程题

 

//将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;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值