C语言程序设计题/C语言计算机二级考前押题版

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

C语言程序设计题/C语言计算机二级考试押题版

与 数位 和 数 有关

求max与min

任意四个数

运算符和表达式版本

#include <stdio.h>
int main( )
{
	int a,b,c,d;
	int max,min;
	printf("please input 4 integers:");
	scanf("%d%d%d%d", &a, &b, &c, &d); /*输入4个整数*/
	max=min=a;				/*初始化最大、最小值*/
	max=max>b?max:b;		/*max与变量b比较较大的数存在max*/
	min=min<b?min:b;		/*min与变量b比较较小的数存在min*/
	max=max>c?max:c;		/*max与变量c比较较大的数存在max*/
	min=min<c?min:c;		/*min与变量c比较较小的数存在min*/
	max=max>d?max:d;		/*max与变量d比较较大的数存在max*/
	min=min<d?min:d;		/*min与变量d比较较小的数存在min*/
	printf("max=%d, min=%d\n",max,min);
	return 0;
}

任意三个数求max

三目运算符
#include <stdio.h>
int main( )
{
	int a,b,c;
	printf("please input 3 integers:");
	scanf("%d%d%d%d", &a, &b, &c); /*输入3个整数*/
	printf("max=%d\n",a>b?(a>c?a:c):(b>c?b:c));//二维的思路-> a>b?a:b;
	return 0;
}
循环语句
# include<stdio.h>
int main()
{	
    int a,b,c,t;
	scanf("%d%d%d",&a,&b,&c);
    if(a>b)
      if(a>c) t=a;
      else t=c;
    else if(b>c) t=b;
      else t=c;
	printf("%d\n",t);
	return 0;
}
数组元素

(考的可能性小)

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int max = arr[0];
	//若有负数则不可取int max = 0;
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		if (arr[i] > max)
			max = arr[i];
	}
	printf("%d\n", max);
	return 0;
}

三位数数位求和各种变体

本体

a=n%10;     /*计算n的个位上的数字*/
b=n/10%10;   /*计算n的十位上的数字*/
//b=n%100/10;
c=n/100;     /*计算n的百位上的数字*/

本位求和

#include <stdio.h>
int main( )
{
	int num,unit,dec,per,total;
	printf("Input a integer number(100~999):");
	scanf("%d", &num);			
	unit=n%10;     /*计算n的个位上的数字*/
	dec=n/10%10;   /*计算n的十位上的数字*/
	per=n/100;     /*计算n的百位上的数字*/
	total=unit+dec+per;    /*计算n的逆序数*/
	printf("%d\n",total);		/*输入rn*/
	return 0;
}
递归实现
#include <stdio.h>
int digitSum(int num)
{
   if(num<10) 
       return num;
    else  
       return  num%10 + digitSum(num/10);
}
int main()
{
    int n, sum;
    printf("Please input the number:");
    scanf("%d", &n);
    sum=digitSum(n);
    printf("%d\n", sum);
    return 0;
}
变体
#include<stdio.h>
int fun(int x)
{	
    int n,s1,s2,s3,t;
	n=0;
	t=100;
	while(t<=999)
	{	
        s1=t%10;
		s2=t/10%10;
		s3=t/100;
		if(s1+s2+s3==x)
		{	
            printf("%d\t",t);
			n++;
		}
		t++;
	}
	return n;
}
int main()
{	
    int x;
	scanf("%d",&x);
	printf("%d",fun(x));
	return 0;
}

水仙花数

关键句 : if(x==(pow(a,3)+pow(b,3)+pow(c,3)))

#include<stdio.h> 
#include<math.h>
int main()
{ 	int x=100,a,b,c;
	while(x>=100&&x<1000)
	{   
        a=x/100;
		b=x%100/10;
		c=x%10;
	    if(x==(pow(a,3)+pow(b,3)+pow(c,3)))
		     printf("%5d",x);
	    x++;
	}
return 0;
}
函数调用
#include <stdio.h>
int narcissus(int n)
{
	int i,j,k;
	i=n%10;
	j=n/10%10;
	k=n/100;
	if (i*i*i+j*j*j+k*k*k==n)
		return 1;
	else 
		return 0;
}
int main( )
{
	int i;
	for (i=100;i<=999;i++)
		if (narcissus(i))
			printf("%5d",i);
		printf("\n");
		return 0;
}

