求职简历网 > 知识 >

南开100题

来源:求职简历网时间:2024-05-03 00:50:20编辑:皮带君

想考计算机三级数据库技术,没有笔试题,哪位亲有的发给我一下吧,还有南开100题,谢谢了!

1.掌握计算机系统和计算机软件的基本概念、计算机网络的基本知识和应用知识、信息安全的基本概念。 2.掌握数据结构与算法的基本知识并能熟练的应用。 3.掌握并能熟练运用操作系统的基本知识。 4.掌握数据库的基本概念,深入理解关系数据模型、关系数据理论和关系数据库系统,掌握关系数据语言。 5.掌握数据库设计方法,具有数据库设计能力。了解数据库技术发展。 6.掌握计算机操作,并具有C语言编程,开发数据库应用(含上机调试)的能力。 考试内容 一、基础知识 1.计算机系统的组成和应用领域。 2.计算机软件的基础知识。 3.计算机网络的基础知识和应用知识。 4.信息安全的基本概念。 二、数据结构与算法 1.数据结构、算法的基本概念。 2.线性表的定义、存储和运算。 3.树形结构的定义、存储和运算。 4.排序的基本概念和排序方法。 5.检索的基本概念和检索算法。 三、操作系统 1.操作系统的基本概念、主要功能和分类。 2.进程、线程、进程间的通信的基本概念。 3.存储管理、文件管理、设备管理的主要技术。 4.典型操作系统的应用。 四、数据库系统的基本原理 1.数据库的基本概念,数据库系统的组成。 2.数据模型概念和主要的数据模型。 3.关系数据模型的基本概念,关系操作和关系代数。 4.结构化查询语言SQL。 5.事务管理、并发控制、故障恢复的基本概念。 五、数据库设计和数据库应用 1.关系数据库的规范化理论。 2.数据库设计的目标、内容和方法。 3.数据库应用开发工具。 4.数据库技术发展。 上机操作 1.掌握计算机基本操作。 2.掌握C语言程序设计基本技术、编程和调试。 3.掌握与考试内容相关的知识的上机应用。


c语言出圈问题南开100-57

前言:

出圈题是三级C语言上机题中的难点题,许多考生朋友们对此题都谈虎色变,此题有两种变形题,最主要区别如下:
上机考试系统中的题意要求:第1个出圈的编号存放在p[0]中,第2个出圈的编号存放在p[1]中,直至第n个出圈的编号存放在p[n-1]中。

南开上机题或无忧上机题的题意要求:若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;即第1个出圈的编号存放在p[n-1]中,第2个出圈的编号存放在p[n-2]中,直至第n个出圈的编号存放在p[0]中。

相应的表现在两个程序中的WriteDat()函数也出现了相应的变化:
考试中心系统中的表现为:
void WriteDat(void)
{
int i, j = 0 ;
FILE *fp ;

fp = fopen("out.dat", "w") ;
for(i = 0 ; i <= N - 1 ; i++) /*这里是从0到N-1开始循环*/
{printf("%4d ", p[i]) ;
fprintf(fp, "%4d", p[i]) ;
j++ ; /*j值增1以免在下面的条件语句中出现0% 10 == 0而让第一个数单独成一行。*/
if(j % 10 == 0) {
printf("\n") ;
fprintf(fp, "\n") ;
}
}
fclose(fp) ;
}

南开及无忧题中的表现为:
void WriteDat(void)
{
int i ;
FILE *fp ;

fp = fopen("jose.out", "w") ;
for(i=N-1; i>=0; i--) /* 这里是从N-1到0开始循环*/
{ printf("%4d ", p[i]) ;
fprintf(fp, "%4d", p[i]) ;
if(i % 10 == 0) {
printf("\n") ;
fprintf(fp, "\n") ;
}
}
fclose(fp) ;
}

下面给出两种题型的解决方案,请大家参考学习。

***********************************************************************************************************

★题目57(无忧id 109 出圈题)



设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出

到文件JOSE.OUT中。

设 n = 100, s = 1,m = 10。

(1) 将1到n个人的序号存入一维数组p中;

(2) 若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;

(3) 重复第(2)步直至圈中只剩下p[1]为止。

注意:部分源程序存放在文件prog1.c中。

请勿改动主函数main()和输出数据函数WriteDat()的内容。

#include

#define N 100

#define S 1

#define M 10



int p[100], n, s, m ;

void WriteDat(void) ;



void Josegh(void)

