1、
2、
3、
4、
5、
6、
7
8
9
10
11
12
13
【参考答案】
long fun ( char *p)
{
long n=0;
int flag=1;
if(*p=='-') /*负数时置flag为-1*/ {p++;flag= -1;}
else if(*p=='+') /*正数时置flag为1*/
p++;
while(*p!='\0')
{n=n*10+*p-'0'; /*将字符串转成相应的整数*/
p++;
}
return n*flag;
}
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
【参考答案】
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[i][j];
pp[j]=max; /*将各列的最大值依次放入pp数组中*/
}
}
37
【参考答案】
unsigned fun(unsigned w)
{
int n=1,j,s=1;
unsigned t;
t=w;
/*首先确定w的位数,用变量n保存*/
while(t>=10)
{
/*每次循环使s的位数减1,同时n加1*/
t=t/10;
n++;
}
/*求10的n-1次方*/
for(j=1;j<n;j++)
s=s*10;
/*用w对10的n-1次方求余即可得到所求*/
return w%s;
}
38
【参考答案】
void fun(char*s)
{
char ch;
int i,m,n;
i=0;
m=n=strlen(s)-1;
/*将第i个和倒数第i个数互换,但循环的次数为数组长度的一半*/
while(i<(n+1)/2)
{
/*使用中间变量叫唤*/
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++; m--;
}
}
39
【参考答案】
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';
}
40
【参考答案】
void fun(char *s,int num)
{ char ch ;
int i, j ;
for(i = 1 ; i < 6 ; i++)
for(j = i + 1 ; j < 6 ; j++)
{
if(*(s + i) < *(s + j))
{
ch = *(s + j) ;
*(s + j) = *(s +i) ;
*(s + i) = ch ;
}
}
}
41
42
43
【参考答案】
void fun( char *a,int n )
{
int i=0,k=0;
char *p, *t;
p=t=a; /*将指针移动到字符串末尾*/
while(*t)
t++;
t--; /*从后往前如果是'*' 则使k++,找到最后一个*所在的位置,并记录'*'的个数*/
while(*t=='*')/*指针t指向前一个,同时标量k增加一*/ {k++;t--;}
if(k>n)
{while(*p&&p<t+n+1)
{ a[i]=*p;
i++;p++;
}
a[i]='\0';
}
}
44
45
46
47
48
49
【参考答案】
void fun( char *a, char *h,char *p )
{ int i=0;
char *q=a;
while(q<h)
{ a[i]=*q; q++;i++;}
while(q<p)
{ if(*q!='*')
{ a[i]=*q;
i++;
}
q++;
}
while(*q)
{ a[i]=*q; i++; q++;}
a[i]='\0';
}
50
51
52
53
54
55
56
57
58
59
60
61
62
63
【参考答案】
void fun( char *a ) {
int i=0;
char *p=a;
while(*p&&*p=='*') {
a[i]=*p;
i++;
p++;
}
while(*p)
{
if(*p!='*')
{a[i]=*p;i++;}
p++;
}
a[i]='\0'; }
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
【参考答案】
int fun(char *str)
{
int i,n=0,fg=1;
char *p=str;
while (*p) /*将指针p置位到字符串末尾,并统计字符数*/ {
n++;
p++;
}
for(i=0;i<n/2;i++) /*循环比较字符*/
if(str[i]==str[n-1-i]) ; /*相同,什么都不作*/ else /*不同,直接跳出循环*/ {
fg=0;
break;
}
return fg;
}
83
84
85
86
87
88
89
90
91
请编写函数fun,该函数的功能是:统计各年龄段的人数。
N个年龄通过调用随机函数获得,并放入主函数的age数组中。
要求函数把0~9岁年龄段的人数放在d[0]中,把10~19岁年龄段的人数放在d[1]中,把20~29岁年龄段的人数放在d[2]中,依此类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。
结果在主函数中输出。
注意:部分源程序在文件PROG1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
【参考答案】
void fun(int *a, int *b)
{
int i,j;
for(j=0;j<M;j++)
b[j]=0; /*数组b初始化为0*/
for(i=0;i<N;i++)
if(a[i]>=100)
b[10]++; /*如果年龄大于等于100,b[10]自增1*/
else
b[a[i]/10]++; /*如果年龄小于100,则将其分别统计到b[a[i]/10]中*/ }
double rnd()
{
static t=29,c=217,m=1024,r=0;
r=(r*t+c)%m;
return((double)r/m);
}
92
93
94
95
【参考答案】
double fun (int w[][N])
{
int i,j,k=0;
double av=0.0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1,则它一定是周边元素*/ {av=av+w[i][j]; /*将周边元素求和*/
k++;
}
return av/k; /*求周边元素的平均值*/
}
96
97
98
99。