逆序输出

关键句 : rn=a * 100+b * 10+c;

#include <stdio.h>
int main( )
{
	int n;     /*定义变量n表示三位正整数*/
	int a,b,c; /*定义变量a、b、c分别表示n的个位、十位、百位上的数字*/
	int rn;    /*定义变量rn表示n的逆序数*/
	printf("Input a positive integer(100~999):");
	scanf("%d", &n);			/*输入n*/
	a=n%10;     /*计算n的个位上的数字*/
	b=n/10%10;   /*计算n的十位上的数字*/
	c=n/100;     /*计算n的百位上的数字*/
	rn=a*100+b*10+c;    /*计算n的逆序数*/
	printf("%d\n",rn);		/*输入rn*/
	return 0;
}

count++

给一个不多于5位的正数:求出他是几位数,并按位打印

#include<stdio.h>
int main()
{	int n,m,r,count=0;
	printf("please input a integer:\n");
	scanf("%d",&m);
	if (m<0)  //判断是不是正数
		m=-m; //负数取相反数
	n=m;      //换新的代号
	do
	{	
		r=m%10;//不断取余数,将所给数拆开
		printf("%d",r);//拆一个打印一个
		count++;//统计拆了几个
		m=m/10;//降数量级
	}while (m); 
	printf("\n%d has %d digits\n",n,count);
	return 0;
}

数列规律

Fibonacci

#include <stdio.h>
int main( )
{
	int f1, f2, f3;
	int i;
	f1 = 1;
	f2 = 1;
	i = 2;
	printf( "%d %d ", f1, f2 );
	while ( i < 10 )
	{
		f3 = f1 + f2;
		printf( "%d ", f3 );
		f1 = f2;
		f2 = f3;
		i++;
	}
	printf( "\n" );
	return 0;
}
大于t最小的数
int fun(int t)
{	
    int a=1,b=1,c=0,i;
	for(i=4;i<=t;i++)
	{	
        if(c<t)
		{	
        	c=a+b;	
         	a=b;		
         	b=c;
        }
		else 	
            break;
	}
	return c;
}

约束范围

double fun(double x)
{	
    double s1=1.0,p=1.0,sum=0.0,s0,t=1.0;
	int n=1;
	do
	{	
        s0=s1;
		sum+=s0;
		t*=n;
		p*=(0.5-n+1)*x;
		s1=p/t;
		n++;
	}while(fabs(s1-s0)>1e-6);
	return sum;
}

前20项求和

2/1+3/2+5/3+8/5+13/8+21/13

#include<stdio.h> 
int main()
{	int i=1,n; 
	double t,x=1,y=2,s,sum=0;
	while(i<=20) //控制前20个元素相加
	{	
		s=y/x;     //单元素形式
		sum=sum+s; //求和形式
		t=y;       //找一临时变量
		y=y+x;     //下一个数的分子=上一个数的分子+上一个数的分母
		x=t;       //安放临时变量
		i++;       //使递增
	}
	printf("%f\n",sum);
	return 0;
}

a递增求和(考-)

#include<math.h>
#include<stdio.h>
int main()
{ 	
    int n,sum=0,i=1,s,a;
	printf("please input a=");//原子项
	scanf("%d",&a);
	printf("please input n=");//项数
	scanf("%d",&n);
	s=a;
	while(i<=n)//控制项数
	{  
        sum=sum+s;//最终累计求和结果
		s=s*10+a;//变项:增加数量级的项
		i++;//自增
	}
	printf("sum=a+aa+aaa+...+a...a=%d\n",sum);
	return 0;
}

正负号变换(考)

s=m-m2/2+m3/3-m4/4+…,要求最后一项绝对值小于10-4