{ int i,j,s1,w;

s1=s;

for(i=1; i<=n; i++)

p[i-1]=i;

for(i=n; i>=2; i--)

{ s1=(s1+m-1)%i;

if(s1==0) s1=i;

w=p[s1-1];

for(j=s1; j<i; j++)

p[j-1]=p[j];

p[i-1]=w;

}

}



void main()

{

m = M ;

n = N ;

s = S ;

Josegh() ;

WriteDat() ;

}



void WriteDat(void)

{

int i ;

FILE *fp ;



fp = fopen("jose.out", "w") ;

for(i = N - 1 ; i >= 0 ; i--) {

printf("%4d ", p[i]) ;

fprintf(fp, "%4d", p[i]) ;

if(i % 10 == 0) {

printf("\n") ;

fprintf(fp, "\n") ;

}

}

fclose(fp) ;

}

***********************************************************************************************************

此题的另一种形式(实际上机的考试题)

设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,给出这n个人的顺序表p。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把编号按照出圈的顺序输出到OUT.DAT文件中。
注意:第1个出圈的编号存放在p[0]中,第2个出圈的编号存放在p[1]中,直至第n个出圈的编号存放在p[n-1]中。
设 n = 100, s = 1, m = 10进行编程。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main()和输出数据函数WriteDat()的内容。
#include
#define N 100
#define S 1
#define M 10

int p[100], n, s, m ;
void WriteDat(void) ;

void Josegh(void)
{ int i,j,s1,w,q[100];
for(i=0;i<n;i++) q[i]=0;
s1=s;
for(i=1; i<=n; i++) p[i-1]=i;
for(i=n; i>=2; i--)
{ s1=(s1+m-1)%i;
if(s1==0) s1=i;
w=p[s1-1];
for(j=s1; j<i; j++) p[j-1]=p[j];
p[i-1]=w;
}
/*由于上面的解法是倒着存放出圈数,以下采用两个循环的是将数组p中的数据倒过来以实现题意要求,即:第1个出圈的编号存放在p[0]中,第2个出圈的编号存放在p[1]中,直至第n个出圈的编号存放在p[n-1]中。*/
for(i=0,j=n-1;i=0;i++,j--) /*也可改为for(i=0,j=n-1;i<n;i++,j--) */
q[j]=p[i];
for(i=0;i<n;i++)
p[i]=q[i];
}

void main()
{
m = M ;
n = N ;
s = S ;
Josegh() ;
WriteDat() ;
}

void WriteDat(void) /*注意两种题中此函数的区别*/
{
int i, j = 0 ;
FILE *fp ;

fp = fopen("out.dat", "w") ;
for(i = 0 ; i <= N - 1 ; i++) {
printf("%4d ", p[i]) ;
fprintf(fp, "%4d", p[i]) ;
j++ ;
if(j % 10 == 0) {
printf("\n") ;
fprintf(fp, "\n") ;
}
}
fclose(fp) ;
}

************************************************************************************************************************
两种程序的输出文件结果相同,为:

10 20 30 40 50 60 70 80 90 100
11 22 33 44 55 66 77 88 99 12
24 36 48 61 73 85 97 9 25 38
52 65 79 93 6 21 37 53 68 83
98 15 31 47 64 82 1 17 35 56
74 92 13 32 54 75 95 18 42 63
87 8 39 62 89 16 45 72 3 29
67 96 28 69 4 43 81 23 59 7
57 5 58 19 78 41 2 84 51 46
34 49 76 94 71 27 91 14 86 26

考试可能考的不是南开版的,是后面那个版的。

建议去下载一个木易版的南开百题。这是我认为最好的解题版本。


c++南开100题上机题.doc

计算机二级C语言上机南开100题
1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:
int fun(int score[],int m,int below[])
{
int i,k=0,aver=0;
for(i=0;i<m;i++)
aver+=score[i];
aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver)
{
below[k]=score[i];
k++;
}
return k;
}
2: 第2题 请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:
void fun(int *a, int *n)
{
int i,j=0;
for(i=2;i<1000;i++)
if ((i%7==0 || i%11==0) && i%77!=0)
a[j++]=i;
*n=j;
}
3: 第3题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:
void fun(int x, int pp[ ], int *n)
{
int i=1,j=0;k=0,*t=pp;
for(i=0;i<=x;i++)
if(i%2!=0)
{
t[j]=I;
j++;
}
for(i=0;i<j;i++)
if(x%t[i]==0)
{
pp[k]=t[i];
k++;
}
*n=k;
}


