c语言数组和函数例题 c语言数组及其应用

C语言题目:编写程序,定义一个含有15个元素的数组,并编写函数分别完成以下操作#include stdio.h
#include stdlib.h
#include time.h
#define M 15
#define B 3
void getfun(int *, int *, int);
void outfun(int *, int);
int main()
{
int arr[M], sumarr[M / B] = {0};
srand((int)time(0));
getfun(arr, sumarr, M);
outfun(sumarr, M);
}
void getfun(int *p, int *s, int a)
{
for (int i = 0; iM; i)
{
*(pi) = rand() % 37;
}
int sum = 0, j = 0;//1,改动这里,原j=-1;
for (int n = 0; nM; n)//2,改动这里,原for(int n=0;nM/B;n)
{
sum= p[n];
if ((n1) % 3 == 0)
{
s[j] = sum;
sum = 0;
}
}
for (int i = 0; iM; i)
{
printf("=", p[i]);
}
printf("\n");
}
void outfun(int *p, int a)
{
for (int i = 0; iM / B; i)
{
printf("]", p[i]);
if ((i1) % B == 0)
printf("\n");
}
}
//解决,请采纳
一道c语言题,关于数组函数:下面程序的运行结果是 #include?字符串c语言数组和函数例题:LBLMNP
分析描述:
已知:初始值a="AB",b="LMNP",i=0;
通过函数strcat(a,b)c语言数组和函数例题,其原理把bc语言数组和函数例题的值赋值到a的尾c语言数组和函数例题;则a="ABLMNP",b="LMNP";
通过while(a[i]!='\0')使i的值为1,2,3,4,5,6;则:b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5];当i等于6时则跳出while循环c语言数组和函数例题;
最后:puts(b)输出结果:LBLMNP
C语言数组 , 函数程序问题图1第十几行代码看不清 , 希望题主把图发得更详细一点 。
不过根据代码中 Input 函数来看,题主输入一个数据到num[i]和score[i]数组时,之后进行了i自加,即i指向了数组的下一个元素的位置 , 而此时的num[i]和score[i]里是还没有输入数据的,拿此时的score[i]来判断是否大于0显然是错误的 。这应该是无法跳出循环的原因
题主将while语句里改成score[i-1] >=0应该就能解决问题了
推荐一些有关C语言数组的练习题 。06年南开上机题
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==0)iw!=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==1j=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)
【c语言数组和函数例题 c语言数组及其应用】{
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为两个正整数,且要求mn 。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(t10)
{
if(t/10)
p=t;
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;i1;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-smax)
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;
}
25: 第25题 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串 。若两个字符串长度相同,则返回第一个字符串 。
答案:char *fun(char *s,char *t)
{
char *p,*t1=t,*s1=s;
int n=0;m=0;
while (*s1)
{
n;
s1;
}
while(*t1)
{
m;
t1;
}
if(n=m)
p=s;
else
p=t;
return p;
}
26: 第26题 请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
x/2=1 1/3 1×2/3×5 1×2×3/3×5×7 1×2×3×4/3×5×7×9 … 1×2×3×…×n/3×5×7×(2n 1)
程序运行后,如果输入精度0.0005,则程序输出为3.14… 。
答案:double fun(double eps)
{
double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))=eps)
{
pi =s;
t=n/(2*n 1);
s*=t;
n;
}
pi=pi*2;
return pi;
}
27: 第27题 请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数 。
答案:void fun(int m, int *a, int *n)
{
int I,j=0; *n=0;
for(i=1;i<=m;i)
if (i%7==0 || i ==0)
{
a[j]=I;
j;
}
*n=j;
}
28: 第28题 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回 。数组元素中的值已在主函数中赋予 。主函数中x是数组名,n 是x中的数据个数,max存放最大值 , index存放最大值所在元素的下标 。
答案:void fun (int a[],int n, int *max, int *d)
{
int I;
*max=a[0];
*d=0;
for(i=0;I<n;i)
if(a[i]*max)
{
*max=a[i];
*d=I;
}
}
29: 第29题 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母 , 则不转换) 。
答案:void fun(char *ss)
{
int I,n;
n=strlen(ss);
for(i=1;i<n;i =2)
if(ss[i]=‘a’ ss[i]<=‘z’)
ss[i]=ss[i]-32;
}
30: 第30题 请编写一个函数fun , 它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数 。
答案:int fun(int a[][M])
{
int I,j,max;
max=a[0][0];
for(i=0;i<2;i)
for(j=0;j<M;j)
if(a[i][j]max)
max=a[i][j];
return max;
}
31: 第31题 请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中 。
答案:void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i)
if(i%2==0s[i]%2==0)
{
t[j]=s[i];
j;
}
t[j]=‘\0’;
}
32: 第32题 请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中 。
答案:void fun(char *s,char t[])
{
int I,j=0,n;
n=strlen(s);
for(i=0;I,n;i)
if(i%2!=0s[i]%2!=0)
{
t[j]=s[i];
j;
}
t[j]=‘\0’;
}
33: 第33题 假定输入的字符串中只包含字母和*号 。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个 , 则删除多于的*号;若少于或等于n个,则什么也不做 , 字符串中间和前面的*号不删除 。
答案:void fun(char *a,int n)
{
int i=0;k=0;
char *p, *t;
p=t=a;
while (*t)
t;
t--;
while(*t==‘*’)
{
k;
t--;
}
t;
if(kn)
{
while (*pp<t n)
{
a[i]=*p;
i;
p;
}
a[i]=‘\0’;
}
}
34: 第34题 学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个 , 函数返回分数最高的学生的人数 。
答案:int fun (STREC *a, STREC *b)
{
int I,j=0,n=0, max;
max=a[0].s;
for(i=0;i<N;i)
if(a[i].smax)
max=a[i].s;
for(i=0;i<N;i)
if(a[i].s==max)
{
*(b j)=a[i];
j;
n;
}
return n;
}
35: 第35题 请编写一个函数,用来删除字符串中的所有空格 。
答案:void fun(char *str)
{
int i=0;
char *p=str;
while (*p)
{
if(*p!=‘’)
{
str[i]=*p;
i;
}
p;
}
str[i]=‘\0’;
}
36: 第36题 假定输入的字符串中只包含字母和*号 。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部 。
答案:void fun(char *a)
{
int i=0,n=0;
char *p;
p=a;
while (*p==‘*’)
{
n;
p;
}
while (*p)
{
a[i]=*p;
i;
p;
}
while(n!=0)
{
a[i]=‘*’;
i;
n--;
}
a[i]=‘\0’;
}
37: 第37题 某学生的记录由学号、8门课程成绩和平均分组成 , 学号和8门课程的成绩已在主函数中给出 。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中 。请自己定义正确的形参 。
答案:void fun(STREC *p)
{
double av=0.0;
int i:
for(i=0;i<N;i)
av =p-s[i];
av/=N;
p-ave=av;
}
C语言编程,涉及函数、数组#include stdio.h
#define MAX 10
int search(int nums[], int key)
{
for (int i=0; i!=10;i)
{
if (nums[i] == key)
{
return i;
}
}
return -1;
}
int main()
{
int nums[MAX];
for (int i=0; i!=10;i)
{
scanf("%d", nums[i]);
}
int key;
scanf("%d", key);
int ans = search(nums, key);
printf("%d\n", ans);
return 0;
}
这么简单的问题,自己去修改吧 。二分查找对于十个数根本没有任何意义
如果你想写复杂了,可以实现一个平衡二叉树,或者用散列算法
这么简单的题目你非要钻牛角尖的话 。。。我给你一个另外的解答:
#include iostream
#include set
using namespace std;
const int MAX = 1000000;
setint hash[MAX];
int main()
{
int temp, index = 0;
for (int i=0; i!=10;i)
{
scanf("%d", temp);
hash[tempMAX / 2].insert(index);
}
scanf("%d", temp);
setint::iterator iter = hash[tempMAX / 2].begin();
for ( ; iter!=hash[tempMAX / 2].end();iter)
{
printf("%d\n", *iter);
}
return 0;
}
顺便告诉你fflush不是标准c的一个函数
c语言编程题 二维数组和函数#include stdio.h
#include stdlib.h
#include string.h
int Input(long number[], int score[][3]) {
int i=0;
printf("Input Score: Number Grad1 Grad2 Grad3\n");
while (i30) {
scanf("%ld %d %d %d", number[i], score[i][0], score[i][1], score[i][2]);
if (number[i]0) break;
i;
}
return i;
}
void Total1(int score[][3], float sum[], float aver[], int n) {
int i;
for (i=0;in;i) {
sum[i] = score[i][0]score[i][1]score[i][2];
aver[i] = sum[i]/3;
}
}
void Total2(int score[][3], float sum[], float aver[], int n) {
int i;
sum[0] = sum[1] = sum[2] = 0.0f;
for (i=0;in;i) {
sum[0]= score[i][0];
sum[1]= score[i][1];
sum[2]= score[i][2];
}
for (i=0;i3;i)
aver[i] = sum[i]/3;
}
void Total3(long num[],int score[][3],float sum[],float aver[],int n) {
int i, j;
long _n;
int _s;
float _sum, _ave;
Total1(score, sum, aver, n);
for (i=0;in-1;i) {
for (j=n;ji;j--) {
if (sum[i]sum[j]) {
//swap (i, j)
_n = num[i]; num[i] = num[j]; num[j] = _n;
_s = score[i][0];score[i][0] = score[j][0]; score[j][0] = _s;
_s = score[i][1];score[i][1] = score[j][1]; score[j][1] = _s;
_s = score[i][2];score[i][2] = score[j][2]; score[j][2] = _s;
_sum = sum[i]; sum[i] = sum[j]; sum[j] = _sum;
_ave = aver[i]; aver[i] = aver[j]; aver[j] = _ave;
}
}
}
}
void Print(long num[],int score[][3],float sum1[],float aver1[],float sum2[],float aver2[],int n) {
int i;
printf("Pos\tNumber\tGrad1\tGrad2\tGrad3\tSum1\tAver1\n");
for (i=0;in;i) {
printf("%d\t%ld\t%d\t%d\t%d\t%.1f\t%.1f\n", (i 1), num[i], score[i][0], score[i][1], score[i][2], sum1[i], aver1[i]);
}
printf("No\tSum2\tAver2\n");
for (i=0;i3;i) {
printf("%d\t%.1f\t%.1f\n", (i 1), sum2[i], aver2[i]);
}
}
int main() {
long number[30];
int score[30][3];
float sum1[30], aver1[30];
float sum2[30], aver2[30];
float sum3[3], aver3[3];
int n;
n = Input(number, score);
Total1(score, sum1, aver1, n);
Total2(score, sum3, aver3, n);
Print(number, score, sum1, aver1, sum3, aver3, n);
Total3(number, score, sum2, aver2, n);
Print(number, score, sum2, aver2, sum3, aver3, n);
return 0;
}
关于c语言数组和函数例题和c语言数组及其应用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读