#include <stdio.h>
#include <math.h>
int main( )
{
	double s, m, item;
	int n, sign;
	scanf( "%lf", &m );
	s = 0;
	n = 1;
	sign = 1;//按体意先规定第一项为正
	item = 1;
	do
	{
		item = item * m / n;//不加符号项,实质是控制m的累乘
		s += sign * item;  //最终项
		sign = - sign;	   //符号变换		
		n++;               //分母自增
	} while( fabs( item ) >= 1E-4 );//按要求控制
	printf( "%.2f\n", s );
	return 0;
}

分母!求和(考-)

double fun(int n)
{	
    double t,sn=1.0;
	int i,j;
	for(i=1;i<n;i++)
	{	
        t=1.0;
		for(j=1;j<=i;j++)
			t=t*j;
		sn+=1.0/t;
	}
	return sn;
}

图案打印

筝型(考)

image-20230526200621912

#include<math.h>
int main()
{	
	int i=1,k,l,m;
	for(;i<=49;i++)//1 - 49
	{	
		k=i%7;//余数
		l=3-(int)fabs((i-1)/7-3);
		m=(int)fabs(i-4-7*((i-1)/7));
		if(k==1) //余数为1
            printf("\n");
		if(m<=l) 
            printf("*");
		else 
            printf(" ");
	}    
	printf("\n");
	return  0;  
}

n行菱形

#include <stdio.h>
void printDiamond(int k);
int main()
{
    int n;
    scanf("%d",&n);
    printDiamond(n);
    return 0;
}
void printDiamond(int k)
{
    int i,j,n;
    n = k/2+1;
    for(i = 0;i<n;i++)
    {
        for(j=0;j<n-i; j ++)
            putchar(' ');
        for(j = 0; j<2*i+1; j++)
            putchar('*');
        putchar('\n');
    }
    for(i = n-2; i>=0; i --)
    {
        for(j=0;j<n-i; j ++)
            putchar(' ');
        for(j = 0; j<2*i+1; j++)
            putchar('*');
        putchar('\n');        
    }
}

倒三角(考)

#include <stdio.h>
int main( )
{
	int i, j;
	for ( i=1 ; i<=5 ; i++ );        //用i先控制总行数
	{
		for ( j=1 ; j<=i-1 ; j++ )   // 0 1 2 3 4
			printf( " " );           //打印空格数
		for ( j=1 ; j<=11-2*i ; j++ )// 9 7 5 3 1
			printf( "*" );           //打印*号
		printf( "\n" );              //控制换行
	}
	return 0;
}

平行四边形

#include <stdio.h>
#include <math.h>
int main( )
{
	int i, j;
	for ( i=1 ; i<=5 ; i++ )//用i先控制总行数
	{
		if ( i<=3 )//前三行正左三角,后下两行倒右三角
		{
			for ( j=1 ; j<=3-i ; j++ )// 2 1 0
			printf( " " );           //打印空格数
		}
		for ( j=1 ; j<=3-fabs(3-i) ; j++ )// 3-|3-i|= 1 2 3 2 1
			printf( "*" );
		printf( "\n" );
	}
	return 0;
}

数学题

完数

6=1+2+3,找出1000内的

image-20230526185914740

#include<stdio.h> 
int main()
{	
	int m,i,j,s;
	for(m=6;m<1000;m++)//先圈定范围6开始--1000为止
	{	
		s=1;
		for(i=2;i<m;i++)
            if(m%i==0) //能被整除,没余数
               s=s+i;  
            if(m-s==0) //
            {	
                printf("%5d its fastors are 1 ",m);
                for(j=2;j<m;j++)
                    if(m%j==0)
                         printf("%d ",j);
                printf("\n");
              }
	}
	return 0;
}

质数(考)

#include <stdio.h>
#include <math.h>
int main( )
{
	int n, i, k, count = 0;
	for ( n = 101 ; n <= 999 ; n += 2 )//每次增2,减少循环次数
	{                                  //总共:101-999
		k = (int)sqrt(n);//开根号后,强制类型转换
		for ( i = 2 ; i <= k ; i++ )//2-k,小于k的数
		{
			if ( n % i == 0 )//能被整除就跳出循环
			{
				break;
			}
		}
		if ( i > k )
       //承接上一段for语句,如顺利运行到这步:被除数大于强制类型转换后的数
       //循环除完了,都无约数,即为质数
		{
			count++;//计数
			printf( "%4d", n );//3位数,多1个空格,"%4d"打印
			if ( count % 8 == 0 )//每行8个
				printf( "\n" );
		}	
	}
	printf( "\n" );
	return 0;
}

