C语言计算机二级考题【设计题】

—设计题

【字符】统计一行字符串单词的个数

int fun(char *s)
{
	int i,j=0;
	for(i=0;s[i]!=0;i++)
	if(s[i]!=' '&&(s[i+1]==' '||s[i+1]=='\0'))
	j++;
	return j;
}

【算数】找出最低分学生信息并输出到文件

typedef struct ss
{ char num[10]; 
  int s;
} STU;

void fun(STU a[], STU *s)
{	int i;
	*s=a[0];
	for(i=0;i<10;i++)
	if((*s).s>a[i].s)
	*s=a[i];
}

【数组】判断数组元素周边元素并累加

int add_array_border( int aa[M][N])

{ int i,j,sum=0;
	for(i=0;i<M;i++)
	for(j=0;j<N;j++)
	if(i==0||i==M-1||j==0||j==N-1)
	sum+=aa[i][j];
  return sum;
}

【算数】对一个浮点数进行四舍五入

float fun (float h )
{
	float sum1,sum2;
	sum1=(h*1000+5)/10;
	sum2=sum1/100;
	return sum2;
}

【数组】利用行列相等的数组对称性进行行列互换

void fun (int array[3][3])
{ int i,j,t;
	for(i=0;i<3;i++)
	for(j=i+1;j<3;j++)
	{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}
  
}

【算数】求1-100间的素数

#define MAX 100
int fun(int lim, int aa[MAX])
{   int i,j,k=0;
	for(i=2;i<MAX;i++)
	{
		for(j=2;j<i;j++)
		if(i%j==0)break;
		if(j==i)aa[k++]=i;
	}
	return k;
  
}

【字符】求出若干字符串中的最长字符串


char *fun(char (*a)[81], int num, char *max)
{
	int i=0;
	max=a[0];
	for(i=0;i<num;i++)
	if(strlen(max)<strlen(a[i]))
	max=a[i];
	
	return max;
}

【算数】判断一个字符串是否回文

int fun(char *str)
{
	char *p=str;            //指针p指向str准备统计字符
	int n,i;
	while(*p){              //判断到'\0'等效于0 结束循环 
		n++;                //统计字符串个数 
		p++;                //指针后移 
	}
	for(i=0;i<n/2;i++)     //若n=5,i<2;若n=6,i<3;
	if(str[i]==str[n-i-1]);//前后元素依次对比(a[元素个数-i-1] i递增时,数组指针前移)
	else return 0;         //不符合返回 0 
	return 1;              //比较完成符合返回 1 
}

【数组】将二维数组里的值存到一维数组

#include <stdio.h>
void fun (int (*s)[10], int *b, int *n, int mm, int nn)
{	int i,j,c=0;
	for(i=0;i<mm;i++)
	for(j=0;j<nn;j++)
	b[(*n)++]=s[i][j];
}

【数组】将数组中字符ASCII码为奇数且数组下标为偶数的字符删除

void fun(char  *s, char  t[])
{
	int x,k=0,i=0;
	char *p=s;
	while(*p)
	{
		if(i%2==0&&(int)*p%2==1){
			p++;
			i++;
			continue;
	}
		else t[k++]=*p,p++,i++;
	} 
	t[k]='\0';
}

【算数】数字截位

void fun(int  a, int  b, long  *c)
{//a=45,b=12 ---->c=5241

	*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10)*1;
}

【数组】将小于平均值的分数存入below数组

int fun(int score[],int m, int below[])
{
	int sum=0,i,k=0,ave;
	 for(i=0;i<m;i++)
	 sum+=score[i];
	 ave=sum/m;
	 for(i=0;i<m;i++)
	 if(score[i]<ave)below[k++]=score[i];
	 else continue;
	 return k;                                                
}

【算数】求出能整除x且为奇数的数

void fun (int x, int pp[], int *n)
{
	int k=0,i;
	for(i=1;i<=x;i+=2)
	if(x%i==0){
		
		pp[k++]=i;
		*n=k;
	}
}

