程序设计

1
、主函数中通过键盘输入年份,调用函数fun判断该年是否为闰年
答案: if (year%400==0) flag=1;
else if (year%4!=0) flag=0;
else if (year%100!=0) flag=1;
else flag=0;
return(flag);

2、编写函数fun其功能是:根据整型参数n,计算如下公式a1=1,a2=1/(1+a1),a3=1/(1+a2),……an=1/(1+a(n-1))数列的第n项。
答案: float a=1;int i;
for(i=1;ia=1.0/(1+a);
return a;

3、求表达式的前20项之和。程序的运行结果为1.950000。
1 1 1
S = 1 + —— + —— + ...... + ——
1*2 2*3 n*(n+1)
答案: s=0;
t=1;
for(i=1;i<=n;i++)
{s=s+t;
t=1.0/(i*(i+1));
}


4、编写函数fun,函数的功能是:求一个四位数的各位数字的立方和。
答案:int d,k,s=0;
while (n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
return s;
5、编写函数fun,功能是:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于eps。
π 1 1 1
— = 1 - — + — - — + ...
4 3 5 7
运行结果:pi=3.141397
答案:while(fabs(t)>eps)
{ s=s+t;
p=-p;
i=i+2;
t=p/i;
}
return s*4;
6、编写函数fun,功能是求如下表达式:

如:n=5 运行结果:1.666667
答案:for(i=1;i<=n;i++)
{ t=0;
for(j=1;j<=i;j++)
t=t+j;
s=s+1/t;
}
return s;
7、编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。
每一分数的分母是前两项的分母之和
每一分数的分子是前两项的分子之和
例如:求前20项之和的值为32.660259。
答案:int i;
float f1=1,f2=1,f3,s=0;
for(i=1;i<=n;i++)
{f3=f1+f2;
f1=f2;
f2=f3;
s=s+f2/f1;
}
return s;
8、编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),其中d为1-9的数字。
例如3+33+333+3333+33333(此时d=3,n=5),d和n在主函数中输入。
答案:long int s=0,t=0;
int i;
for(i=1;i<=n;i++)
{ t=t+d;
s=s+t;
d=d*10;
}
return s;
9、编写函数fun,函数的功能是:求1到100之间的偶数之积
答案:double y=1;
int i;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
return y;
10、编写函数fun求1!+2!+3!+ …… +n!的和,在main函数中由键盘输入n值,并输出运算结果。例如:若n值为20,则结果为268040729。
答案:int i;
float f=1,s=0;
for(i=1;i<=n;i++)
{f=f*i;
s=s+f;}
return s;
11、调用函数fun判断一个三位数是否是"水仙花数"。在main函数中从键盘输入一个三位数,并输出判断结果。请编写fun函数。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153等于1的立方加上5的立方加上3的立方之和。
答案:int bw,sw,gw;
bw=n/100;sw=(n-bw*100)/10;gw=n%10;
if(n==

bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1;
else return 0;
12、编写函数fun其功能是:判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。
答案:int k,s=0;
do
{s=s+(w%10)*(w%10);
w=w/10;
}while(w!=0);
if(s%5==0)k=1;
else k=0;
return(k);
13、编写函数fun其功能是:计算出k以内最大的10个能被13或17整除的自然数之和。(k〈3000)。
答案:int a=0,b=0,j;
while((k>=2)&&(b<10))
{ k--;
if((k%13==0)||(k%17==0))
{a=a+k;b++;}
}
return a;
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
14、编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2!+1/4!+...+1/m!(m是偶数)
答案:double y=0.0;
int i,j;
double s=1;
for (i=2;i<=m;i+=2)
{for(j=i-1;j<=i;j++)
s=s*j;
y=y+1.0/s;
}
return y;
15、从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。例如:7是素数,8不是素数。请编写fun函数。素数是仅能被1和自身整除的数
答案:int i;
int j;
j= 1;
if (i<0) j=0;
for(i=2;i{if(n%i==0) j= 0;
}
return j;
16、请编写函数fun,它的功能是:判断m是否为素数。主函数的功能是:求出100到200之间的素数的个数。
答案:int i,k=1;
if(m<=1) k=0;
for(i=2;iif(m%i==0) k=0;
return k;
17、编写函数fun其功能是:求给定正整数n以内的素数之积。(n<28)
答案:long i,k;
long s=1;
for(i=2;i<=n;i++)
{for(k=2;kif(i%k==0)break;
if(k==i)s=s*i;
}
return s;
18、编写函数fun,函数的功能是:计算n门课程的平均值,计算结果作为函数值返回。例如,若有5门课程的成绩是:92,76,69,58,88,则函数的值为72.599998。
答案:int i;
float y=0;
for(i=0;iy+=a[i];
y=y/n;
return y;
19、求一批数中小于平均值的数的个数。
答案:int i,sum=0,k=0;
float average;
for(i=0;isum=sum+a[i];
average=sum*1.0/n;
for(i=0;iif(average>a[i]) k++;
return(k);
20、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。请编写fun函数。
答案:int min,i;
min=x[0];
for(i=1;i{if(x[i]return min;
21、编写函数fun,函数的功能是:找出一批正整数中的最大的偶数
答案:int i,amax=-1;
for(i=0;iif(a[i]%2==0) if (a[i]>amax) amax=a[i];
return amax;
22、程序的功能是: 把20个随机数存入一个数组,然后输出该数组中的最大值。其中确定最大值的下标的操作在fun函数中实现,请给出该函数的定义。
答案:int i,max=0;
for(i=1; i if(list[max]max=i;
return max;
23、求一批数中最大值和最小值的差。
答案:int i,max,min;
max=min=a

[0];
for(i=1;iif(a[i]>max) max=a[i];
else if(a[i]return(max-min);
24、给定n个数据, 求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。
答案:int i,k;
k=0;
for(i=1;i<=n;i++)
if(s[i]>s[k]) k=i;
return(k+1);
25、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。请编写fun函数。
答案:int min,i;
min=x[0];
for(i=1;i{if(x[i]return min;
26、请编写一个函数fun,函数的功能是:统计出若干个学生的平均成绩,最高分以及得最高分的人数。例如,输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最高分为92,得最高分的人数为3人。
答案:int i,j=0;float sum=0,ave;
Max=array[0];
for(i=0;i{ if(Maxsum=sum+array [i]; }
ave=sum/n;
for(i=0;iif(array [i]==Max) J++;
return(ave);
27、一个数组有8个元素,其初始数据为:1 2 3 4 5 6 7 8 要求在不增加数组,也不增加数组的存储单元的情况下,通过移动数组元素将数组变化为:4 5 6 7 8 1 2 3
答案:int i,j,k,t;
for(i=0;i<3;i++)
{t=a[0];
for(j=0;j<8;j++)
a[j]=a[j+1];
a[7]=t;
}
}
28、产生15个[20,80]上的随机整数,用顺序法(比较法)按从小到大排序后输出
答案:for(i=0;ifor(j=i+1;jif(a[i]>a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
}
29、编写函数用选择排序法对数组中的数据进行从小到大的排序。
答案:int i,j,k,t;
for(i=0;i{k=i;
for(j=i+1;jif(a[k]>a[j]) k=j;
if(k!=i)
{t=a[i];
a[i]=a[k];
a[k]=t;
} }

30、编写函数用冒泡排序法对数组中的数据进行从小到大的排序。
答案:int i,j,t;
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{ t=a[j];a[j]=a[j+1];a[j+1]=t;}
31、编写函数fun,在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
答案:for(i=N-2;i>=0;i--)
if(number<=a[i])
a[i+1]=a[i];
else
{a[i+1]=number;
break;}
if(number32、编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出
答案:int sum;
int i,j;
sum=0;
for(i=0;i<3;i++)
sum=sum+a[i][i]*a[i][i];
return sum;
33、有一个3×3的数组,求其右上三角(含主对角线)的元素之和
答案:s=0;
for(i=0;ifor(j=0;jif(i<=j) s+=a[i][j]
34、编写函数fun产生如下杨辉三角形,产生的行数由main给出。
答案:for (i=0;i{a[i][0]=1;
a[i][i]=1;
}

for (i=2;ifor (j=1;ja[i][j]= a[i-1][j-1]+a[i-1][j];
35、编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出矩阵第一行与第三行元素之和,并在fun()函数中输出
答案:int sum;
int i,j;
sum=0;
for(i=0;i<3;i+=2)
for(j=0;j<3;j++)
sum=sum+a[i][j];
return sum;
36、编写函数fun,函数的功能是用循环语句编程将二维数组a[3][4]的第一行和第三行对调(如下图)。
2 3 5 4 9 7 3 1
3 8 10 2 3 8 10 2
9 7 3 1 2 3 5 4
答案:for (n=0;n<4;n++)
{ t=pp[0][n];
pp[0][n]=pp[2][n];
pp[2][n]=t;
}
37、请编写一个函数fun,函数的功能是:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最前面的一个)。
例如:输入的数组为: 1 2 3
4 15 6
12 18 9
10 11 2
求出的最大数为18,行坐标为2,列坐标为1。
答案:int max,i,j;
max=array [0][0];
Row=0;
Col=0;
for(i=0;i{for(j=0;jif(max{max=array [i][j];
Row=i;
Col=j;}
}
return(max);
38、编写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:

100 200 300
400 500 600
700 800 900
程序输出:
100 400 700
200 500 800
300 600 900
答案:int i,j,t;
for(i=0; i < 3; i++)
for(j=0; j < i; j++)
{ t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t; }
39、编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维数组的值在主函数中赋予。程序的运行结果为75。
答案:for(i=0;is=s+a[i][0]+a[i][N-1];
for(j=1;js=s+a[0][j]+a[M-1][j];
40、编写函数fun,函数的功能是:求一个给定字符串中的字母的个数。
答案:int i,k=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
k++;
return k;
41、编写函数fun求一个字符串的长度,在main函数中输入字符串,并输出其长度。
答案:char *p;
int n=0;
p=p1;
while(*p++)
n++;
return n;
42、编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。
答案:while(str[i+n-1])
{str[i-1]=str[i+n-1];
i++; }
str[i-1]='\0';
43、编写函数fun,函数的功能是:从字符串s中删除指定的字符c。
答案:int i,k=0;
for(i=0;s[i]!='\0';i++)
if(s[i]!=c) s[k++]=s[i];
s[k]='\0';
44、用函数将第2个字符串连接到第1个字符串之后,不允许使用strcat函数。
答案:int i,j;
for(i=0;c1[i]!='\0';i++);
for(j=0;c2[j]!='\0';j++)
c1[i+j

]=c2[j];
c1[i+j]='\0';
45、编写函数fun,函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。若程序执行时输入字符串为:turbocandborlandc++从键盘上输入字符:n,
则输出后变为:turbocadborladc++如果输入的字符在字符串中不存在,则字符串照原样输出。
答案:char *q=s;
for(; *q; q++)
if(*q != c) *(s++)=*q;
*s=0;
46、请编写一个函数fun,函数的功能是:将主函数中输入的字符串反序存放。例如:输入字符串"abcdefg",则应输出"gfedcba"。
答案:int i,j;
char c;
for(i=0,j=n-1;i{c=*(str+i);
*(str+i)=*(str+j);
*(str+j)=c;}
47、编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,字符串为:as,则应输出6。
答案:int i,n=0;
for(i=0;i<=strlen(str)-2;i++)
if((str[i]==substr[0])&&(str[i+1]==substr[1]))
n++;
return n;
48、请编写一个函数fun,函数的功能是:输入一个字符串,过滤此串,只保留串中的字母字符,并统计新生成串中包含的字母个数。
例如:输入的字符串为ab234$df4,新生成的串为abdf
答案:int i,j;
for(i=0,j=0;*(ptr+i)!='\0';i++)
if(*(ptr+i)<='z'&& *(ptr+i)>='a'||*(ptr+i)<='Z' && *(ptr+i)>='A')
{*(ptr+j)=*(ptr+i);
j++;}
*(ptr+j)='\0';
return(j);
49、请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。
答案:int i,j;
char t;
for(i=1;ifor(j=i+1;jif(s[i]{ t=s[i];s[i]=s[j];s[j]=t;}
50、编写函数fun将一个字符串中下标为m的字符开始的全部字符复制到另一个字符串中。在main函数中输入字符串和m的值,并输出运行结果。
答案:while(str1[i+m]!='\0')
{str2[i]=str1[i+m];
i++;
}
str2[i]='\0';
51、函数fun主要功能是:从一个数组中查找出最大值在数组中的位置(从0开始),并把其内存地址返回。
说明:pos保存最大值在数组中的位置,p保存最大值内存地址
答案:p=s;
for(i=1;iif(*p{ p=s+i;
*pos=i;
}
return p;
52、编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(包括1与自身)。规定n的值不大于1000。
例如:n的值为855时,应输出1560。
答案:int s=0,i;
for(i=1;i<=n;i++)
if(n%i==0)s=s+i;
return s;
53、编写函数fun,函数的功能是:求一个整数的各位数字的平方和。
若n=1234,则运行结果k=30。
答案:int d,k,s=0;
while (n>0)
{d=n%10;
s+=d*d;
n/=10;
}
return s;
54、编写函数fun,函数的功能是:求一组数中大于平均值的

数的个数。
例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为190。
答案:int i,sum=0;
float ave=0;
for(i=0;iave+=a[i];
ave=ave/n;
for(i=0;iif(a[i]>ave) sum+=a[i];
return sum;
55、有一个3×3的数组,求其左下三角(含主对角线)的元素之和。程序的运行结果为34。
答案:s=0;
for(i=0;ifor(j=0;jif(i>=j) s+=a[i][j];
56、编写函数fun,函数的功能是:求一个给定字符串中的数字字符的个数。
程序运行结果:k=12。
答案:int i,k=0;
for(i=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
k++;

return k;



相关文档
最新文档