1 、请写函数proc() ,其功能是:求正整数x和y的最大公约 。
例如 ,程序执行时 ,若输入的两个正整数为12 ,24 ,则它们的最大公约数为12 ,最小公倍数为24 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入所写的若干语句 。
int r;
while (x%y!=0)
{
r=x%y;
x=y;
y=r;
}
return y;
参考程序
2 、请编写函数proc() ,其功能是:将str所指字符串中除下标为偶数 、同时ASCIl码值为奇数的字符外 ,其余的字符都删除 ,串中剩余字符所形成的一个新串放在t所指的数组中 。例如 ,若str所指字符串中的内容为ABCDEFG12345 ,其中字符B的ASCIl码值为偶数,所在元素的下标为奇数 ,因此必须删除;而字符A的ASCII码值为奇数 ,所在数组中的下标为偶数,因此不应当删除 。依此类推 ,后t所指的数组中的内容应是ACEG 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入所写的若干语句 。
#include <stdio.h>
void proc(char *str,char t[])
{
}
int main()
{
char str[100],t[100];
printf("\nPlease enter string str:");
scanf("%s",str);
proc(str,t);
printf("\nThe result is:%s\n",t);
return 0;
}
int i,j=0;
for (i=0;str[i]!=\0;i++) // 从数组的第一个元素开始 ,到其后一个
{
if (i%2==0 && str[i]%2!=0) // 下标为偶数 、同时ASCIl码值为奇数的字符
t[j++]=str[i]; // 如果成立 ,则把它放到t数组中
}
t[j]=\0; // 字符串结束标志为\0
参考程序
3 、下列给定程序中 ,函数proc()的功能是:从字符串str中 ,删除所有大写字母’F’ 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入所编写的若干语句 。
#include <stdio.h>
void proc(char *str)
{
}
int main()
{
char str[80];
printf("\Enter a string:");
gets(str);
printf("The original string:");
puts(str);
proc(str);
printf("The string after deleted:");
puts(str);
printf("\n");
return 0;
}
int i,j;
for (i=j=0;str[i]!=\0; i++)
if (str[i]!=F)
str[j++]=str[i];
str[j]=\0;
参考程序
4 、假定输入的字符串中只包含字母和*号。请编写函数proc() ,它的功能是:将字符串中的前导*号全部删除 ,中间和后面的*号不删除 。
例如 ,若字符串中的内容为****a*bc*def*g**** ,删除后 ,字符串中的内容应当是a*bc*def*g**** 。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句 。
#include <stdio.h>
void proc(char *str)
{
}
int main()
{
char str[81];
printf("Enter a string:");
gets(str);
proc(str);
printf("The string after deleted:");
puts(str);
return 0;
}
char *p=str,*q=str;
while (*p==*) p++; // 通过p的移动来达到使p指向首个不是*号的字符
for (;*p!=\0;p++,q++)
*q=*p;
*q=\0;
参考程序
5 、请编写函数proc() ,其功能是:将str所指字符串中下标为偶数的字符删除 ,串中剩余字符形成的新串放在t所指字符数组中 。
例如,当str所指字符串中的内容为abcdefg ,则在t所指数组中的内容应是bdf 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入所编写的若干语句 。
#include <stdio.h>
void proc(char *str,char t[])
{
}
int main()
{
char s[81],t[81];
printf("Enter a string:");
gets(s);
proc(s,t);
printf("The result is::");
puts(t);
return 0;
}
int i,j=0;
for(i=0; str[i]!=\0;i++)
if (i%2!=0) t[j++]=str[i];
t[j]=\0;
参考程序
6 、请编写函数proc() ,它的功能是计算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.5
在C语言中可调用log(n)函数求ln(n) 。
例如 ,若m的值为30 ,则proc()函数值为8.640500 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入你所编写的若干语句 。
#include <stdio.h>
#include <math.h>
double proc(int m)
{
}
int main()
{
printf("%lf\n",proc(30));
return 0;
}
int i;
double s=0.0;
for (i=1;i<=m; i++)
s=s+log(i);
return sqrt(s);
参考程序
7 、请编写函数proc() ,其功能是:判断形参n中的正整数是几位数 ,并将结果通过函数值返回 。例如:若输入的数据为123 ,则输出结果为3 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入你所编写的若干语句。
#include <stdio.h>
int proc(int n)
{
}
int main()
{
int n;
scanf("%d",&n);
printf("%d 是一个 %d 位数 。\n",n,proc(n));
return 0;
}
int cnt=0;
do {
cnt++;
n=n/10;
}while (n!=0);
return cnt;
参考程序
8 、请编写函数proc() ,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N) ,按顺序合并组成一个新的字符串 。
例如,若字符串数组中的M个字符串为:
ABCD
BCDEFG
CDEFGHI
则合并后的字符串内容应该是ABCDBCDEFGCDEFGHl。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入所编写的若干语句 。
#include <stdio.h>
#define M 3
#define N 20
void proc(char arr[M][N],char *b)
{
}
int main()
{
char str[M][N]={"ABCD","BCDEFG","CDEFGHl"},arr[M*N+1];
int i;
printf("The string:\n");
for (i=0;i<M;i++)
puts(str[i]);
printf("\n");
proc(str,arr);
printf("The A string:%s\n",arr);
return 0;
}
int i,j,k=0;
for (i=0;i<M;i++)
for(j=0; arr[i][j]!=\0; j++)
b[k++]=arr[i][j];
b[k]=\0;
参考程序
9 、某学生的记录由学号 、8门课程成绩和平均分组成 ,学号和8门课程的成绩已在主函数中给出,请编写函数fun() ,其功能是:求出该学生的平均分 ,并放入记录的ave成员中 。
例如 ,学生的成绩是:85.5 ,76 ,69.5 ,85 ,91 ,72 ,64.5 ,87.5 ,则他的平均分应为78.875 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数fun()花括号中填入你编写的若干语句 。
#include <stdio.h>
#define N 8
typedef struct
{
char num[10];
double s[N];
double ave;
}STREC;
void fun(STREC *a)
{
}
int main()
{
STREC stu={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
int i;
fun(&stu);
printf("The %ss student data:\n",stu.num);
for (i=0; i<N; i++)
printf("%5.1lf ",stu.s[i]);
printf("\n average=%7.3lf\n",stu.ave);
return 0;
}
int i;
a->ave=0.0;
for (i=0;i<N;i++)
a->ave=a->ave+a->s[i];
a->ave=a->ave/N;
参考程序
10、学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中 ,请编写函数proc() ,其功能是:按分数的高低排列学生的记录,高分在前 。
注意:部分源程序给出如下 。
请勿改动main()函数和其他函数中的任何内容 ,仅在函数proc()的花括号中填入所编写的若干语句 。
#include <stdio.h>
#define M 16
typedef struct
{
char num[10];
int s;
}STREC;
void proc(STREC a[])
{
}
int main()
{
STREC stu[M]={{"GA005",85},{"GA003",76}, {"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64}, {"GA018",64},{"GA016",72}};
int i;
proc(stu);
printf("The data after sorted:\n");
for (i=0; i<M; i++)
{
if (i%4==0) printf("\n");
printf("%s%4d ",stu[i].num,stu[i].s);
}
printf("\n");
return 0;
}
int i,j;
STREC t;
for (i=0; i<M-1; i++)
for (j=0;j<M-1-i;j++)
if (a[j].s<a[j+1].s)
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
参考程序
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时 ,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。