【数组】将大于整数m且紧靠m后的k个素数存入数组

void fun(int m,int k,int xx[])
{
	int i,j,n=0;
	for(i=m+1;n<k;i++)
	{
		for(j=2;j<i;j++)
		if(i%j==0)break;
		if(i==j)xx[n++]=i;
	}
	
}

【数组】求出数组最大元素并返回最大元素下标值

int fun(int *s,int t,int *k)
{
	int max,i,j;
	max=s[0];
	for(i=0;i<t;i++)
	if(s[i]>max)max=s[i],j=i;
	*k=j;
  
}

【算数】阶乘计算

在这里插入图片描述

float  fun(int m, int n)
{
	int i,j,k;
	float mjc=1,njc=1,m_njc=1;
	for(i=m;i>0;i--)
	mjc*=i;
	for(j=n;j>0;j--)
	njc*=j;
	for(k=m-n;k>0;k--)
	m_njc*=k; 
	return mjc/(njc*m_njc);
}

【算数】返回小于1000的且能被3和7整除的自然数的平方根

double  fun( int  n)
{
	int i;
	double sum=0,pf;
	for(i=n;i>0;i--)
	if(i%3==0&&i%7==0)
	sum+=i;
	return sqrt(sum);
}

【算数】分数多项式求和

在这里插入图片描述

double fun(int n)
{
	int i;
	double s=0;
	for(i=1;i<=n;i++)
	s+=(float)1/(i*(i+1));
	return s;
	
}

【算数】求多项式递增幂/阶乘累加求和

在这里插入图片描述

double fun(double x, int n)
{
	int i,j,n_jc=1;
	double sum=1;
	for(i=1;i<=10;i++)
	{
	n_jc*=i;
	sum+=pow(x,i)/n_jc;
	}
	return sum;
}

【字符】字符串字符逐个前移

void fun (char  *w,int  m)
{
	int i,j;
	char t;
	for(i=0;i<m;i++)
	{
		t=w[0];
		for(j=1;w[j]!='\0';j++)
		w[j-1]=w[j];
		w[j-1]=t;
	}
}

【数组】各年龄段人数统计

在这里插入图片描述

void fun(int *a,  int *b)
{	int i,j,k=0,l=0;
	for(i=0;i<10;i++)
	{
	for(j=0;j<N;j++)
	if(a[j]>i*10&&a[j]<=(i*10+9))k++;
	b[i]=k;
	k=0;	
	}
	for(j=0;j<N;j++)
	if(a[j]>=100)l++;
	b[10]=l;
}

【字符】统计字符串里面的数字字符个数

int fun(char  *s)
{	int digit=0;
	while(*s){
		if('0'<=*s&&*s<='9')digit++;
		s++;
	}
	return digit;
}

【数组】在数组中查找某个值 找到则返回下标值

int  fun( int *s, int x)
{	int i;
	for(i=0;i<N;i++)
	if(s[i]==x)return i;
	return -1;
}

【字符】实现复制字符串

void  fun( char  *a , char  *s)
{
	int i;
	for(i=0;i<N;i++,s++)
	a[i]=*s;
}

【字符】将字符型数字转化为整型数字

long  fun( char  *s )
{	int len,i,sum=0;
	len=strlen(s);
	for(i=0;i<len;i++)
	{	sum=sum*10+*s-48;
		s++;
	}
	return sum;	
}

【算数】去掉最高分和最低分求平均值

double fun(double  a[ ] , int  n)
{
	double min,max,sum;
	int i,j;
	min=a[0];
	max=a[0];
	for(i=0;i<10;i++)
	{	
	sum+=a[i];
	if(min>a[i])min=a[i];
	if(max<a[i])max=a[i];	
	}
	return (sum-min-max)/(n-2);
}

【算数】找出数组中的最大值和对应的下标值

