材料学院 作业4 函数编程

发布 2022-06-29 03:46:28 阅读 2772

改错题:

程序功能】函数fun从a数组存储的字符串中取出所有十六进制数字字符依次存入字符数组b中,然后再将b数组中的数字字符串转换成一个整数并返回。

提示:库函数isxdigit(ch)的功能是检查ch是否是16进制数字字符,若是则返回1,否则返回0。

测试数据与运行结果】

测试数据:输入“xyz3f4tqk”

运行结果:输出 1012

含有错误的源程序如下】:

#include<>

#include<>

long fun(char a)

int i,j=0;long int k=0;

char b[10]=;

for(i=0;a[i]!=0';i++)

if(isxdigit(a[i]))

b[i++]a[i];

b[j]='0';

i=0;do

else}while(b[i]!=0');

return k;

void main()

char c[80]="xyz3f4tqk";

long m;

m=fun(c);

printf("%ld",m);

要求】1、根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。

2、改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其他语句,也不能删去整条语句。

#include<>

#include<>

#include<>/isxdigit()等函数头文件。

long fun(char a)

int i,j=0;long int k=0;

char b[10]=;

for(i=0;a[i]!=0';i++)

if(isxdigit(a[i]))

b[i++]a[i];

b[j]='0';

i=0;do

else}while(b[i]!=0');

return k;

void main()

char c[80]="xyz3f4tqk";

long m;

m=fun(c);/传入字符串数组首地址。

printf("%ld",m);

编程题。程序功能】

用一组整数验证命题:“任意一个百位数字与个位数字不同的三位正整数n1在经过以下操作后一定会变换到1089:将n1的百位数字与个位数字交换得到n2;求n1与n2差的绝对值得到n3;将n3的百位数字与个位数字交换得到n4;求n3与n4的和得到n5,n5一定是1089。

若n1、n3是一位数或两位数,则在高位补0使其称为三位数。”

例如:n1:123,n2:321,n3:198(321-123),n4:891,n5:1089(198+891)

编程要求】1)编写函数int fun(int a,int b,int n),其功能是用a指向数组的前n个整数验证上述命题,将所有符合命题的整数所在数组元素的下标依次保存到b指向的数组中,函数返回b数组中数据的个数。

2)编写main函数,声明a数组并用测试数据初始化,用a数组作为实参调用fun函数,将a数组中所有符合命题的整数输出到屏幕。

测试数据与运行结果】

测试数据:123 765 1 45 121 1345 131 67 696 3589

运行结果:123 765 1 45 67

编一个函数fun(char s[ ]函数的功能是把字符串中的内容逆置然后放入原来字符串的后面。

例子如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:abcdefggfedcba。

部分程序如下:保存文件名为。

#include <>

#include <>

#include <>

#define n 81

fun(char s[ ]

main()

char a[n];

clrscr();

printf("enter a string:")gets(a);

printf("the original string is:")puts(a);

fun(a);

printf("");

printf("the string after modified:")

puts(a);

编一个函数locationt( )函数的功能是求出数组中第二大的值的位置,并且将该值返回给主函数。

部分程序如下:保存文件名为。

#include <>

#include <>

#define vsize 20

int vector[vsize];

int location(int list,int size)

main()

int i;

for(i=0;i

函数的功能是:判断一个整数是否回文(不用数组的方式实现)。

思想方法:假定一个数x为123 ,s=0,s*10+(x的个位数) 赋值给s,x(123)降一位变为12赋值给x ,s*10+(x的个位数)赋值给s,x(12)再降一位变为1赋值给x,s*10+(x的个位数)赋值给s,现在x(1)再降一位就为0了,还需要再降一位吗?

判断原来的123(x已经改变了,怎么办?可以事先赋值给替他变量吗?)是否等于s,如果相等则该数是回文,返回给主函数一个值1,否则返回给主函数0;主函数根据这个返回的值就可以判断是否任意输入的这个整数是否为回文,并在屏幕上输出是回文或不是回文。

部分程序如下,请把子函数补充完整并完全正确的运行程序。

#include<>

int f(int x)

void main()

long int x;

printf("任意输入一个整数");

scanf("%ld",&x);

if(f(x)) printf("%ld是回文",x);

else printf("%ld不是回文 ",x);

函数的功能是:将大于整数m且紧靠m的k个素数输出到屏幕上。

思想方法:例如:若输入17,5,则应输出:19,23,29,31,37。

先输入一个值给m,然后从m+1的值开始,调用prime这个函数,该函数功能为判断一个数是否素数,得到返回值,1表示该数是素数,0表示不是素数,如是素数,用一个变量x计数一次,然后m+2的值调用prime这个函数,若是素数,用一个变量计数一次,直到计数变量的值等于k为止。

部分程序如下,请把函数补充完整并完全正确的运行程序。

#include<>

int prime(int x)

void main()

int x,k,m;

scanf("%d,%d",&m,&k);

printf("大于整数%d且紧靠%d的%d的素数是 ",m,m,k);

for(x=0;x<=k;)

100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数选取出(如293)。计算并输出上述这些素数及统计满足条件的素数个数输出到屏幕上。

思想方法:1)从101开始,调用函数给出这个数据(求个位数字+十位数字)%10是否正好等于该数第百位上的数如是返回值1,否则返回值0,如果返回值1及满足以上要求。

2)调用函数prime,判断这个数是否素数,判断素数的函数参照题目3的prime的函数的写法,如果prime函数返回值1

同时满足以上2个条件则输出该数到屏幕上。

部分程序如下,请把程序补充完整并完全正确的运行程序。提交源程序名称为。

#include<>

int prime(int x)

int f(int x)

void main()

int x,count=0;

for(x=101;x<1000;x++)

printf("100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数个数为%5d ",count);

下列程序的功能是:把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后。请编写函数chg(char s)实现程序要求。

例如:s字符串中原有内容为:mn.123xyz,则调用函数后,结果为:n.123xyzm.

解题思想:先将第一个字符复制给一个变量,然后s[0]=s[1], s[1]=s[2], s[2]=s[3]……

可以写成一个循环s[i]=s[1+i],直到s[i]还是s[i+1]的值为0?(字符串结束标记)。请大家思考。

注意:部分源程序已给出。

#includes<>

void main()

int s[100];

gets(s);

函数作业4函数单调性

函数作业4 函数单调性。知识网络 1 函数单调性的定义,2 证明函数单调性 3 求函数的单调区间。4 利用函数单调性解决一些问题 5 抽象函数与函数单调性结合运用。典型例题 例1 1 则a的范围为 d a b c d 提示 21 0时该函数是r上的减函数。2 函数 是单调函数的充要条件是 a a b...

图像处理第4章编程作业

对一幅灰度图像 1 计算并画出此图像的中心化频率谱。clear temp image imread d 读文件。temp image rgb2gray temp image将图象变为黑白。temp image im2double temp image转化为二维矩阵。move1 fftshift ff...

函数 4 课后作业

1.如图是三个反比例函数,在x轴上方的图像,由此观察得到kl k2 k3的大小关系为 2.如图 点a在双曲线上,ab x轴于b,且 aob的面积s aob 2,则k 3.抛物线的顶点为,与x轴的一个交点a在点和之间,其部分图象如图所示,则以下结论 方程有两个相等的实数根,其中正确结论的个数为。4.如...