哥德巴赫猜想

#include <stdio.h>
#include <math.h>
int judgePrime(int n) ;
int main( )
{
	int m,j,k;
	int count=1;
	printf("%4d=%4d+%4d",4,2,2);                 /*对4单独处理*/
	for (m=6;m<=2000;m=m+2)                      /*从6开始分解*/
	{
		k=(int)sqrt(m);                       /*控制最大的第一加法因子终值*/
		for (j=3;j<=k;j=j+2)                  /*扫描加法因子是不是质数*/
			if (JudgePrime(j) && JudgePrime(m-j))/*两个加法因子均为质数*/
			{
				printf("%4d=%4d+%4d      ",m,j,m-j);/*输出分解的式子*/
				count++;                            /*输出个数加1*/
				if (count%4==0)                     /*根据个数控制换行*/
					printf("\n");
				break;                             /*找到一种分解就退出*/
			}
	}
	printf("\n");
	return 0;
}
int judgePrime(int n)                        /*直接用教材中例5_3的代码*/
{	
	int i,k ;       
	if ( n==1 )          
		return 0 ;             
	k = (int) sqrt ( n );      	   	     
	for (i = 2; i<=k ; i++)          
		if (n % i == 0)     
			return 0 ;       
		return 1;           
} 

符号函数

#include <stdio.h>
int main( )
{
	int x, sign;	
	scanf( "%d", &x );
	if ( x > 0 )
		sign = 1;
	else if ( x == 0 )
		sign = 0;
	else
		sign = -1;
	printf( "%d -- %d\n", x, sign );
	return 0;
}

勾股数(考过)

#include <stdio.h>
int main( )
{
	int x, y, z;
	for( x = 1 ; x <=48  ; x++ )
		for( y = x+1 ; y <=49 ; y++ )
			for( z = y+1 ; z <=50 ; z++ )
			{
				if ( x*x + y*y == z*z )
					printf( "%3d %3d %3d\n", x, y, z );
			}
	return 0;
}

辗转相除(可能)

image-20230526130804382

#include <stdio.h>
int main( )
{
	int a, b, d;
	scanf( "%d%d", &a, &b );
	d = a % b;
	while ( d != 0 )
	{
		a = b;
		b = d;
		d = a%b;
	}
	printf( "%d\n", b );
	return 0;
}

摄氏度/华氏度

#include <stdio.h>
int main( )
{
	float f,c;
	printf("Input:\nF=");		
	scanf("%f", &f);			/*输入华氏温度*/
	c=5.0/9.0*(f-32);			/*计算设施温度*/
	printf("C=%.2f\n",c);		/*按格式输出*/
	return 0;
}

函数写法

#include <stdio.h>
double CelToFah ( double c)
{
	return c*9/5+32;
}
int main( )
{
	double c;
	scanf("%lf",&c);
	while (c>=0)
	{
		printf("Cel=%lf, Fah=%lf\n",c,CelToFah (c));
		scanf("%lf",&c);
	}
	return 0;
}

同时被3和7整除和的平方根

s=sqrt(s);

double fun(int n)
{	
	double s=0.0;
	int i;
	for(i=1;i<n;i++)
		if(i%3==0&&i%7==0)
			s=s+i;
	s=sqrt(s);
	return s;
}

计算因子和

s+=i;

int fun(int n)
{	
    int s=0,i;
	for(i=2;i<=n-1;i++)
		if(n%i==0)
			s+=i;
	return s;
}

3-n素数平方根和

s+=sqrt(m);

double fun(int n)
{	
    int m,k,i;
	double s=0.0;
	for(m=3;m=n;m++)
	{	
        k=sqrt(m);
		for(i=2;i=k;i++)
			if(m%i==0) 
                break;
		if(i>=k+1)
			s+=sqrt(m);
	}
	return s;
}

