精华内容
下载资源
问答
  • C语言例题

    2019-06-17 14:54:23
    C语言例题1.用指针交换两个或三个数的值,按大小顺序输出2.同构数3.判断n的位数,按数的正序和逆序输出4.杨辉三角5.最大公约数最小公倍数6.将数字转换成字符串输出7.n以内能被3和7同时除的个数的平方8.1到20阶乘的和...

    1.用指针交换两个或三个数的值,按大小顺序输出

    //三个整数a,b,c,按大小顺序的输出
    #include<stdio.h>
    int main()
    {
    	void exchange(int *q1,int *q2,int *q3);
    	int a,b,c,*p1,*p2,*p3;
        printf("输入三个数:");
    	scanf("%d%d%d",&a,&b,&c);
    	p1=&a;
    	p2=&b;
    	p3=&c;
    	exchange(p1,p2,p3);
    	printf("%d  %d  %d\n",a,b,c);
    	return 0;
    }
    	
    void exchange(int *q1,int *q2,int *q3)
    {
    	void s(int *t1,int *t2);
    	if(*q1<*q2) s(q1,q2);
    	if(*q1<*q3) s(q1,q3);
    	if(*q2<*q3) s(q2,q3);
    }
    void s(int *t1,int *t2)
    {
       int t;
       t=*t1;*t1=*t2;*t2=t; 
    }
    
    
    
    
    //2个 
    #include<stdio.h>
    int main()
    {
    	int a,b,*p1,*p2,*p;
        printf("输入2个数:");
    	scanf("%d%d",&a,&b);
    	p1=&a;
    	p2=&b;
    	if(a<b)
    	{
    	   p=p1;
    	   p1=p2;
    	   p2=p;	
    	}
    	printf("%d  %d\n",a,b);
        printf("%d  %d\n",*p1,*p2);
    }
    
    
    
    
    

    2.同构数

    //同构数是比如5的平方25,其尾数与5相同 
    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	int n=0,x,m,t,g,y;
    	scanf("%d",&x);
    	m=x*x;
    	t=m;
    	do//数位数的判断 
    	{
    		n++;
    		m=m/10;
    	}
    	while (m>0);
    	printf("%d的平方%d是%d位数\n",x,t,n);
        y=(int)pow(10,n-1);//double
    	g=t%y;
    	if(g==x)
    	{
    		printf("%d是同构数\n",x);
    	}
    	else
    	{
    		printf("%d不是同构数\n",x); 
    	}
    	return 0;
    }
    
    

    3.判断n的位数,按数的正序和逆序输出

    #include <stdio.h>
    int main()
    {
    	int n,x1,x2,x3,i;
    	scanf("%d",&n);
    	if(n<9)
    	{
    		i=1;
    		x1=n;
    		printf("位数%d,n=%d,逆序 %d",i,x1,x1);
    	}
    	else if(n<99)
    	{
    		i=2;
    		x1=n%10;
    		x2=n/10;
            printf("位数%d,n=%d%d,逆序 %d%d",i,x2,x1,x1,x2);
    	}
    	else if(n<999)
    	{
    		i=3;
    		x1=n%10;
    		x2=n/10%10;
    		x3=n/100;
    		printf("位数%d,n=%d%d%d,逆序 %d%d%d",i,x3,x2,x1,x1,x2,x3);
    	}
    	printf("\n");
    	return 0;
    }
    
    
    
    
    /*#include<stdio.h>
    int main()
    {
    	int i,n=0,m;
    	scanf("%d",&i);
    	m=i;
    	do{
    		n++;
    		m=m/10;
    	} while(m>0);
    	printf("%d的位数为%d\n",i,n);
    	switch(n)
    	{
    	case 1:printf("");
    	case 2:
    	case 3:
    	return 0;
    }*/
    

    4.杨辉三角

    #include <stdio.h>
    int main()
    {
    	int i,j,n,a[10][10];
    	scanf("%d",&n);//n控制行数
    	for(i=0;i<n;i++)
    	{
    		a[i][0]=a[i][i]=1;
    	}
    	for(i=0;i<n;i++)
    	{
    		for(j=1;j<i;j++)
    		{
    		    a[i][j]=a[i-1][j-1]+a[i-1][j];
    		}
    	}
    	printf("\n");
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<n-1-i;j++)printf("   ");//控制空格
    		for(j=0;j<=i;j++)
    		{
    			printf("%6d",a[i][j]);//2d=一个空格
    		}
    		printf("\n");
    	}
    	return 0;
    }
    
    

    5.最大公约数最小公倍数

    #include <stdio.h>//函数方法
    int gcd(int x,int y);//函数调用
    int icm(int x,int y);
    int main()
    {
    	int n,m;
    	scanf("%d%d",&n,&m);
    	printf("最大公约数:%d\n最小公倍数:%d\n",gcd(n,m),icm(n,m));
    	return 0;
    }
    int gcd(int x,int y)
    {
    	int s,t;
    	if(x<y)//将最大的值存入x
    	{
    		t=x;
    		x=y;
    		y=t;
    	}
    	while(y!=0)
    	{
    		s=x%y;
    		x=y;
    		y=s;
    	}
    	return x;
    }
    int icm(int x,int y)
    {
    	int k=gcd(x,y);
    	return x*y/k;//最小公倍数=两个数相乘/两数的最大公约数
    }
    
    
    
    
    //方法一
    #include <stdio.h>
    int main()
    {
        int x,y;
    	int s,t;
    	scanf("%d%d",&x,&y);
    	if(x<y)
    	{
    		t=x;
    		x=y;
    		y=t;
    	}
    	while(y!=0)
    	{
    		s=x%y;
    		x=y;
    		y=s;
    	}
    	printf("最大公约数=%d",x);
    	return 0;
    }
    
    
    
    
    

    6.将数字转换成字符串输出

    #include <stdio.h>
    int convert(int n);
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	if(n<0)
    	{
    		putchar('-');
    		n=-n;
    	}
    	convert(n);
    	printf("\n");
    	return 0;
    }
    int convert(int n)//函数调用 
    {
    	
    	int i;
    	if((i=n/10)!=0)         //{45/10=4,con(4),{4/10=0,con(0)结束,4%10=4,put(4)},45%10=5,put(5)} 
    	{
    		convert(i);
    	}
    	putchar(n%10+'0');
    	return i;
    }
    
    

    7.n以内能被3和7同时除的个数的平方

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	int n,i;
    	double s,t=0;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		if(i%3==0&&i%7==0)//n以内能被3和7同时除
    		{
    			t+=i;
    		}
    	}
    	s=pow(t,2);//pow(x,y),计算x的y次方,double类型
    	printf("s=%5lf\n",s);
        return 0;
    }
    
    

    8.1到20阶乘的和

    
    
    #include <stdio.h>//1+2!+3!+4!....+20!的和
    int main()
    {
    	double n,s=0,t=1;
    	for(n=1;n<=20;n++)
    	{
    		t*=n; 
    		s+=t;
    	}
    	printf("s=%lf\n",s);
    	return 0;
    }
    
    /* 
    
    #include <stdio.h>
    int main()
    {
    	double fun(int n);
    	int  i; 
    	double sum=0;
        for(i=1;i<=20;i++)
    	    sum+=fun(i);
    	printf("%lf\n",sum);
    	return 0;
    }
    
    double fun(int n)
    {
    	double f;
    	if(n<0)
    	{
    		printf("无效");
    	}
    	else if(n==0||n==1)
    	{
    		f=1;
    	}
    	else 
    	{
    		f=fun(n-1)*n;
    	}
    	return (f);
    }
    
    */
    
    

    9.n!的计算

    
        //调用函数,函数的递归 
    #include <stdio.h>
    int main()
    {
    	double fun(int n);
    	int n; 
    	double sum;
    	printf("输入n:");
    	scanf("%d",&n); 
    	sum=fun(n);
    	printf("n!=%.2lf\n",sum);
    	return 0;
    
    }
    double fun(int n)
    {
    	double f;
    	if(n<0)
    	{
    		printf("无效");
    	}
    	else if(n==0||n==1)
    	{
    		f=1;
    	}
    	else 
    	{
    		f=fun(n-1)*n;
    	}
    	return (f);
    }
    
    
    
    
    /*#include <stdio.h>
    int main()
    {
    	int i,n;
    	double sum=1;
    	scanf("%d",&n);
    	for(i=1;i<=n;i++)
    	{
    		sum=sum*i;
    	}
    	printf("%d!=%lf",n,sum);
    	printf("\n");
    	return 0;
    }*/
    
    
    
    

    10.判断其中的空格,数字,大写字母,小写字母的个数

    //输入一段字符串,判断其中的空格,数字,大写字母,小写字母的个数
    
    #include <stdio.h>
    int main()
    {
    	int i,a=0,b=0,c=0,d=0;
    	char x[10];
    	for(i=0;i<10;i++)
    	{
    		scanf("%c",&x[i]);
    		if(x[i]==' ')
    		{
    			a=++a;
    		}
    		else if(x[i]>='a'&&x[i]<='z')
    		{
    			b=++b;
    		}
    		else if(x[i]>='A'&&x[i]<='Z')
    		{
    		    b=++b;
    		}
           	else if(x[i]>='0'&&x[i]<='9')
    		{
    		 	c=++c;
    		}
    		else
    		{
    			d=++d;
    		}
    	}
    		printf("空格%d个\n英文%d个\n数字%d个\n其他%d个\n",a,b,c,d);
    		return 0;
    }
    
    

    判断偶数

    #include <stdio.h>
    int main()
    {
    	int n;
    	while(n){
    	scanf("%d",&n);
    	if(n%2==0)
    	{
    		printf("是\n");
    	}
    	else 
    	{
    		printf("否\n");
    	}
    	}
    	return 0;
    }
    

    11.将数组a中的的元素按相反顺序存放2

    #include <stdio.h>
    int main()
    {
    	void f(int *x,int n);
    	int i,a[10]={1,2,3,4,5,6,7,8,9,10};
    	printf("The original array:\n");
    	for(i=0;i<10;i++)
    	{
    		printf("%d, ",a[i]);
    	}
    	printf("\n");
    	f(a,10);
    	printf("The inverted array:\n");
    	for(i=0;i<10;i++)
    	{
    		printf("%d, ",a[i]);
    	}
    	printf("\n");
    	return 0;
    }
    void f(int *x,int n)
    {
    	int *p,t,*i,*j,m=(n-1)/2;
    	i=x;
    	j=x+n-1;//9
    	p=x+m;
    	for(i=x;i<=p;i++,j--)
    	{
    		t=*i;
    		*i=*j;
    		*j=t;
    	}
    	return;
    }
    
    

    12.用指针的方法输出二维数组的值

    //编程,用指针的方法输出二维数组的值
    
    /*#include <stdio.h>
    int main()
    {
    	int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
    	int *p;
    	for(p=a[0];p<a[0]+12;p++)
    	{
    	    if((p-a[0])%4==0) printf("\n");//p移动四次后换行
    		printf("%4d",*p);
    	}
    	printf("\n");
    	return 0;
    }*/
    
    
    #include<stdio.h>
    int main()
    {
    	int a[3][3]={1,2,3,4,5,6,7,8,9};
    	int *p,i,j;
    	p=a[0];
    	for(i=0;i<3;i++)
    	{
    		for(j=0;j<3;j++)
    		{
    			printf("%d  ",*(p+i*3+j));//是二维数组还是顺序存储的特点来直接计算a[i][j]的存储位置
                                            //*(p+i*3+j)就是a[i][j],因为p是指向首元素的元素指针,a每行有3个元素,
    			                            //这样a[i][j]按行优先存储时,和a[0][0]差了这么多个元素:i*3+j
    		}
    		printf("\n");
    	}
    	return 0;
    }
    
    //计算a[i][j]的在数组中的计算公式为i*m+j
    

    13.编一个函数调用求不能同时被7和11整除的个数

    /*#include <stdio.h>
    int main()
    {
       void count(int n);
       int n;
       scanf("%d",&n);
       count(n);
       printf("\n");
       return 0;
    }
    
    void count(int a)
    {
    	int i,j=0,k;
    	int num=0;
    	for(i=1;i<=n;i++)
    	{
    		if(i%7==0||i%11==0)
    		{
    			printf("%d  ",i);
    			num++;
    			if(num%6==0)
    			{
    				printf("\n");
    			}
    		}
    	
    	}
    }*/
    //编写函数,求出1~1000之间能被7或11,但不能同时被7和11整除的数存入数组,挑用主函数讲数组输出
    #include <stdio.h>
    int f(int a[])
    {
    	int i=0,n;
    	for(n=1;n<=1000;n++)
    	{
    		if(n%7==0||n%11==0)
    		{
    			if(n%77!=0)
    			{
    				a[i]=n;
    				i++;//i用于求出数组的大小
    			}
    		}
    	}
    	return i;//返回i的长度
    }
    int main()
    {
    	int a[300],length,i;
    	length=f(a);//函数的调用
    	for(i=0;i<length;i++)
    	{
    		printf("%-4d",a[i]);//将数组调用出来
    		if((i+1)%5==0)
    		{
    			printf("\n");
    		}
    	}
    	printf("\n不能同时被7和11整除的个数\n%d\n",length);
    }
    

    14.将数组a中的的元素按相反顺序存放1

    #include <stdio.h>
    int main()
    {
    	void f(int *x,int n);
    	int i,a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
    	printf("The original array:\n");
    	for(i=0;i<10;i++)
    	{
    		printf("%d, ",a[i]);
    	}
    	printf("\n");
    	f(p,10);
    	printf("The inverted array:\n");
    	for(p=a;p<a+10;p++)
    	{
    		printf("%d, ",*p);
    	}
    	printf("\n");
    	return 0;
    }
    void f(int *x,int n)
    {
    	int *p,t,*i,*j,m=(n-1)/2;
    	i=x;
    	j=x+n-1;//9
    	p=x+m;
    	for(i=x;i<=p;i++,j--)
    	{
    		t=*i;
    		*i=*j;
    		*j=t;
    	}
    }
    
    

    15.将两个字符串连接起来

    #include <stdio.h>
    #include <string.h>
    int main()
    /*{
    	char str1[20]={"hello"};
    	char str2[20]={" world!"};
    	strcat(str1,str2);
    	printf("%s\n",str1);
    	return 0;
    }*/
    
    
    {
    	char str1[20]={"hello"};
    	char str2[20]={" world!"};
    	char str3[40];
    	int i=0,j=0,k;
    	while(str1[i]!='\0')
    	{
    		i++;
    	}
    	while(str2[j]!='\0')
    	{
    		j++;
    	}
    	for(k=0;k<i;k++)
    	{
    		str3[k]=str1[k];
    	}
    	for(k=0;k<j;k++)
    	{
    		str3[k+i]=str2[k];
    	}
    	str3[i+j]='\0';
    	printf("%s",str3);
    	return 0;
    }
    

    16.素数判定

    #include <stdio.h>
    int main()
    {
    	int n,i=3;
    	scanf("%d",&n);
    	t=sqrt(n)+1;
    	while(i<=t)
    	{
    		if(n%i==0)
    		{
    			break;
    		}
    		i=i+2;
    		printf("")
    	}
        
    

    17.输入一个字符串,将小写换为大写

    //输入一个字符串,将小写换为大写
    
    #include <stdio.h>
    int main()
    {
    	char ch[10];
    	int i;
    	scanf("%s",ch);
    	for(i=0;ch[i]!='\0';i++)
    	{
        	if('a'<=ch[i]&&ch[i]<='z')
        	{
        		printf("%c",ch[i]-32);
    		}
    		else
    		{
    			printf("%c",ch[i]);
    		}
    	}
    	return 0;
    }
    
    
    
    

    18.99乘法表

    //*#include <stdio.h>
    int main()
    {
    	int i,j;
    	for(i=1;i<=9;i++)
    	{
    		for(j=1;j<=i;j++)
    		{
    			printf("%d*%d=%d\t",i,j,i*j);
    		}
    		printf("\n");
    	}
    	return 0;
    }*/
    #include <stdio.h>
    int main()
    {
    	int i,j;
    	for(i=1;i<=9;i++)
    	{
    		for(j=i;j<=9;j++)
    		{
    			printf("%d*%d=%d\t",i,j,i*j);
    		}
    		printf("\n");
    	}
    	return 0;
    }
    

    19.冒泡排序法

    //冒泡排序法
    第一个
    #include<stdio.h>
    int main()
    {
    	int a[8]={55,67,45,30,20,70,88,11};
    	int i,j,t;
    	for(j=0;j<8;j++)
    	{
    		for(i=0;i<8-j;i++)
    		{
    			if(a[i]>a[i+1])
    			{
    				t=a[i];
    				a[i]=a[i+1];
    				a[i+1]=t;
    			}
    		}
    	    printf("change:");
            for(i=0;i<8;i++)
    		{
    	 	    printf(" %d",a[i]);
    		}
    	    printf("\n");
    	}
    	return 0;
    }
    
    第二个
    #include<stdio.h>
    int main()
    {
    	int a[8]={55,67,45,30,20,70,88,11};
    	int i,j,t;
    	for(j=0;j<8;j++)
    	{
    		for(i=0;i<8-j;i++)
    		{
    			if(a[i]>a[i+1])
    			{
    				t=a[i];
    				a[i]=a[i+1];
    				a[i+1]=t;
    			}
    		}
    	}
    	printf("change:");
    	for(i=0;i<8;i++)
    	{
    		printf(" %d",a[i]);
    	}
    	printf("\n");
    	return 0;
    }
    

    第一个

    第二个
    在这里插入图片描述

    20.哥德巴赫猜想

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	long n,p1,p2,e,i;
    	scanf("%ld",&n);
    	for(p1=3;p1<=n/2;p1+=2)
    	{
    		e=(long)sqrt((double)p1);
    		for(i=2;i<=e;i++)
    		{
    			if(p1%i==0) break;
    		}
    		if(i>e)
    		{
    			p2=n-p1;
    		}
    		else
    		{
    			continue;
    		}
    		e=(long)sqrt((double)p2);
    		for(i=2;i<=e;i++)
    		{
    			if(p2%i==0) break;
    		}
    		if(i>e)
    		{
    			printf("%ld=%ld+%ld\n",n,p1,p2);
    			break;
    		}
    	}
    	if(p1>n/2)
    		printf("偶数%ld不符合哥德巴赫猜想",n);
    	return 0;
    }
    
    

    21.素数

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	int n,k,i,m=0;
    	for(n=1;n<=200;n++)
    	{
    		k=sqrt(n);
    		for(i=2;i<=k;i++)
    		{
    			if(n%i==0) break;
    		}
    		if(i>k)
    		{
    			printf(" %d",n);
    			m+=1;
    		}
    		if(m%10==0) printf("\n");
    	}
    	printf("\n");
    	return 0;
    }
    
    

    22.函数关系

    #include <stdio.h>
    int main()
    {
    	float x,Y;
    	scanf("%f",&x);
    	if(x<0) Y=0;
    	else if(x<10) Y=x;
    	else if(x<=20) Y=10;
    	else Y=-0.5*x+20;
    	printf("%.2f",Y);
    	return 0;
    }
    

    23.成绩转换

    //大于等于90为A
    #include<stdio.h>
    int main()
    {
    	int grade;
    	char result;
    	scanf("%d",&grade);
    	switch(grade/10)
    	{
    		case 10:
    		case 9:result='A';break;
    		case 8:result='B';break;
    		case 7:result='C';break;
    		case 6:result='D';break;
    		case 5:
    		case 4:
    		case 3:
    		case 2:
    		case 1:result='E';break;
    	
    		default:printf("enter date error!"); 
    	}
    		printf("%c\n",result);
    
    	return 0;
    }
    
    //.>=85为A
    
    #include<stdio.h>
    int main()
    {
    	int grade;
    	char result;
    	scanf("%d",&grade);
    	switch((grade+5)/10)
    	{
    		case 10:
    		case 9:result='A';break;
    		case 8:result='B';break;
    		case 7:result='C';break;
    		case 6:result='D';break;
    		default:result='E'; 
    	}
    		printf("%c\n",result);
    
    	return 0;
    }
    
    
    

    24.三角形判断

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	double x1,x2,x3,y1,y2,y3;
    	double d1,d2,d3;
    	double s,area,perimeter;
    	printf("输入坐标:");
    	scanf("%lf,%lf,%lf,%lf,%lf,%lf",&x1,&y1,&x2,&y2,&x3,&y3);
    	d1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    	d2=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
    	d3=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
    	if(d1+d2>d3&&d1+d3>d2&&d2+d3>d1)
    	{
    		s=(d1+d2+d3)/2;
    	    area=sqrt((s-d1)*(s-d2)*(s-d3)*s);
    		perimeter=2*s;
    		printf("组成三角形的周长=%.2lf,面积=%.2lf\n",perimeter,area);
    	}
    	else
    		printf("这3个点不能组成三角形\n");
    	return 0;
    }
    
    
    

    25.存款

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    	float n,deposit;
    	float rate=0.0295;
    	float capital=100000;
    	scanf("%f",&n);
    	deposit=capital*pow(1+rate,n);
    	printf("deposit=%f\n",&deposit);
    	return 0;
    }
    

    26.工资

    #include <stdio.h>
    int main()
    {
    	float time,year,salary;
    	scanf("%f,%f",&time,&year);
    	if(year<5)
    	{
    		if(time<=40) salary=30*time;
    		else salary=40*30+(time-40)*(1.5*30);
    	}
    	else
    	{
    		if(time<=40) salary=50*time;
    		else salary=40*50+(time-40)*(1.5*50);
    	}
    	printf("salary=%.1f",salary);
    	return 0;
    }
    

    26.火车运行时间

    #include <stdio.h>
    int main()
    {
    	int depart,arrive,h,m1,m2,am,dm;
    	scanf("%d%d",&depart,&arrive);
        h=arrive/100-depart/100;
        dm=depart%100;
    	am=arrive%100;
    	if(am>=dm)
    	{
    		m1=am-dm;
    		printf("traval time is %d hour(s) %d minute(s)",h,m1);
    	}
    	if(am<dm)
    	{
    		m2=am+60-dm;
    		h=h-1;
    		printf("traval time is %d hour(s) %d minute(s)",h,m2);
    	}
    	return 0;
    }
    

    27.圆

    #include <stdio.h>
    #define PI 3.1415926
    int main()
    {
    	double r,pertimrter,area;
    	scanf("%lf",&r);
    	pertimrter=2*PI*r;
    	area=PI*r*r;
    	printf("pertimrter=%lf\tarea=%lf\t",pertimrter,area);
    }
    
    
    
    展开全文
  • c语言 例题

    2013-01-05 18:32:34
    C程序设计例题源码(谭浩强第3版)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,990
精华内容 1,596
关键字:

c语言例题

c语言 订阅