void fun(int a[],int n, int *max, int *d)
{
	int i;
	*max=a[0];
	for(i=0;i<n;i++)
	if(a[i]>*max)*max=a[i],*d=i;
}

【算数】将字符ASCII码和数组下标都为奇数的字符保存在t数组中

void fun(char *s, char t[])
{	int len,i,k=0;
	len=strlen(s);
	for(i=0;i<len;i++)
	if((int)s[i]%2==1&&i%2==1)
	t[k++]=s[i];
	t[k]='\0';
}

【数组】将一个二维数组本身与其转置矩阵相加得到一个新的数组

void fun(int a[3][3],int b[3][3])
{	
	int i,j;
	for(i=0;i<3;i++)
	for(j=0;j<3;j++)
	b[i][j]=a[i][j]+a[j][i];	
}

【数组】二维数组按列遍历存入一维数组

在这里插入图片描述

void fun(int (*s)[10],int *b;int *n;int mm;int nn)
{	int i,k=0;
	for(j=0;j<mm;j++)
	for(i=0;i<nn;i++)
	b[*n]=s[i][j],(*n)++;
}

【字符】字符二维数组遍历将字符放入一维数组

在这里插入图片描述

void fun(char a[M][N],char *s)
{
	int i,j,k=0;
	for(i=0;i<M;i++)
	for(j=0;a[i][j]!='\0';j++)
	s[k++]=a[i][j];
	b[k]='\0';
}

【字符】实现删除字符串中的指定下标字符

void fun(char a[],char b[],int n)
{	
	int i,k=0;
	for(i=0;a[i]!='\0';i++)
	if(i!=n)b[k++]=a[i];
	b[k]='\0';
}

【算数】数字逐个前移

void  fun(int  *w, int  p, int  n)
{
	int i,t,j;
	for(i=0;i<p;i++)
	{
	t=w[0];
	for(j=0;j<n;j++)
		w[j]=w[j+1];	
	w[n-1]=t;
	}

【数组】二维数组按列遍历存入一维数组

在这里插入图片描述

void fun(char (*s)[N],char *b)
{
	int i,j,k; 
	for(i=0;i<N;i++)
	for(j=0;j<M;j++)
	b[k++]=s[j][i];
  
}

【算数】求多项式分数和

在这里插入图片描述

float fun(int  n)
{
	float s=0,sum=0,i;
	for(i=1;i<=n;i++)
	{
	for(i=1;i<=n;i++)
	{
	sum+=i;
	s+=1/sum;	
	}
	}
	return s;
}

【字符】将ASCII码为奇数的字符存入另一个数组中

在这里插入图片描述

void  fun(char  *s, char  t[])
{
	int len,i,k=0;
	len=strlen(s);
	for(i=0;i<len;i++)
	if(s[i]%2==0)t[k++]=s[i];
	t[k]='\0';
}

【算数】数组中数字去重

在这里插入图片描述

int fun(int a[], int n)
{
	int i,k=0;
	for (i=0;i<n;i++)
	if(a[i]!=a[i+1])a[k++]=a[i];
	return k;
}

【字符】去掉字符串中间的"*"

在这里插入图片描述

void  fun( char *a, char *h,char *p )
{
	char *s=a;
	int i=0;
	while(s<h){
		a[i++]=*s;
		s++;
	}
	while(s<p){
		if(*s!='*')a[i++]=*s;
		s++;
	}
	while(*s){
		a[i++]=*s;
		s++;
	}
	a[i]='\0';
}

【算数】指定数字截位

void fun(int a, int b, long *c)//a=45 b=12  -->  1425
{
	*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10)*1;
}

【字符】保留字符串前面的指定位数的"*"

在这里插入图片描述

void  fun( char *a, int  n )
{
	int k=0,i=0;
	char *t,*p;
	p=t=a;
	while(*t=='*')k++,t++;
	if(k>n)
	while(*p){
		a[i]=*(p+k-n);
		i++;
		p++;
	}
}