自然数倒数和(考-)

关键语句: sum+=1.0/i;

double fun(int n)
{	
    int i;
	double sum=0.0;
	for(i=1;i<=n;i++)
		if(i%5==0||i%9==0)
			sum+=1.0/i;
	return sum;
}

杨辉三角(考)

#include <stdio.h>
#define N 16
int main()
{
    int i,j,n=0;
    int a[16][16]={0};
    do
    {
      printf("请输入杨辉三角形的行数:");
      scanf("%d",&n);
    }while(n<1 || n>16);
    for(i=0;i<n;i++)
    	a[i][0]=1;
    for(i=1;i<n;i++)
     	for(j=1;j<=i;j++)
       		a[i][j]=a[i-1][j-1]+a[i-1][j];
    for(i=0;i<n;i++)
    { 
        for(j=0;j<=i;j++)
        	printf("%5d",a[i][j]);
        printf("\n");
   }
   return 0;
}

计算是第几天

#include<stdio.h>
int main()
{
    int year,month,day,days,i;
    int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d-%d-%d",&year,&month,&day);
    if(year%400==0||(year%4==0&&year%100!=0))
        b[2]=29;
    days=day;
    for(i=1;i<month;i++)
        days=days+b[i];
    printf("%d\n",days);
    return 0;
}

字符串

@结束

​ for( m=0; getchar()!=‘@’; )

long func()
{  
	long m;
	for( m=0; getchar()!='@'; )
	m++;
	return  m;
}

整型->字符串

# include <stdio.h>
void convert(int n)
{	
    int i;
	if((i=n/10) != 0)
		convert(i);
	putchar(n%10+'0');
	putchar(' ');
}
int main()
{	
    int number;
	printf("输入整数");
	scanf("%d", &number);
	printf("输出是");
	if(number < 0)
	{	
        putchar('-');
		number = -number;
	}
	convert(number);
	putchar('\n');
    return 0;
}

指针调用字符串比较

# include <stdio.h>
# include <string.h>
void check(char *a, char *b, int(*cmp)(const char *, const char *));
void main()
{	
    char s1[80], s2[80];
	int(*p)(const char *, const char *);    /* 函数指针 */
	p = strcmp;    /* 将函数strcmp的地址赋给函数指针p */
	printf("输入两个字符串\n");
	gets(s1);    /* 输入字符串1 */
	gets(s2);    /* 输入字符串2 */
	check(s1, s2, p);    /* 通过指针变量p传递函数strcmp的地址 */
}
void check(char *a, char *b, int(*cmp)(const char *, const char *))
{	
    printf("测试是否相等\n");
	if(!(*cmp)(a, b))
		printf("结果相等\n");
	else
		printf("结果不相等\n");
}

重复字符删除后输出

#include <stdio.h>
void deleteSame(char *s)       //对串s删除相同的元素
{	
	int i=0,j,k;
	while(s[i])               //对s[i]进行判断
	{	for (j=0;j<i;j++)       //与本串中其前面所有字符比较
		  if (s[i]==s[j]) 
			  break; //只要与其中一个字符相等则退出循环将删该字符
		if (j<i)               //上面循环停止时如果符合此条件说明应删除s[i]
		  for (k=i;s[k];k++)    //删除s[i]字符
			s[k]=s[k+1];
		else i++;		        //若当前s[i]不需要删除则准备比较下一个字符
	}
}
int main()
{	
	char str[40];
    printf("input a string:\n");
	gets(str);
    printf("string deleted the same character is:\n");
	deleteSame(str);
	puts(str);   
    return 0;
} 

字符串逆置(考-)

#include <stdio.h>
#include <string.h>
void reverse(char *p)
{
    int i,j;
    char t;
    int n=strlen(p);
    for(i=0,j=n-1;i<j;i++,j--)
    {
        t=p[i];
        p[i]=p[j];
        p[j]=t;
    }
}
int main()
{	
    char str[20];
	printf("Input the string:");
	gets(str);
	printf("Before reverse:");
	puts(str);
	reverse(str);
	printf("After reverse:");
	puts(str);
	return 0;
}