4: 第4题 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:
void fun(char *tt, int pp[])
{
int i;
for (i=0;i<26;i++)
pp[i]=0;
while (*tt)
{
switch (*tt)
{
case ‘a’: pp[0]++;break;
case ‘b’: pp[1]++;break;
case ‘c’: pp[2]++;break;
case ‘d’: pp[3]++;break;
case ‘e’: pp[4]++;break;
case ‘f’: pp[5]++;break;
case ‘g’: pp[6]++;break;
case ‘h’: pp[7]++;break;
case ‘i’: pp[8]++;break;
case ‘j’: pp[9]++;break;
case ‘k’: pp[10]++;break;
case ‘l’: pp[11]++;break;
case ‘m’: pp[12]++;break;
case ‘n’: pp[12]++;break;
case ‘o’: pp[14]++;break;
case ‘p’: pp[15]++;break;
case ‘q’: pp[16]++;break;
case ‘r’: pp[17]++;break;
case ‘s’: pp[18]++;break;
case ‘t’: pp[19]++;break;
case ‘u’: pp[20]++;break;
case ‘v’: pp[21]++;break;
case ‘w’: pp[22]++;break;
case ‘x’: pp[23]++;break;
case ‘y’: pp[24]++;break;
case ‘z’: pp[25]++;break;
}
tt++;
}
}

5: 第5题 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
答案:
void fun(int m, int k, int xx[])
{
int g=0,I,j,flag=1;
for(i=m+1;i<m*m;i++)
{
for(j=0;j<I;j++)
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if (flag==1 && j>=i)
{
if (k>=0)
{
xx[g++]=i;
k--;
}
else
break;
}
}
}


6: 第6题 请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
答案:
void fun(char a[],char b[], int n)
{
int I,j=0;
for (i=0;i<LEN;i++)
if (i!=n)
{
b[j]=a[i];
j++;
}
b[j]=‘\0’;
}


7: 第7题 请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。
答案:
void fun (int *s, int t, int *k)
{
int I, max;
max=s[0];
for(i=0;i<t;i++)
if (s[i]>max)
{
max=s[i];
*k=I;
}
}


8: 第8题 编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)
答案:
float fun (int n)
{
int i;
float s=1.0, t=1.0;
for(i=2;i<=n;i++)
{
t=t+i;
s=s+1/t;
}
return s;
}


9: 第9题 编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)!
答案:
float fun(int m, int n)
{
float p,t=1.0;
int I;
for (i=1;i<=m;i++)
t=t*I;
p=t;
for(t=1.0,i=1;i<=n;i++)
t=t*I;
p=p/t;
for(t=1.0,i=1;i<=m-n;i++)
t=t*I;
p=p/t;
return p;
}


10: 第10题 编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出root=0.739085。
答案:
float fun()
{
float x1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>1e-6);
return x1;
}


11: 第11题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
答案:
int fun(int a[][N])
{
int I,j;
for(i=0;i<N;i++)
for(j=0;j<=I;j++)
a[i][j]=0;
}


12: 第12题 下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。
答案:
double fun(int w[][N])
{
int I,j,k=0;
double s=0.0;
for(j=0;j<N;j++)
{
s+=w[0][j];
k++;
}
for(j=0;j<N;j++)
{
s+=w[N-1][j];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][0];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][N-1];
k++;
}
return s/=k;
}


13: 第13题 请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。
答案:
void fun(int tt[M][N], int pp[N])
{
int I,j,min;
for(j=0;j<N;j++)
{
min=tt[0][j];
for(i=0;i<M;i++)
{
if (tt[i][j]<min)
min=tt[i][j];
}
pp[j]=min;
}
}
if(score[i]<aver)
{
below[k]=score[i];
k++;
}
return k;
}

2: 第2题 请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:
void fun(int *a, int *n)
{
int i,j=0;
for(i=2;i<1000;i++)
if ((i%7==0 || i%11==0) && i%77!=0)
a[j++]=i;
*n=j;
}


3: 第3题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:
void fun(int x, int pp[ ], int *n)
{
int i=1,j=0;k=0,*t=pp;
for(i=0;i<=x;i++)
if(i%2!=0)
{
t[j]=I;
j++;
}
for(i=0;i<j;i++)
if(x%t[i]==0)
{
pp[k]=t[i];
k++;
}
*n=k;
}


