C语言

更新时间:2023-12-18 00:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编写程序,从键盘上输入一个整数(例如560)表示分钟,将其换算成用小时和分钟表示,然后输出至屏幕。

#include void main() { int a,b,c; scanf(\b=a/60; c=a`;

printf(\ getch(); }

编写程序,输入两个整数(例如1500和350),求出它们的商和余数并进行输出。 #include void main() {int a,b,c,d;

scanf(\c=a/b; d=a%b;

printf(\getch(); }

编写程序,读入3个整数给分别变量a,b,c,然后将a,b,c的值输出到屏幕,再交换它们中的数值,把a中原来的值给b,把b中原来的值赋给c,把c中原来的值赋给a,然后再次输出a,b,c的值到屏幕。 #include void main() {

int a,b,c,d;

scanf(\ printf(\d=a; a=c; c=b; b=d;

printf(\ getch(); }

编写程序,读入3个双精度数,求它们的平均值输出到屏幕。 #include void main() {

double a,b,c,d;

scanf(\

d=(a+b+c)/3 printf(\getch(); }

下列程序中,要求main函数实现如下功能:从键盘上输入3个正整数,求出它们中的最大值。请完善程序,并在程序最后用注释的方式给出你的测试数据及在这组测试数据下的运行结果。 【源程序】 #include void main() {

int a ,b ,c ,d ,max;

printf(“Enter three integers:”); (“%d%d%d”,&a,&b,&c); if(a>b) max= ; else max= ; if( ) max=c;

(“max of the three numbers is %d”,max); }

#include void main() {

unsigned int a ,b ,c,d ,max; printf(\ scanf(\ if(a>b) d=a; else d=b ; if(d

printf(\getch(); }

/*1,54,2;54*/

请编程序:对从键盘上输入的x值,根据以下函数关系计算出相应的y值(设x,y均为整型量)。 x值的范围 计算y的公式 x<0

0

0<=x<10 x

10<=x<20 10 20<=x<40 -5x+20 #include void main() { int x,y;

scanf(\if(x<40) { if(x<0) y=0;

if(x>=0&&x<10) y=x;

if(x>=10&&x<20) y=10;

if(x>=20&&x<40) y=-5*x+20; }

printf(\else

printf(\getch(); }

从键盘上任意输入年份和月份,打印该年该月有几天。 #include main() {

int year,mouth,day;

scanf(\ switch(mouth) { case 1: case 3: case 5: case 7: case 8: case 10:

case 12:day=31;break; case 4: case 6: case 9:

case 11:day=30;break; case 2:

if(year%4==0&&year%4!=0||year@0==0&&mouth==2)

day=29; else day=28; break; default:day=-1; }

if (day==-1)

printf(\ else printf(\ getch(); }

试利用二重循环打印出下列星形矩阵,并使矩阵的起始列在屏幕的21列开始。 ************* ************* ************* ************* ************* ************* ************* ************* ************* *************

#include void main() { int i,j;

for(i=0;i<10;i++) {

for(j=0;j<21;j++) {

printf(\ for(j=21;j<35;j++) printf(\ printf(\ } getch(); }

试利用二重循环打印出下列星形三角形。 * *** ***** ******* ********* ***********

#include

void main() {int i,j;

for(i=1;i<7;i++) {

for(j=0;j<6-i;j++) printf(\

for(j=0;j<2*i-1;j++) printf(\ printf(\ } getch(); }

修改课堂上给出的九九乘法表程序,使其输出一个下三角形形状的九九乘法表。 #include void main() {int i,j;

for(i=1;i<10;i++) {for(j=1;j<=i;j++)

printf(\-2d \ printf(\ } getch(); }

从键盘上输入一个正整数,判断该正整数是否为质数,如果是输出“yes”,否则输出“no”。 #include #include void main() { int n,j; scanf(\ if(n>2)

{ for(j=2;j

printf(\ if(j>=sqrt(n)) printf(\ else printf(\ getch(); }

下列程序想求出满足如下条件的三位数n:(1)n除以11(整数相除)所得到的商等于n的各位数字的平方和;(2)n中至少有二位数字相同。如:131除以11的商为11,131各位数字的平方和为11,131中有二位数字相同,故131是所要求出的三位数中的一个;又如550,也是满足条件的三位数。源程序中有些错误,请你改正并最终使程序得到如下的运行结果:131 550 900

【含有错误的源程序】 #include void main() { int n , a , b , c; for(n=1; n<1000; n++) { a=n/100; b=n/10; c=n/10;

if(n/11=a*a+b*b+c*c||(a==b+a==c+b==c)>=2) printf(\} }

#include\int main() { int a,b,c,n;

for(n=100;n<1000;n++) { a=n/100; b=n/10; c=n;

if(n/11==a*a+b*b+c*c&&(a==b||a==c||b==c)) printf(\ }

#include\ void main() { int n,k;

scanf(\ k=0 ;

do{k+=n;

n/=10; }while (n); printf(\ getch(); }

试找出符合下列条件的正整数:(1)该数是一个三位数;(2)该数是37的倍数;(3)该数循环左移后得到的另两个数也是37的倍数。例如148是37的倍数,481和814也是37的倍数。

#include\ void main() { int n,a,b;

for(n=100;n<1000;n++) if(n7==0)

{ a=n/10+n*100; b=n/100+n0*10; if(a7==0&&b7==0) printf(\ } getch(); }

请编程序利用下列公式求π的近似值。公式为:

要求:先求出前2n项的π值,再求出2n+2项的π值,直至二者之差小于10-5为止。

#include main() {

int n; float a,b; a=1,b=4.0/3; n=1;

while(b-a>=1e-5) { a=b; n++;

b=b*4*n*n/(2*n-1)/(2*n+1); }

printf(\ getch(); }

请编程序求出满足如下条件的四位数n:(1)n的范围为[5000,8000];(2)n千位上的数减百位上的数减十位上的数减个位上的数大于零。编程要求:以每行5个输出满足条件的数及该类数的个数。

#include main() {

Int n,a,b,c,d,s,i=0;

for(n=5000;n<=8000;n++) {

a=n/1000; b=n00/100;

c=n0/10; d=n; s=a-b-c-d; if(s>0) {i++;

printf(\ if(i%5==0) printf(\ } }

printf(\ getch(); }

请编程序求出满足如下条件的一个四位整数,它的9倍恰好是其反序数(例如,1234与4321互为反序数)。

#include main() { int i,j,a;

for(i=1001;i<10000;i++) { a=i;j=0; while(a)

{

j=j*10+a; a=a/10; }

if(j==i*9) printf(\ } getch(); }

请编程序求出从键盘上输入的两个正整数a和b的最大公约数和最小公倍数。

#includeint main()

{ int s,a,b,t; printf(\(between using space):\ scanf(\ s=a*b while(b)

{ t=a%b; a=b; b=t; }

printf(\multiple:%d\,s/a); return 0; getch(); }

请编程序计算1!+2!+3!+…+n!的前10项之和。

#include main() { int n,i; long s,t; s=0, t=1;

printf(\ scanf(\ for(i=1;i<=n;i++) { t=i*t; s=s+t; }

printf(\ getch(); }

反序数。例如,123的反序数是321。请设计程序,从键盘上输入一个整数,求其反序数并输出。 #include main() {

long int a,i,b; scanf(\ b=0; while(a>0) { i=a; b=b*10+i;

a=a/10; }

printf(\ getch(); }

完备数。完备数是一些特殊的自然数,它所有的真因子(即除了自身以外的约数)之和恰好等于该数本身。例如,6=1+2+3,故6是一个完备数。请设计程序,找出500以内的所有完备数。 #include void main() {

int a,b,sum;

for(a=2;a<=500;a++) { sum=0 ; for(b=1;b<=a/2;b++) {

if(a%b==0) sum+=b; } if(sum==a) printf(\getch(); }

回文数。一个数如果正读和倒读(即反序数)相同,称该数是回文数。例如,121、1331均为回文数。请设计程序,找出200~300之间的所有回文数,并以每行8个数输出至屏幕。 #include void main() {

int a,i,b,c,k; k=0;

for(a=200;a<=300;a++) {c=a; b=0; while(c) { i=c; b=b*10+i; c/=10; } if(b==a) {

printf(\ k++;

if(k%8==0) printf(\} getch(); }

回文质数。一个数如果是回文数,同时又是质数,则该数被称为回文质数。请设计程序,找出100~500之间的所有回文质数,并以每行5个输出至屏幕。 #include void main() {

int a,i,b,c,k,j; j=0;

for(a=100;a<=500;a++) { c=a;b=0; while(c) { i=c; b=b*10+i; c/=10; } if(b==a)

{for(k=2;k<=a/2;k++) {if(a%k==0) break;} if(k>a/2) {printf(\j++; if(j%5==0) {

printf(\} } } } getch(); }

绝对质数。如果一个数和其反序数均为质数,则该数被称为绝对质数。如,13是质数,其反序数31也为质数,则13和31是一对绝对质数。请设计程序,找出200以内的绝对质数。

#include void main()

{int a,i,b,c,j,k; for(a=2;a<=200;++a) {c=a; b=0; while(c) { i=c; b=b*10+i; c/=10; }

for(j=2;jb/2)

{for(k=2;ka/2)

printf (\ getch(); }

平方镜反数。如果一个数的平方数,是其反序数的平方数的反序数,则称该数和其反序数是一对平方镜反数。例如,12的平方数是144,其反序数为21,21的平方数是441,其反序数是12的平方数144,故12和21是一对平方镜反数。请设计程序找出200以内的所有平方镜反数对。

#include #include int MirrorNumber(int n) { int m = 0; m = 0; while(n) {

m = 10 * m + n % 10; n /= 10; } return m; } int main() {

int n,m;

for(n = 1; n <= 200; ++n) { m = MirrorNumber(n);

if((int)n * (int)n == MirrorNumber((int)m*(int)m)) printf(\ } return 0;

getch(); }

黑洞数。黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相同整数,经有限“重排求差”操作,总会得到某个数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。

随便造一个四位数,如a1=11231,先把组成部分1231的四个数字由大到小排列得到a2=3211,再把1231的四个数字由小到大排列得a3=1123,用大的减去小的a2-a1=3211-1123=2088。把2088按上面的方法再作一遍,由大到小排列得8820,由小到大排列得288,相减8820-288=8532。把8532按上面的方法再作一遍,由大到小排列得8532,由小到大排列得2358,相减8532-2358=6174。如果再往下做,奇迹就出现了!7641-1467=6174,又回到6174。6174便是一个4位黑洞数。

请编写程序,用上述方法找出3位黑洞数。

#include int main(void)

{int number,x,y,a,b,c,max,min,mid,j; scanf(\while(x-y!=j){ a=number/100; b=number0/10; c=number; mid=a+b+c;

max=a>b?a:b; max=max>c?max:c; min=a>b?b:a; min=min>c?c:min; mid=mid-min-max; x=max*100+mid*10+min; y=min*100+mid*10+max; j=number;

number=x-y;} printf(\}

水仙花数是指一个3位数,其各位数字的立方和等于该数本身。请完善下列程序中的函数int daffodil(int n),其功能是判断整数n是否为水仙花数,如是,则该函数返回值1,否则返回值0。注意,不能更改main函数。

#include

main()

{ int m,i=0;

for(m=100;m<1000;m++) if(daffodil(m)==1) { printf(\ i++;

if(i%5==0)printf(\ } getch(); }

int daffodil(int n) {int a,b,c; a=n; n=n/10; c=n/100;

if(n==a*a*a+b*b*b+c*c*c=n)

return 1; return 0;

}

请编写程序,找出满足如下条件的整数m:(1)该数在[11,999]之内;(2) m、m2、m3均为回文数。例如m=11,m2=121,m3=1331,11、121、1331皆为回文数,故m=11是满足条件的一个数。请设计函数int value(long m),其功能是判断m是否是回文数,如是,该函数返回值1,否则返回值0。编写main函数,求出[11,999]内满足条件的所有整数。 #include int value(long a) { int b,c,i ; c=a; b=0; while(c) { i=c;

b=b*10+i; c/=10; } if(a==b) return 1; } int main() {int a ;

for(a=11;a<1000;a++)

{if(value(a)==1&&value(a*a)==1&&value(a*a*a)==1) printf(\ } getch(); }

设n0是一个给定的正整数。对于i=0,1,2,…,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数。请编写一个函数void hailstones(int n),其功能是显示由n产生的所要求的序列,按每行6个数输出该数列中的所有数。编写main函数,在main函数中定义一个整型变量n,从键盘上输入值77赋给n,用n作为实参调用函数hailstones。 测试数据:77↙ 输出结果:

Hailstones generated by 77: 77 232 116 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Number of hailstones generated:23 #include int hailstones(int n) { int i=0;

printf(\generated by %d\\n\ while (n!=1) { printf(\ i++; if(i%6==0) printf(\ if(n%2==1) {n=3*n+1;} else n=n/2;}

printf(\

printf(\ }

int main() { int n;

scanf(\ hailstones(n) ; getch(); }

请按要求编写程序。编程要求:

编写函数int twinborn(int m,int n),其功能是判断整数m和n是否为孪生质数对(相差为2的两个质数称为孪生质数),如是,则函数返回值1,否则返回值0。 #include #include int prime(int m) {int n;

for(n=2;n<=sqrt(m);n++) if(m%n==0) return 0; return 1;}

int twinborn(int m,int n) {if(prime(m)+prime(n)==2) return 1; }

编写main函数,求出[10,99]内的所有孪生质数对,使得程序的运行结果为: 11,13 17,19 29,31 41,43 59,61 71,73 main() {int m,n;

for(n=10;n<=97;n++) {m=n+2;

if(twinborn(m,n)==1) printf(\} }

用牛顿迭代法求方程3x3-3x2+x-1=0在x0=2附近的实根。要求: ①用函数float newtoon(float x)求方程在x附近的根;

②用函数float F(float x)求x处的函数值,用函数float F1(float x)求f(x)在x处的导数; ③在主函数中输入x0,调用函数求得方程的近似根,并输出结果。

请完善下列程序,使之完成上述功能。并请以注释的方式在程序的最后给出你在运行该程序时所选用的测试数据及在该测试数据下的运行结果。 【源程序】 #include float F(float x) {

return x*(3*x*(x-1)+1)-1; }

float F1(float x) {

return __________________; }

float newtoon(float x) {

float f,f1,x0;

do { ______________; f=F(x0); f1=F1(x0);

x=______________; }while(_______________); return x; }

void main() { float x0; scanf(“%f”,&x0);

printf(“The result =%.2f\\n”,_________________); }

#include #include float F(float x)

{ return 3*x*x*x-3*x*x+x-1; } float F1(float x)

{ return 9*x*x-6*x+1; } float newtoon(float x) {

float f,f1,x0; do{x0=x; f=F(x0); f1=F1(x0); x=x0-f/f1; }

while(fabs(x-x0)>=1e-5); return x; }

void main() { float x0;

scanf(\

printf(\ getch(); }

请设计程序,用二分法求方程x3+1.1x2+0.9x-1.4=0在(0,1)内的近似根。直到|f(x)|<0.0001为止。 #include main() {

float x1,x2,x0,fx1,fx2,fx0; printf(\ scanf(\ do {

fx1=x1*x1*x1+1.1*x1*x1+0.9*x1-1.4; fx2=x2*x2*x2+1.1*x2*x2+0.9*x2-1.4; }while(fx1*fx2>0); do {

x0=(x1+x2)/2;

fx0=x0*x0*x0+1.1*x0*x0+0.9*x0-1.4; if((fx0*fx1)<0) {x2=x0; fx2=fx0; } else {x1=x0; fx1=fx0; } }while(fabs(fx0)>1e-5); printf(\ getch(); }

以下程序的功能是从键盘上输入10个整数,并检测整数3是否包含在这些数据中,若包含3,则显示出第一个3出现的位置,程序有些错误,试改正之。 【源程序】 #include void main() {

int data[10]; j=0; while (j<10)

{ scanf(\j++; }

for(j=0;j<10;j++) if(data[j]=3)

{ printf(\

continue; } if(j==10)

printf(\}

#include void main() {

int data[10]; int j; j=0;

while (j<=10) {

scanf(\ j++; }

for(j=0;j<10;j++) if(data[j]=3)

{ printf(\ continue; } }

请编辑调试下列程序,观察其运行结果,理解数组名作为函数参数时的作用。该程序的功能是___________________________________________________________________。 【源程序】 #include int fun(int a[],int b[]) { int i,j=0; for(i=0;a[i];i++) { if(i%2==0)continue ; if(a[i]>10) b[j++]=a[i]; } return j; }

void main() {

int a[10]={3,15,32,23,11,4,5,9},b[10]; int i,x; x=fun(a,b) ; for(i=0;i

printf(\}

将a数组中偶数个数的大于10的数放入数组b,并且输出

请编辑调试下列程序,观察、理解其运行结果,并叙述该程序的功能。 【源程序】 #include int fun(int a[],int b[]) { int i,j=0; for(i=0;a[i];i++) { if(i%2==0)continue ; if(a[i]>10) b[j++]=a[i]; } return j; }

void main() {

int a[10]={3,15,32,23,11,4,5,9},b[10]; int i=0,x=0; x=fun(a,b) ; for(i=0;i

该程序的功能:_________________________________________________________。

将数组序数为偶数的并且大于10的放入b数组,并且输出b数组。

以下程序在a数组中查找与x值相同的元素的所在位置。请完善程序。 【源程序】 #include void main() {

int a[11] ,x , i;

printf(“Enter 10 Integers:\\n”); for(i=1; i<=10; i++) scanf(“%d”,a+i);

printf(“Enter x:”); scanf(“%d”,&x); a[0]=__________; i=10;

while(x!=a[i]) ___________; if(___________)

printf(“] ?s position is M\\n”,x,i);

else printf(“%d is not found!\\n”,x); }

#include void main() {

int a[11] ,x , i;

printf(\ for(i=1; i<=10; i++) scanf(\

printf(\scanf(\ a[0]=x; i=10;

while(x!=a[i]) i--; if(i>0)

printf(\\\n\ else printf(\ }

下列程序是利用插入排序法将n个数从大到小进行排序,插入排序的算法思想如下:从一个空表开始,将待排序的数一个接一个插入到已排好序的有序表中(空表视为有序),从而得到一个新的、记录数增1的有序表。例如:当n=7时,待排序的数及每一趟有序表的变化情况如下: 趟数

有序表

剩余待排序数

49 38 65 97 76 13 27 38 65 97 76 13 27 65 97 76 13 27 97 76 13 27

初始状态 空 第1趟 49 第2趟 49 38 第3趟 65 49 38

第4趟 97 65 49 38 第5趟 97 76 65 49 38 第6趟 97 76 65 49 38 13

76 13 27 13 27 27

第7趟 97 76 65 49 38 27 13 空 请完善下列程序并进行调试。 【源程序】 #include void main() {

int a[10]={10,9,8,7,3,4,5,1,-3,0},i,j,t; ;

printf(\for(i=0; i<=9; i++) printf(\getch(); }

int sort(int a[],int n) { int i,j,t;

for(i=1; i

while((j>=0)&&(t>a[j])) { ; j--; } ; }

#include void main() {

int a[10]={10,9,8,7,3,4,5,1,-3,0},i,j,t; sort(a,10);

printf(\is 10 number: \ for(i=0; i<=9; i++) printf(\ getch(); }

int sort(int a[],int n) {

int i,j,t;

for(i=1; i

{ t=a[i]; j=i-1;

while((j>=0)&&(t>a[j])) {a[j+1]=a[j]; j--; } a[j+1]=t; } }

请按下列要求设计程序:

请编写void selsort(int a[],int n)函数,其功能是用选择排序算法对a指向的长度为n的数组进行从小到大排序。

#include void selsort(int a[],int n); main() {

int a[10],i; for(i=0;i<10;i++) scanf(\ selsort(a,10); for(i=0;i<10;i++) printf(\ getch(); }

编写main函数,声明一个一维数组并用下列测试数据初始化,调用selsort函数实现a[3]到a[8]元素从小到大排序。测试数据为:6 8 9 12 16 -3 90 -9 10 1。

void selsort(int a[],int n) {

int i,j,k,temp; for(i=2;i<8;i++) { k=i;

for(j=i+1;j<8;j++) if(a[k]>a[j]) k=j; temp=a[i]; a[i]=a[k]; a[k]=temp; } }

冒泡排序算法的C语言描述如下: void bb_sort(int a[],int n) { int i,j,t;

for(i=0;i

for(j=0;ja[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } }

但这个算法对问题规模为n的待排序数组来说要进行n-1趟排序。事实上,对一些测试数据,如2 1 5 6 7 8 9等7个数据来说,利用上述冒泡排序算法,在第2趟排序过程中已没有元素的交换,亦即排序进行2趟后就已经有序。试修改上述冒泡算法,使之在已经有序的情况下提前结束外循环以提高程序执行效率。并利用题4的main函数调用改进的函数实现对待排序数据的排序。 #include void bb_sort(int a[],int n); main() {

int a[10],i; for(i=0;i<10;i++) scanf(\ bb_sort (a,10); for(i=0;i<10;i++) printf(\getch(); }

void bb_sort(int a[],int n) {

int i,j,mid; int flag = 1;

for(i=0;i<=9&&flag;i++) for(j=0;j<9-i;j++) {

flag=0; if(a[j]>=a[j+1]) {

mid = a[j]; a[j] = a[j+1]; a[j+1] = mid; flag=1; } } }

请编辑调试下列程序,观察其运行结果,理解数组的声明、数组元素的引用等基本概念。 【源程序】 #include void main() {

int a[3][3]={{3,8,12},{4,7,10},{2,5,11}}, i,j,k,t; for(j=0;j<3;j++) { for(k=0;k<2;k++) { for(i=0;i<2-k;i++) if(a[i][j]>a[i+1][j])

t=a[i][j],a[i][j]=a[i+1][j],a[i+1][j]=t; } }

for(i=0;i<3;i++) {

for(j=0;j<3;j++) printf(\printf(\}

}

该程序的功能是________________________________________________________。 将数组每一列进行从小到大排序。

在m行n列的二维数组中找出最小值的元素,然后将该元素所在行与最后一行交换,将该元素所在列与最后一列交换。请按功能要求改正下列程序中的错误,并调试运行程序。 【源程序】 #include #define M 3 #define N 4 main() {

int x,k,j,com,col,t;

int a[M][N]={ 12,1,56,34,10,2,45,3,9,7,4,65}; for(k=0;k

printf(\x=0; com=0; col=0; for(k=0;k{ com=k;col=j;x=a[k][j];} for(k=0;k

{ t=a[k][col];a[k][col]=a[k][N];a[k][N]=t;} for(k=0;k

{ t=a[com][k];a[com][k]=a[M][k];a[M][k]=t; } for(k=0;k

输出结果: 12 1 56 34 10 2 45 3 9 7 4 65 9 65 4 7 10 3 45 2 12 34 56 1 #include #define M 3

#define N 4 main()

{ int x,k,j,com,col,t;

int a[M][N]={12,1,56,34,10,22,45,3,9,7,4,65}; for(k=0;k

x=a[0][0];com=0;col=0; for(k=0;ka[k][j]) {com=k;col=j;x=a[k][j];} for(k=0;k

{ t=a[k][col];a[k][col]=a[k][N-1];a[k][N-1]=t;} for(k=0;k

{ t=a[com][k];a[com][k]=a[M-1][k];a[M-1][k]=t; } for(k=0;k

3.请编程序,打印以下形式的杨辉三角形。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 #include #define M 6 void main()

{ int a[M][M], i , j ; for(i=0;i

if(i==j||j==0) a[i][j]=1;

else

a[i][j]=a[i-1][j]+a[i-1][j-1]; printf(\if(i==j) printf(\} }

下列程序的功能是将字符串中的数字字符删除后输出。程序中有些错误,试改正使其完成所要求的功能。 【源程序】 #include void delnum(char s[80]) { int i,j;

for (i=0,j=0;s[i]!='\\0';i++) if (s[i]>'0'&& s[i]<'9') { s[j]=s[i]; j++ } s[i]='\\0'; }

void main() {

char item[80]=\delnum(item); printf(\getch(); }

#include void delnum(char *s) { int i = 0; while (s[i] != ?\\0?) {

if (s[i] >= ?9? || s[i] <= ?0?) printf(\ i++; } }

void main() {

char *item = \ delnum(item); getch(); }

请按下列要求编写程序:

编写函数void fun(char x[]),其功能是在x指向的字符串中的所有数字字符之前分别插入1个字符'$';

编写main函数,定义一个字符数组a,用测试数据中的数据初始化字符数组a,用a作为实在参数调用函数fun,输出结果字符串。 测试数据:a1b34cdef5 运行结果:a$1b$3$4cdef$5 #include #include void fun(char x[]) {int i,k;

for(i=0;x[i]!=?\\0?;i++) {if(x[i]>=?1?&&x[i]<=?9?) {k=strlen(x);

while(k>i) {x[k]=x[k-1];k--;} x[i]=?$?; i++; }

else continue; } x[i]=?\\0?; }

void main() {

char a[20]={\ fun(a); puts(a); getch(); }

【源程序】 #include #include void main() { int i;

char a[20],b[10]; gets(a); i=0;

while(b[i]=a[i]) i++; puts(b); }

该程序的功能是___________________________________________________________。 直接输出a数组。 【源程序】

#include int com(char a[],char b[]) { int i=0;

while(a[i]==b[i]&&a[i]!='\\0') i++;

return !(a[i]-b[i]); }

void main() {

char a[20],b[20]; int n; gets(a); gets(b); n=com(a,b); if(n==0)printf(\else printf(\ }

该程序的功能是___________________________________________________________。 判断a数组和b数组是否完全相同

在一行文本中查找给定的单词。一行文本由字母和分隔符组成,分隔符包括若干空格、逗号、句号和换行符。一个单词有若干个连续字母组成。

实现提示:main函数中word数组存放欲查找的单词。find_word函数完成在t字符串中查找单词w的功能,先从t串中找出一个单词,再与w进行比较,如果找到则返回单词w在t串中第一次出现的位置,否则返回-1。 【源程序】 #include #include #include void main() {

char text[80]=“I will pass the examination in the summer holiday.”,word[20]; int t;

puts(“enter a word to be found:”); gets(word);

t=find_word(___________________); if(______________)

printf(“The word ?%s? in text . It locates in %d.\\n”,word,t); else

printf(“not found!\\n”); }

find_word(char t[] , char w[]) { char s[20];

int i , j , k=0; for(i=0; t[i]!=?\\0?; i++) { if(isalpha(t[i]))

{ for(j=0; isalpha(t[i+j]); j++) s[j]=__________; s[j]=?\\0?;

if(strcmp(w,s)==0) return _______; i=_____________; } } return -1; }

#include #include #include void main()

{ char text[80]=\ int t;

puts(\ gets(word);

t=find_word(text,word); if(t!=-1)

printf(\ else

printf(\getch(); }

find_word(char t[],char w[]) { char s[20]; int i,j; for(i=0;t[i]!=?\\0?;i++) { if(isalpha(t[i]))

{ for(j=0;isalpha(t[i+j]);j++) s[j]=t[i+j]; s[j]=?\\0?;

if(strcmp(w,s)==0) return i; i=i+j; } } return -1; }

请设计程序,将一字符串做压缩处理。编程要求如下:

①编写一个函数int compress(char s[]),将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数。

②编写函数main,从键盘读入一行字符数据存入一个字符型数组中,调用compress函数对该字符数组中存储的字符做压缩处理,输出压缩后的字符串。 测试数据:

@@@@@@ I wwillll succesful &&&&&& and you too !!!!!!########## 运行结果:

@ I wil sucesful & and you to !# 30

#include #include int compress(char a[]) {

int i,j=0,k=strlen(a); for(i=0;i

void main() {

char str[81]; int t; gets(str); t=compress(str); puts(str);

printf(\ getch(); }

本文来源:https://www.bwwdw.com/article/5sv5.html

Top