大小写转换

#include <stdio.h>
void change(char *p)
{
    while(*p)
    {
	    if (*p>='a'&&*p<='z')
                *p=*p-32;
            p++;
    }
}

int main()
{   
	char str[20];
	gets(str);
	change(str);
	puts(str);
	return 0;
}

过滤非数字的字符

#include <stdio.h>
#include <string.h>
void change(char *p)
{  
    char a[20];
    int i=0,j;
    strcpy(a,p);
    for(j=0;a[j];j++)
    {
	if (a[j]>='0'&&a[j]<='9')
            p[i++]=a[j];
    }
    p[i]='\0';
}
int main()
{
    char str[20];
    gets(str);
    change(str);
    puts(str);
    return 0;
}

数组

删去数组相同元素

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define N 80
int fun(int a[], int n)
{    
    int i=1,j;
    int count=1;
    int flag;
    while(i<n)
    {  
        flag=1;
        for(j=0;j<count;j++)
        {     
            if (a[j]==a[i])
            {  
                flag=0;break;  
            }
        }
        if (flag)
        {  
            count++;
            a[count-1]=a[i];
        }
        i++;
    }
    return count;
}
int main()
{   
    int a[N],i,n=20;
    srand(time(NULL));
    for (i=0;i<20;i++)
        a[i]=rand()%10;
    printf("The original data :\n");
    for(i=0; i<n; i++)
	    printf("%3d",a[i]);
    n=fun(a,n);
    printf("\n\nThe data after deleted :\n");
    for(i=0;i<n;i++)
	    printf("%3d",a[i]); 
	printf("\n\n");
    return 0;
}

删除偶数

#include<stdio.h> 
#include<stdlib.h>
#include<time.h>
void createRandom(int p[],int n);  //产生随机元素
int deleteEven(int p[],int n);      //删除偶数元素
void printOut(int p[],int n);      //输出函数
int main( ) 
{	
	int arr[100],n,deleteNum; 
	printf("Input number of elements(number<100):\n");
	scanf("%d",&n);
    createRandom(arr,n);
    printf("original array:\n");
	printOut(arr,n);
	deleteNum=deleteEven(arr,n);
    printf("after delete,the array is:\n");
	printOut(arr,n-deleteNum);
	return 0;
}
void createRandom(int p[],int n)
{	
	int i;
    srand(time(0));
	for (i=0;i<n;i++)
		p[i]=rand()%100+1;
}
int deleteEven(int p[],int n)
{	
	int i=0,j,count=0;
	while(i<n-count)
	{	
		if (p[i]%2==0)
		{	
			for (j=i+1;j<n-count;j++)
				p[j-1]=p[j];
			count++;
		}
		else i++;
	}
	return count;
}
void printOut(int p[],int n)
{	
	int i;
    for (i=0;i<n;i++)
		printf("%4d",p[i]);
	printf("\n");
}

array素数(考+)

#include <stdio.h> 
#define MAX 1000 
int fun(int lim, int aa[MAX]) 
{	
	int i,j,k=0; 
	for(i=2;i<=lim;i++)
	{ 	
		for(j = 2 ; j <= (i/2) ; j++)
			if(i % j == 0) 
				break; 
		if(j > (i/2)) 	
			aa[k++] = i; 
	}
	return k; 
} 
int main() 
{	
	int m, i, sum; 
	int array[MAX] ; 
	printf("输入一个整数"); 
	scanf("%d", &m);
	sum=fun(m, array); 
	for(i=0 ; i < sum ; i++)
	{ 	
		if(i%10==0&&i!=0)
			printf("\n");
		printf("%5d", array[i]); 
	}
	return 0;
}

元素交换(考)

最大最小数交换