4: 第4题 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:
void fun(char *tt, int pp[])
{
int i;
for (i=0;i<26;i++)
pp[i]=0;
while (*tt)
{
switch (*tt)
{
case ‘a’: pp[0]++;break;
case ‘b’: pp[1]++;break;
case ‘c’: pp[2]++;break;
case ‘d’: pp[3]++;break;
case ‘e’: pp[4]++;break;
case ‘f’: pp[5]++;break;
case ‘g’: pp[6]++;break;
case ‘h’: pp[7]++;break;
case ‘i’: pp[8]++;break;
case ‘j’: pp[9]++;break;
case ‘k’: pp[10]++;break;
case ‘l’: pp[11]++;break;
case ‘m’: pp[12]++;break;
case ‘n’: pp[12]++;break;
case ‘o’: pp[14]++;break;
case ‘p’: pp[15]++;break;
case ‘q’: pp[16]++;break;
case ‘r’: pp[17]++;break;
case ‘s’: pp[18]++;break;
case ‘t’: pp[19]++;break;
case ‘u’: pp[20]++;break;
case ‘v’: pp[21]++;break;
case ‘w’: pp[22]++;break;
case ‘x’: pp[23]++;break;
case ‘y’: pp[24]++;break;
case ‘z’: pp[25]++;break;
}
tt++;
}
}

5: 第5题 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
答案:
void fun(int m, int k, int xx[])
{
int g=0,I,j,flag=1;
for(i=m+1;i<m*m;i++)
{
for(j=0;j<I;j++)
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}
}
if (flag==1 && j>=i)
{
if (k>=0)
{
xx[g++]=i;
k--;
}
else
break;
}
}
}


6: 第6题 请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
答案:
void fun(char a[],char b[], int n)
{
int I,j=0;
for (i=0;i<LEN;i++)
if (i!=n)
{
b[j]=a[i];
j++;
}
b[j]=‘\0’;
}


7: 第7题 请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。
答案:
void fun (int *s, int t, int *k)
{
int I, max;
max=s[0];
for(i=0;i<t;i++)
if (s[i]>max)
{
max=s[i];
*k=I;
}
}


8: 第8题 编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)
答案:
float fun (int n)
{
int i;
float s=1.0, t=1.0;
for(i=2;i<=n;i++)
{
t=t+i;
s=s+1/t;
}
return s;
}


9: 第9题 编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。 p=m!/n!(m-n)!
答案:
float fun(int m, int n)
{
float p,t=1.0;
int I;
for (i=1;i<=m;i++)
t=t*I;
p=t;
for(t=1.0,i=1;i<=n;i++)
t=t*I;
p=p/t;
for(t=1.0,i=1;i<=m-n;i++)
t=t*I;
p=p/t;
return p;
}


10: 第10题 编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出root=0.739085。
答案:
float fun()
{
float x1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>1e-6);
return x1;
}


11: 第11题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
答案:
int fun(int a[][N])
{
int I,j;
for(i=0;i<N;i++)
for(j=0;j<=I;j++)
a[i][j]=0;
}


12: 第12题 下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。
答案:
double fun(int w[][N])
{
int I,j,k=0;
double s=0.0;
for(j=0;j<N;j++)
{
s+=w[0][j];
k++;
}
for(j=0;j<N;j++)
{
s+=w[N-1][j];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][0];
k++;
}
for(i=1;i<=N-2;i++)
{
s+=w[i][N-1];
k++;
}
return s/=k;
}


13: 第13题 请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。
答案:
void fun(int tt[M][N], int pp[N])
{
int I,j,min;
for(j=0;j<N;j++)
{
min=tt[0][j];
for(i=0;i<M;i++)
{
if (tt[i][j]<min)
min=tt[i][j];
}
pp[j]=min;
}
}


14: 第14题 请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
答案:
int fun(int a[M][N])
{
int I,j,s=0;
for(j=0;j<N;j++)
{
s+=a[0][j];
s+=a[M-1][j];
}
for(i=1;i<=M-2;i++)
{
s+=a[i][0];
s+=a[i][N-1];
}
return s;
}


15: 第15题 请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。
答案:
unsigned fun(unsigned w)
{
unsigned t,s=0,s1=1,p=0;
t=w;
while(t>10)
{
if(t/10)
p=t%10;
s=s+p*s1;
s1=s1*10;
t=t/10;
}
return s;
}


16: 第16题 请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。
答案:
float fun(float h)
{
long t;
float s;
h=h*1000;
t=(h+5)/10;
s=(float)t/100.0;
return s;
}


17: 第17题 请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。
答案:
void fun(char *s)
{
char ch;
int I,m,n;
i=0;
m=n=strlen(s)-1;
while(i<(n+1)/2)
{
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
}
}


