—设计题
【字符】统计一行字符串单词的个数
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;
int n,i;
while(*p){
n++;
p++;
}
for(i=0;i<n/2;i++)
if(str[i]==str[n-i-1]);
else return 0;
return 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)
{
*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)
{
*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)
{
*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)
{
*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)
{
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10)*1;
}
【算数】数字指定位数截位
void fun(int a, int b, long *c)
{
*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;
}
}