#include <stdio.h> 
#include <stdlib.h>
#include <time.h>
void swap(int arr[],int x,int y)       //交换两数
{	
	int t=arr[x];
	arr[x]=arr[y];
	arr[y]=t;
}
int findMax(int a[],int n)  //寻找数组中最大元素返回其指针
{	
	int i,maxPos=0;
	for (i=1;i<n;i++)
		if (a[i]>a[maxPos]) maxPos=i;
	return maxPos;
}
int findMin(int a[],int n) //寻找数组中最小元素返回其指针
{	
	int i,minPos=0;
	for (i=1;i<n;i++)
		if (a[i]<a[minPos]) minPos=i;
	return minPos;
}
void printOut(int arr[],int n)  //输出数组中前n个元素
{	
	int i;
    for (i=0;i<n;i++)
		printf("%8d",arr[i]);
	printf("\n");
}
int main ( ) 
{	
	int a[10],maxPos,minPos,i; 
	printf("input 10 elements:\n");
	srand(time(NULL));
	for (i=0;i<10;i++)      //读入10个元素
		a[i]=rand();
	minPos=findMin(a,10);   //调用函数求得最小元素位置
    maxPos=findMax(a,10);   //调用函数求得最大元素位置
	printf("before exchange:\n");
	printOut(a,10);         //输出交换前的序列
	swap(a,minPos,0);         //交换第一个元素与最小元素
	swap(a,maxPos,9);       //交换最后一个元素与最大元素
	printf("after exchange:\n");
    printOut(a,10);         //输出交换后的序列
    return 0;
}

学生成绩查询系统

# include <stdio.h>
# include <stdlib.h>
double Nosearch(int sc[][7])
{	
	int i,j,sum=0;
	double average;
	printf("输入学号");
	scanf("%d", &i);
	for(j=1; j<7; j++)
	{	
		printf("第%d科成绩是%d\n", j, sc[i][j]);
		sum += sc[i][j];
	}
	average = sum/6.0;
	return average;
}
double Subsearch(int sc[][7])
{	
	int i,j,sum=0;
	double average;
	printf("输入考试科目号");
	scanf("%d", &j);
	for(i=1; i<5; i++)
	{	
		printf("第%d号学生本科成绩是%d\n", i, sc[i][j]);
		sum += sc[i][j];
	}
	average = sum/4.0;
	return average;
}
void input(int sc[][7])
{	
	int i,j;
	printf("请输入成绩\n");
	for(i=1; i<5; i++)
		for(j=1; j<7; j++)
			scanf("%d", &sc[i][j]);
}
int main( )
{	
	int select;
	int i, j;
	int score[5][7];
	double average = 0;
    do{
		printf("本程序有4项功能\n");
		printf(" 1. 根据学号查询学生成绩\n");
		printf(" 2. 根据考试号统计成绩\n") ;
		printf(" 3. 根据考试号和学号查询成绩\n");
		printf(" 4. 成绩录入\n");
		printf(" 0. 退出\n");
		printf(" 请输入选择(0 - 4): ");
		scanf("%d", &select);
		switch(select)
		{
		case 0:
			printf("OK\n");
			exit(0);
			break;
		case 1:
			average=Nosearch(score);
		    printf("学生的平均成绩是%7.2f\n", average);
			break;
		case 2:
			average=Subsearch(score);
			printf("本科平均成绩是%7.2f\n", average);
			break;
		case 3:
			printf("输入学号和考试号");
			scanf("%d %d", &i, &j);
			printf("第%d号学生的第%d科考试成绩是%d\n", i, j, score[i][j]);
			break;
		case 4:
			input(score);
			break;
		default:
			break;
		}
	}while(1);
	return 0;
}

指针

交换排序

#include<stdio.h>
int main()
{ 
	int a[10],*p=a,n,i,j;
   do 
   {
	   scanf("%d",&n);
   } while(n<=0||n>10);
   for(i=0;i<n;i++)
	   scanf("%d",p+i);
   for(i=0;i<n-1;i++)
   {
	   for(j=i;j<n;j++)
	   if(*(p+j)<*(p+i))
	   {
		   int t=*(p+j);
		   *(p+j)=*(p+i);
		   *(p+i)=t;
	   }
   }
   for(i=0;i<n;i++)
	   printf("%d ",p[i]);
   return 0;
}