18: 第18题 编写程序,实现矩阵(3行3列)的转置(即行列互换)。
答案:
void fun(int array[3][3])
{
int I,j,temp;
for(i=0;i<3;i++)
for(j=0;j<I,j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}


19: 第19题 编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
答案:
void fun(char s[],int c)
{
int i=0;
char *p;
p=s;
while(*p)
{
if(*p!=c)
{
s[i]=*p;
i++;
}
p++;
}
s[i]=‘\0’;
}


20: 第20题 编写函数int fun(int lim,int aa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
答案:
int fun(int lim, int aa[MAX])
{
int k=0,I,j;
for(i=lim;i>1;i--)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
else
continue;
if(j>=i)
{
aa[k]=i;
k++;
}
}
return k++;
}


21: 第21题 请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。
答案:
void fun(char *s,int num)
{
char t;
int I,j;
for(i=1;i<num-2;i++)
for(j=i+1;j<num-1;j++)
if(s[i]<s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}


22: 第22题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。
答案:
double fun(STREC *h)
{
double max;
STREC *q=h;
max=h->s;
do
{
if(q->s>max)
max=q->s;
q=q->next;
}
while(q!=0);
return max;
}


23: 第23题 请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。
答案:
int fun(char *str)
{
int I,n=0;fg=1;
char *p=str;
while (*p)
{
n++;
p++;
}
for(i=0;i<n/2;i++)
if (str[i]==str[n-1-i]);
else
{
fg=0;
break;
}
return fg;
}


24: 第24题 请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
答案:
long fun (char *p)
{
long s=0,t;
int i=0,j,n=strlen(p),k,s1;
if(p[0]==‘-’)
i++;
for(j=I;j<=n-1;j++)
{
t=p[j]-‘0’;
s1=10;
for(k=j;k<n-1;k++)
t*=s1;
s+=t;
}
if(p[0]==‘-’)
return –s;
else
return s;
}


只给出部分 留下邮箱 发过去


m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回。

fun函数代码:int fun(int score[],int m, int below[]){float sum=0,ave=0; int i, n=0;//n: 低于平均分的人数,返回值 for(i=0;i<9;i++){sum+=score[i];} ave=sum/m;for(i=0;i<9;i++){if(score[i]<ave){n++;below[i]=score[i];}}printf("低于平均分的人数=%d",n);return(n);}带入主函数,运行结果如下:扩展资料:在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。函数的返回值是由返回语句return实现的,函数执行的最后一个操作就是返回,返回的意义是:1、子程序函数返回主调函数,宣告函数的一次执行结束,在调用期间所分配的变量单元被撤消;2、送函数值到调用表达式中,当然这一点并不是必需的,因为有些函数有返回值,有些函数没有返回值。

计算机三级网络考南开上机100题原题吗

计算机等级考试三级网络分为两部分
(1)笔试;(2)上机
如果你是只为了考证而考试的话,非常的容易,几乎不要求什么英语和数学水平,相对于你更应该了解的是计算机网络的知识(不是如何上网),例如各类协议,组网的方法、过程等,对于英语也只是一些专业名词和一些协议名称,数学用到的地方更是微乎其微。如果你不是计算机科班毕业,那么我感觉对于你来说困难最大的就是C语言的编程了。
对于笔试你可以参考《全国计算机等级考试三级教程-网络技术》(现在好象有2009年版的了,买最新的) 高等教育出版社出版 教育部考试中心主编 这本书(权威中的权威!)还有就是《历年笔试真题》(配有答案的),主要就是靠背。
对于上机会用到一些数学知识但也要结合到计算机语言当中去,并不是纯理论的数学而是要灵活运用。没关系如果你有恒心也没有什么可担心的,建议你参考《上机模拟100题》(配有详细答案的)考试就从这一百题里面抽取一道题,如果一点基础都没有可以稍微学一下皮毛,不需要会写只需要能看得懂这些程序就行,然后在考试以前把他们背下来(三级c语言上机只有一道题)
没什么好担心的,祝考试成功!


一道C语言函数题

原因:i是全局变量
一步一步来分析这个程序
从main进入
for (i=5;i<=8;i++)
aa();
进入循环首先i=5,i<=8成立
执行aa() 此时i=5
执行下面的循环
for (i=5;i<8;i++)
printf("*");
printf("\n");
打印3个星号一个回车符
然后i的值由于aa中的循环变成了8
好了,aa执行完,回到main中的for循环
执行main中for循环的最后一步i++
i的值变成9
i<=8条件不成立main中for中止,整个程序中止

所以实际上就只打印 ***\n


上一篇:外举不避仇 内举不避亲

下一篇:长沙月饼批发

相关推荐

热门头条