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

news2024/11/26 2:34:27

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/574024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32通过 WiFi 传输视频

概述 这是ESP32 WiFi视频流的入门教程。ESP32-CAM 是一款带有ESP32-S 芯片的小型摄像头模块,除了OV2640 相机和多个用于连接外围设备的 GPIO 外,它还具有一个microSD 卡插槽,可用于存储相机拍摄的图像。 ESP32-CAM 简介 ESP32-CAM 是一款采用ESP32-S 芯片的超小型相机模组…

HP EliteBook 840 G6电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板HP Elitebook 840 G6 处理器Intel(R) Core(TM) i7-8565U CPU 1.80GHz (max 4.60Ghz) Kaby Lake R已驱动 内存SK Hynix 32 GB (2x16) 2…

QT 设计ROS GUI界面订阅和发布话题

QT 设计ROS GUI界面订阅和发布话题 主要参考下面的博客 ROS项目开发实战&#xff08;三&#xff09;——使用QT进行ROS的GUI界面设计&#xff08;详细教程附代码&#xff01;&#xff01;&#xff01;&#xff09; Qt ROS 相关配置请看上一篇博客 首先建立工作空间和功能包&a…

深度学习训练营之船类识别

深度学习训练营之船类识别 原文链接环境介绍前言收获前置工作设置GPU导入图片数据预处理 数据可视化配置数据集数据显示 构建模型模型训练编译训练模型 结果可视化(模型评估)损失值可视化混淆矩阵各项指标评估 原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 …

腾讯云轻量应用服务器的端口怎么开通?

腾讯云轻量应用服务器怎么使用&#xff1f;端口在哪开启&#xff1f;在防火墙中可以开启端口号。 腾讯云轻量应用服务器端口怎么开通&#xff1f;在轻量服务器管理控制台的防火墙中开启端口&#xff0c;如果是CVM云服务器在安全组中开通&#xff0c;阿腾云以轻量应用服务器开通…

Python+Socket实现多人聊天室,功能:好友聊天、群聊、图片、表情、文件等

一、项目简介 本项目主要基于python实现的多人聊天室&#xff0c;主要的功能如下&#xff1a; 登录注册添加好友与好友进行私聊创建群聊邀请/申请加入群聊聊天发送图片聊天发送表情聊天发送文件聊天记录保存在本地中聊天过程中发送的文件保存本地 二、环境介绍 python3.8my…

浅谈 RISC-V 软件开发生态之 IDE

软件开发者是芯片公司非常重要的资产&#xff0c;CPU做出来是不够的&#xff0c;要让更多的软件开发者用这颗芯片才是成功。国际大厂们都有一只较大的软件团队&#xff0c;在做面向开发者的软件工具和SDK等。--张先轶博士&#xff1a;为什么RISC-V需要共建软件生态? 前言 目前…

VsCode终端无法使用conda切换环境的问题

一.问题描述: windows的cmd可以正常使用conda切换环境 为了方便想使用vscode的终端,但是报错: PS C:\Users\admin\Desktop\MyProject> conda activate objection1.8.4 CommandNotFoundError: Your shell has not been properly configured to use conda activate. invocati…

智能排班系统 【管理系统功能、操作说明——下篇】

文章目录 页面与功能展示排班日历月视图&#xff08;按职位查询&#xff09;月视图&#xff08;按员工查询&#xff09;周视图 排班任务管理创建排班计算任务设置任务的排班规则设置工作日客流量导入任务计算查看任务结果发布任务任务多算法计算 页面与功能展示 排班日历 在排…

vcruntime140.dll丢失的解决方法?教你如何修复好dll文件

Vcruntime140.dll文件是Windows操作系统中非常重要的一个动态链接库文件&#xff0c;用于支持使用Microsoft Visual C编译器创建的应用程序的运行。当Windows系统中的vcruntime140.dll文件丢失时&#xff0c;可能会导致某些应用程序无法正常启动。在尝试启动应用程序时&#xf…

Android HCE开发

我们来详细说明一下关于不同模式下的AID响应问题&#xff08;前提&#xff1a;一个手机&#xff0c;手机上有A、B两个HCE APP&#xff0c;通过读卡器向手机发送APDU选择指令&#xff09; 1、A和B的应用AID设置的都是payment模式&#xff0c; 只有手机当前选定的默认支付APP会响…

基于Faster rcnn pytorch的遥感图像检测

基于Faster rcnn pytorch的遥感图像检测 代码&#xff1a;https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0 数据集 使用RSOD遥感数据集&#xff0c;VOC的数据格式如下&#xff1a; RSOD是一个开放的目标检测数据集&#xff0c;用于遥感图像中的目标检测。…

图片类型转换,url,File,Base64,Blob

一&#xff0c;图片url转化为文件 function urlToFile(url, imageName) {return new Promise((resolve, reject) > {var blob nullvar xhr new XMLHttpRequest()xhr.open(GET, url)xhr.setRequestHeader(Accept, image/png)xhr.responseType blobxhr.onload () > {b…

JVM内存模型和结构详解

JVM内存模型和Java内存模型都是面试的热点问题&#xff0c;名字看感觉都差不多&#xff0c;实际上他们之间差别还是挺大的。 通俗点说&#xff0c;JVM内存结构是与JVM的内部存储结构相关&#xff0c;而Java内存模型是与多线程编程相关mikechen。 什么是JVM JVM是Java Virtual …

Redis缓存雪崩及解决办法

缓存雪崩 1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到 达数据库&#xff0c;带来巨大压力。 2.解决方案: ◆给不同的Key的TTL添加随机值 ◆利用Redis集群提高服务的可用性 ◆给缓存业务添加降级限流策略 降级可做为系统的保底…

java程序1补充:从键盘输入圆的半径,求圆的周长和面积(简易与交互两版)

编写一个java程序&#xff0c;从键盘输入圆的半径&#xff0c;求圆的周长和面积&#xff0c;并输出。 要求&#xff1a; &#xff08;1&#xff09;半径仅考虑int型正整数&#xff0c;并综合利用所学较好地处理异常输入&#xff0c;包括非法整数、负整数输入时的处理。输入半…

网络编程套接字基本概念认识

目录 认识端口号 认识TCP协议 认识UDP协议 网络字节序 socket编程接口 socket 常见API sockaddr结构 认识端口号 端口号(port)是传输层协议的内容 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 …

数字电路仿真编译文件指定方式

目录 1 最基本的方式 2 指定多个文件 3. 使用filelist文件 4 指定整个目录中的所有指定后缀的文件 5 指定include文件的搜索路径 6 追加宏的定义 7 Verdi相关的选项 8 Vivado中的处理方式 1 最基本的方式 最基本的方式就是直接在命令行指定单个源文件&#xff0c;比如说…

VMware安装华为存储模拟器

实验需要的软件&#xff1a; VMware Workstation Pro ST00000000201812000*配套的license文件 Dorado5000 V3存储模拟器磁盘 存储模拟器磁盘和license文件资源&#xff0c;在本人主页发布的资源中去下载 安装步骤&#xff1a; 1. 点击 “文件->新建虚拟机”。 2. 在弹框…

MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

目录 0 存储引擎介绍1 SQL性能分析2 常见通用的JOIN查询SQL执行加载顺序七种JOIN写法 3 索引介绍3.1 索引是什么3.2 索引优劣势3.3 索引分类和建索引命令语句3.4 索引结构与检索原理3.5 哪些情况适合建索引3.6 哪些情况不适合建索引 4 性能分析4.1 性能分析前提知识4.2 Explain…