当前位置: 首页 > news >正文

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

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) //余数为1printf("\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 4printf( " " );           //打印空格数for ( j=1 ; j<=11-2*i ; j++ )// 9 7 5 3 1printf( "*" );           //打印*号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 0printf( " " );           //打印空格数}for ( j=1 ; j<=3-fabs(3-i) ; j++ )// 3-|3-i|= 1 2 3 2 1printf( "*" );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-999k = (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;elsesign = -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");elseprintf("结果:不相等\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.lryc.cn/news/89548.html

相关文章:

  • Canonical标签在SEO中重要作用
  • 【Linux之进程间通信】06.Linux进程通信 - 共享内存
  • oracle安装
  • CSS样式的三种引入方式及优先级
  • Linux第二天
  • 微服务和领域驱动
  • Redis如何做到内存高效利用?过期key删除术解析!
  • EFDC模型教程
  • URLConnection(三)
  • 针对KF状态估计的电力系统虚假数据注入攻击研究(Matlab代码实现)
  • 2023-05-25 LeetCode每日一题(差值数组不同的字符串)
  • MI小米验厂知识点
  • 损失函数——交叉熵损失(Cross-entropy loss)
  • 电商ERP接口erp进销存接口
  • leetcode 922. 按奇偶排序数组 II
  • Unity四叉树地图
  • 【unity插件】OpenFracture插件实现物体破裂和切割
  • Spring Security实现登录
  • 小狐狸ChatGPT付费创作系统1.9.7独立版 + H5端 + 小程序前端增加AI绘画+GPT4接口
  • 双目测距联合YOLOv8 项目总结
  • Windows提权:利用MSSQL数据库,Oracle数据库
  • linux常见的二十多个指令
  • 内蒙古自治区住房和城乡建设分析及解决方案
  • JavaEE进阶5/25(属性注入)
  • 【Java学习记录-4】相关名词和概念记录(持续更新)
  • 《程序员面试金典(第6版)》面试题 16.25. LRU 缓存(自定义双向链表,list库函数,哈希映射)
  • kong网关启用jwt认证插件
  • day12 - 图像修复
  • 1720_Linux学习中的问题处理
  • 七人拼团系统开发模式详解