【算数】数字指定截位

void fun(int a, int b, long *c)//a=45 b=12 ->2514
{
	
	*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10)*1;

}

【字符】字符串数字转换为数值型

long  fun ( char *p)
{	
	double sum=0;
	int flag;
	if(*p=='-'){
		p++;flag=-1;
	}
	else if(*p=='+'){
		p++;
		flag=1;
	}
  	while(*p){
  		sum=sum*10+*p-48;
  		p++;
  }
  return sum*flag;

}

【算数】求大于t的斐波那契数列值的最小数

int  fun( int  t)
{
	int i,a=1,b=2,c;
	while(1){
		c=a+b;
		a=b;
		b=c;
		if(c>t)break;		
	}
}

【算数】求结构体变量小于平均值的值

在这里插入图片描述

double  fun( STREC  *a, STREC *b, int *n )
{
	int i,k=0;
	double average,sum=0.0;
	for(i=0;i<N;i++)
	sum+=a[i].s;
	average=sum/N;
	for(i=0;i<N;i++)
	{
	if(a[i].s<average)
	b[k++]=a[i];
	*n=k;	
	}
	return average;
}

【字符】将字符串奇数位的小写字母转换为大写

void  fun  ( char *ss )
{	int i,len;
	len=strlen(ss);
	for(i=0;i<len;i++)
	{
		if(*ss>='a'&&*ss<='z'&&i%2==1)
		*ss=*ss-32;
		ss++;
	}

}

【算数】数字指定位数截位

void fun(int a, int b, long *c)//45 12 4251
{
	*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10)*1;
}

【字符】保留字符串前面指定长度的"*"

void  fun( char *a,int  n )
{	int k=0,i=0;
	char *p,*h;
	p=h=a;
	
	while(*h=='*'){
		k++;
		h++;
	}
	if(n<k)
	while(*p)
	{
	a[i]=*(p+k-n);
	i++;
	p++;	
	}
}

【算数】数字指定位数截位

void fun(int a, int b, long *c)//45 12 5142
{
	*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10)*1;
}

【算数】数字指定位数截位

void fun(int a, int b, long *c)//45 12 4152
{
	*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10)*1;
}

【算数】统计自定义数据结构里的分数段数据并存入数组

int  fun( STREC  *a, STREC *b,int l, int h )
{
	int i,k=0;
	for(i=0;i<N;i++)
	{
		if(a[i].s<=h&&a[i].s>=l)b[k++]=a[i];
	}
	return k;
}

【字符】将ASCII码为偶数的字符删除

在这里插入图片描述

void fun(char  *s, char t[])
{
	int len,i,k=0;
	len=strlen(s);
	for(i=0;i<len;i++)
	if(s[i]%2==1)t[k++]=s[i];
	t[k]='\0';
  
}

【算数】找出结构体中分数最高的变量

在这里插入图片描述

void fun(STU a[], STU *s)
{
	int i,max;
	max=a[0].s;
	for(i=0;i<N;i++)
	if(a[i].s>max)s[0]=a[i];  
}

【数组】对数组左下角的数进行倍乘

void fun(a[][N],int n)
{	
	int i,j;
	for(i=0;i<N;i++)
	for(j=0;j<=i;j++)
	a[i][j]=a[i][j]*n;

}

【数组】对数组左下角的数置0

void fun(int a[][N],int n)
{
	int i,j;
	for(i=0;i<N;i++)
	for(j=0;j<=i;j++)
	a[i][j]=0;
}

【数组】保存二维数组每列的最大值到一维数组

void fun(int tt[M][N],int pp[N])
{
	int i,j,max;
	for(j=0;j<N;j++)
	{	
		max=tt[0][j];
		for(i=0;i<M;i++)
		if(tt[i][j]>max)max=tt[j][i];
		pp[j]=max;
	}
}
  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值