逆序存放(考)

# include <stdio.h>
void inv(int *x, int n);
int main()
{	
	int i;
	int array[10] = {1, 3, 9, 11, 0, 8, 5, 6, 14, 98};
	printf("原始数组是:\n");
	for(i=0; i<10; i++)
		printf("%d " , array[i]);
	printf("\n");
	inv(array, 10);
	printf("按相反次序存放后的数组为:\n");
	for(i=0; i<10; i++)
		printf("%d ", array[i]);
	printf("\n");
    return 0;
}
void inv(int *x, int n)
{	
	int *p, *i, *j , t;
	int m = (n-1)/2;
	i = x; 
	j = x + n - 1;
	p = x + m;
	for(; i<=p; i++, j--)
	{	
		t = *i;
		*i = *j;
		*j = t;
	}
} 
逆序存放并输出变化元素
# include <stdio.h>
void inv(int *x, int n);
int main()
{	
	int i;
	int array[10] = {1, 3, 9, 11, 0, 8, 5, 6, 14, 98};
	printf("原始数组是:\n");
	for(i=0; i<10; i++)
		printf("%d\t" , *(array+i));
	printf("\n");
	inv(array, 10);
	printf("按相反次序存放后的数组为:\n");
	for(i=0; i<10; i++)
		printf("%d\t",*(array+i));
	printf("\n");
    return 0;
}
void inv(int *x, int n)
{	
	int *p, *i, *j , t;
	int m = (n-1)/2;
	j = x + n - 1;
	p = x + m;
	for(i = x; i<=p; i++, j--)
	{	
		t = *i;
		*i = *j;
		*j = t;
	}
}

平均值比较

#include <stdlib.h> 
#include <stdio.h> 
#include<time.h>
#define N 10 
double fun(double *x) 
{	
	int i, j; double av, y[N]; 
	av=0; 
	for(i=0; i<N; i++)
		av +=x[i]/N; 
	for(i=j=0; i<N; i++)
		if( x[i]<av )
		{	
			y[j]=x[i]; 
			x[i]=-1; 
			j++;
		}
		i=0;
		while(i<N)
		{ 	
			if( x[i]!= -1 )
				y[j++]=x[i];
			i++; 
		} 
		for(i=0; i<N; i++)x[i] = y[i];
			return av;
} 
int main() 
{ 
	int i; double x[N];
	srand(time(NULL));
	for(i=0; i<N; i++)
	{ 	
		x[i]=rand()%50;
		printf("%4.0f ",x[i]);
	} 
	printf("\n"); 
	printf("\nThe average is: %f\n",fun(x)); 
	printf("\nThe result :\n"); 
	for(i=0; i<N; i++) 
		printf("%5.0f ",x[i]);
	printf("\n"); 
	return 0;
}

宏定义

2月天数

#include <stdio.h>
/*定义计算二月天数的带参宏*/
#define DAYS_FEB(year)  (year)%4==0 && (year)%100!=0 || (year)%400==0 ? 29: 28
int main( )
{
	int year;
	int days;
	printf("input a year:"); 
	scanf("%d", &year);				/*输入年份*/
	days=DAYS_FEB(year);			/*使用宏求年份year的二月的天数*/
	printf("days of the Feb.: %d\n",days); 	/*输出结果*/
	return 0;
}

数值交换

define CHANGE(a,b,t) t=a;a=b;b=t

#include<stdio.h>
#define CHANGE(a,b,t) t=a;a=b;b=t
int main()
{	
	int c,d,s;
	scanf("%d%d",&c,&d);
    CHANGE(c,d,s);
    printf("c=%d,d=%d\n",c,d);
	return 0;
}

两数相除的余数,3和7的倍数

define Q(a,b) (a)%(b),if (Q(i,3) == 0&&Q(i,7) == 0)

#include<stdio.h>
#define Q(a,b) (a)%(b)
int main()
{	
    int i;
    for (i=1;i<=200;i++)
		if (Q(i,3)==0&&Q(i,7)==0)
			printf("%5d",i);
	printf("\n");
	return 0;
}
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6