c语言参考答案

c语言参考答案
c语言参考答案

从10个整数中把最小得数找出来,并与最前面得数对调, 指出最小得数原来得位置。

#include〈stdio。h>

void main( )

{

?inti,j,a[10],k;

for(i=0;i〈=9;i++) scanf("%d",&a[i]);

j=0;/*假设最小值就是第0个元素*/

for(i=1;i<=9;i++)

?if(a[i]<a[j])j=i;

if(j!=0)

{??k=a[0]; a[0]=a[j];?a[j]=k;}?printf("min number is:%d\n",a[0]);

printf("theposition is:%d\n",j);

}

#include 〈stdio.h>

int f(int a[])

int i,j,k;

?j=0;/*假设最小值就是第0个元素*/ for(i=1;i<=9;i++)

if(a[i]<a[j]) j=i;

if(j!=0)

{??k=a[0];?a[0]=a[j];?a[j]=k;}

returnj;

voidmain()

?int i,j,a[10];

for(i=0;i〈=9;i++) scanf(”%d",&a[i]);

j=f(a);

printf(”minnumberis:%d\n”,a[0]);

printf(”the position is:%d\n", j);

已知5个数已经按由大到小排好序,请编程使得它们按由小到大排序。(逆序)

#include

void main( )

inta[5]={5,4,3,2,1},i,t;

for(i=0;i<5/2;i++)

?{

??t=a[i];

??a[i]=a[4-i];

?a[4-i]=t;

?}

?for (i=0;i<5;i++)

?printf(”%d",a[i]);

}

#include 〈stdio、h>

void f(int a[])

{ ?inti,t;

for(i=0;i<5/2;i++)

{

t=a[i];

??a[i]=a[4—i];

?a[4—i]=t;

?}

void main()

{

?int a[5]={5,4,3,2,1},i; ?f(a);

for(i=0;i〈5;i++) ??printf(”%d”,a[i]); }

已知5个整数,已经由大到小排好序,现输入一个数,将其插入到该数组适当位置,使其仍然有序。(定义并初始化、输入、查找、移动、插入)

#include 〈stdio、h〉

void main( )

{

int a[6]={20,15,12,8,6}; ?int i,k=9;

?if(k<=a[4]) a[5]=k;

?else

?{

for (i=4;i>=0;i--)

?if(k>a[i])

??{

?a[i+1]=a[i];

??}

elsebreak;

?a[i+1]=k;

?for (i=0;i〈6;i++)

printf("%d ",a[i]);

#include〈stdio。h〉

voidf(int a[],int k)

inti;

if(k<=a[4]) a[5]=k;

else

?for (i=4;i〉=0;i-—)

??if(k>a[i])

?{

?a[i+1]=a[i];

?}

??elsebreak;

?a[i+1]=k;

?}

void main()

{

?inta[6]={20,15,12,8,6};

int i;

?f(a,33);

for (i=0;i〈6;i++)

?printf("%d ",a[i]);

}

任输入20个正整数,找出其中素数,并按由小到大排序,打印输出素数,每5个数换一行。

#include

#include <math.h>

void main( )

{int a[20],b[20],i,j,k,m;

for(i=0;i〈20;i++)

scanf(”%d",&a[i]);

k=0;

for(i=0;i〈20;i++)

{for(j=2;j<=a[i]—1;j++)

if(a[i]%j==0) break;

if(j〉a[i]—1)

{b[k]=a[i]; k++; }}

?for(i=0;i

?for(j=0;j

???if(b[j]〈b[j+1])

??{m=b[j];

b[j]=b[j+1];

b[j+1]=m;

}

? for(i=0;i〈k;i++)

{

??printf(”%5d",b[i]);

if((i+1)%5==0)printf("\n"); ?}

#include<stdio、h〉

#include

intsushu(int a)

{?int j;

int f=1;

?for(j=2;j<=sqrt(a);j++)

?if(a%j==0){f=0;break;}

return f;

}

int sushuarray(int a[],int b[])

{?int k=0;

?int i;

?for(i=0;i〈20;i++)

if(sushu(a[i])==1)

{ b[k]=a[i]; k++; } return k;

}

void paixu(intb[],intk)

{int i,j,m;

for(i=0;i<k-1;i++)

for(j=0;j

???if(b[j]〉b[j+1])

???{m=b[j]; b[j]=b[j+1];b [j+1]=m; }}

void main( )

{ int a[20],b[20],i,k;

for(i=0;i<20;i++) scan

f(”%d",&a[i]);

k=sushuarray(a,b);

paixu(b,k);

? for(i=0;i

{?printf(”%5d",b[i]);

?if((i+1)%5==0)printf("\n");

}

}

有一个2×3得矩阵,求每行最小值及每列得最小值。

#include

void main( )

int a[2][3],b[2],c[3],i, j;

for(i=0;i<2;i++)

for(j=0;j〈3;j++)

scanf("%d",&a[i][j]);

for(i=0;i〈2;i++)

{ b[i]=a[i][0];

for( j=1;j<3;j++)

if(a[i][j]<b[i])b [i]=a[i][j];

for(j=0;j<3;j++)

{c[j]=a[0][j];

for(i=1;i〈2;i++)

if(a[i][j]〈c[j]) c [j]=a[i][j];

?for(i=0;i<2;i++)

{

?for(j=0;j<3;j++)

?printf("%5d",a[i][j]);

?printf("%5d\n",b[i]);

?for(i=0;i〈3;i++)

printf("%5d",c[i]);

printf("\n”);}

#include〈stdio、h>

void f(int a[2][3],intb[2],intc[3])

?inti,j;

?for(i=0;i<2;i++)

?{ b[i]=a[i][0];

for( j=1;j<3;j++)

if(a[i][j]<b[i]) b[i]=a[i][ j];

for(j=0;j〈3;j++)

{c[j]=a[0][j];

for(i=1;i<2;i++)

if(a[i][j]〈c[j]) c[j]=a[i][j];

}

voidmain()

{

?int a[2][3],b[2],c[3],i,j;

?for(i=0;i<2;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]); ?f(a,b,c);

for(i=0;i<2;i++)

?{

??for(j=0;j〈3;j++)

???printf("%5d”,a[i][j]);

printf("%5d\n”,b[i]);

?for(i=0;i〈3;i++)

?printf(”%5d",c[i]); ?printf("\n");

}

编一程序,将两个字符串连接起来

法一:不用函数

#include 〈stdio.h>

void main()

char a[80],b[30];

?inti,j;

?gets(a);

gets(b);

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

for(j=0;b[j]!=’\0';j++)

?{

?a[i++]=b[j];

}

a[i]='\0';

puts(a);

puts(b);

法二:用函数

#include <stdio、h> voidf(char a[],char b[]) {

?int i,j;

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

for(j=0;b[j]!='\0';j++) ?{

a[i++]=b[j];

?a[i]='\0’;

voidmain()

?char a[80],b[30];

?gets(a);

gets(b);

f(a,b); //

puts(a);

?puts(b);

}?任输入十个国家得名字,按由小到大排序。

#include

#include

void main( )

{ char a[10][20],b[20];

int i,j;

for (i=0;i〈10;i++)

gets(a[i]);

for(i=0;i〈9;i++)

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

if (strcmp(a[j],a[j+1])>0)

{ strcpy(b,a[j]);

strcpy(a[j],a[j+1]);

strcpy(a [j+1],b);

printf("paixuis:\n");

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

printf("%s\n”,a[i]);

#include <stdio。h>

#include 〈string。h>

void f(char a[10][20])

{ int i,j;

char b[20];

for(i=0;i<9;i++)

for (j=0;j〈9-i;j++)

if (strcmp(a[j],a[j+1])〉0)

{strcpy(b,a[j]);

strcpy(a [j],a[j+1]);

strcpy(a[j+1],b);

}

}void main( )

{char a[10][20];

inti;

for (i=0;i<10;i++) gets(a[i]);

f(a);?

?printf("paixuis:\n”);

for (i=0;i<10;i++)printf("%s\n",a[i]);

?

有一篇三行文字得文章,每行最多80个字符,编写函数,由实参传递字符串,分别统计文

章中大写字母、小写字母、数字、空格及其它字符得个数。

分析:

自定义函数需返回多个统计结果,可采用一个专门得数组存放统计结果,并将其作为函数参数,在被调函数中计数。

#include<stdio。h>

voidcount(char s[3][80], intc[5])

{ int i, j; char t; /*用临时变量t提高效率*/

for(i=0; i〈=2; i++)

for(j=0;(t=s[i][j])!=0; j++)

if(t>='A’&&t<='Z’)c[0]++;

else if(t>='a’&&t<='z') c[1]++;

else if(t〉=’0'&&t<='9') c[2]++;

elseif(t==32) c[3]++;

else c[4]++;

return;

}

void main( )

{charstr[3][80];

static int c[5], i; /*c各元素为0*/

void count(char [ ][80],int [ ]);

for(i=0;i〈=2; i++) /*输入三行字串*/

gets(str[i]);

count(str, c); /*实参:两个数组指针*/

for(i=0; i〈=4; i++) /*输出统计结果*/

printf(”%5d", c[i]);

编写以下5函数,实现对一个数组按由小到大排序,并统计排序过程中交换得次数(注意参数、返回值得设计)

–打印一个数组

–将一个数组复制到另一个数组中

–用起泡法实现排序与统计

–用选择法实现排序与统计

–main()

?数组初始化为{5,27,10,8,15,7,9,24,3,6}

?…

?用起泡法

?打印原始数组与排序后数组、统计次数

?用选择法排序原始数组并统计

?打印原始数组与排序后数组、统计次数

#include 〈stdio。h>

void myprint(int a[],intn)

int i;

printf("\n ");

?for(i=0;i<n;i++) printf(”%d",a[i]);

return;

voidmycopy(int a[],int b[],intn)

{

inti;

?for(i=0;i〈n;i++) b[i]=a[i];

return;

}

int qipao(int a[],int n)

?int i,j,x=0,t;

for(i=0;i〈n—1;i++)

??for(j=0;j〈n-1-i;j++)

??if(a[j]>a[j+1])

??{

???t=a[j];

????a[j]=a[j+1];

??a[j+1]=t;

??x++;

?returnx;

}

int xuanze(int a[],int n)

?int i,j,x=0,k,t;

?for(i=0;i〈n—1;i++)

?{

?k=i;

??for(j=i+1;j

??if(a[j]〈a[k])

??k=j;???

??if(k!=i)

??{

t=a[i];

???a[i]=a[k];

??a[k]=t;

?x++;

?}

?}

?returnx;

voidmain()

?int a[10]={5,27,10,8,15,7,9,24,3,6},b[10],p,q;

?//int a[10]={1,2,3,4,5,6,7,10,9,8},b[10],p,q;测试数据,运行验证,瞧结果就是多少mycopy(a,b,10);

printf("\nthe source array is:");

?myprint(a,10);

?p=qipao(a,10);

printf(”\nqipao the array is: ”);

myprint(a,10);

?printf("\nqipao=%d\n ”,p);

?printf("\nthe sourcearrayis: ");

?myprint(b,10);

?q=xuanze(b,10);

?printf(”\nxuanze arrayis:”);

?myprint(b,10);

printf(”\nxuanze=%d\n",q);

递归,求两个数得最大公约数

#include 〈stdio。h>

intf(int x,inty)

{

intr,p ;

if(x〈y) {p=y;y=x;x=p;}

?r=x%y;

if(r==0)return y;

else ?return f(y,r);

void main()

?int k;

k=f(36,24);

?printf("is%d ",k);

}

三个数,不修改其值,按由小到大输出,用指针void main()

int a=3,b=1,c=2;

//int a=3,b=2,c=1;

?//inta=1,b=2,c=3;

?int *p,*q,*k,*t;

p=&a;q=&b;k=&c;

if(*p>*q){t=p;p=q;q=t;}

?if(*p>*k){t=p;p=k;k=t;}

if(*q〉*k){t=k;k=q;q=t;}

printf("\n%d%d%d\n",a,b,c); ?printf("\n%d%d%d \n",*p,*q,*k);

}

读程序写结果(参数就是指针)

void f(int *p,int *q,int*k)

?int *t;//局部变量就是指针

?if(*p〉*q){t=p;p=q;q=t;}//交换得就是指针

?if(*p>*k){t=p;p=k;k=t;}

if(*q〉*k){t=k;k=q;q=t;}

?printf(”\n%d%d%d\n",*p,*q,*k);//函数内打印排好序why?

}

void main()

?int a=3,b=1,c=2;

?//int a=3,b=2,c=1;

//inta=1,b=2,c=3;

int*p,*q,*k,*t;

p=&a;q=&b;k=&c;

f(p,q,k);

?printf(”\n%d%d%d \n",a,b,c);

?printf("\n%d%d%d\n”,*p,*q,*k); //没有排序why? }

读程序写结果

#include

void f(int *p,int *q,int*k)

int t; //局部变量就是int

if(*p〉*q){t=*p;*p=*q;*q=t;} //交换得就是指针变量指向得变量?if(*p>*k){t=*p;*p=*k;*k=t;}

?if(*q〉*k){t=*k;*k=*q;*q=t;}

?printf("\n%d%d%d\n”,*p,*q,*k); //

void main()

{

?int a=3,b=1,c=2;

?//int a=3,b=2,c=1;

?//int a=1,b=2,c=3;

?int*p,*q,*k,*t;

p=&a;q=&b;k=&c;

?f(p,q,k);

printf("\n%d%d%d \n",a,b,c);//变why?

?printf("\n%d%d%d\n",*p,*q,*k);//变why?

相关主题
相关文档
最新文档