C语言入门学习-C上机实验九要求 联系客服

发布时间 : 星期四 文章C语言入门学习-C上机实验九要求更新完毕开始阅读1d6472b40622192e453610661ed9ad51f11d5457

5 6 7 8 9 10 11 12 【法一:使用列指针完成,双重循环】 #include \main()

{int a[3][4],i,j,k=1; int *p;

p= a[0] ; /*或 &a[0][0]*/ for(i=0;i<3;i++) for(j=0;j<4;j++)

*(p+_____ i*4+j ____)=k++; for(i=0;i<3;i++)

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

【法二:使用列指针完成,单循环】 #include \main()

{int a[3][4],i,j=1; int *p;

for(i=0;i<12;i++) a[i/4][i%4]=j++; p=a[0];

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

{for(j=0;j<4;j++) printf(\i*4+j)); printf(\}

【法三:使用行指针完成】 #include \main()

{ int a[3][4] ,i, j, k=1; int (*q)[4] ; q=a;

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

*(*(_q+i_) + _j_)=k++; for(i=0;i<3;i++)

{for(j=0;j<4;j++) printf(\q[i][j]__); /* 或 a[i][j] 或*(*(q+i)+j) */ printf(\}

3.任意读入5个字符串,用选择法降序排列后输出,并将最大串和最小串连接后输出。例如,读入: I

love you very much

则 输 出: you very much love I

合并后的串:youI 【程序如下,请填空:】 #include #include #define N 5 main()

{char s[N][20]; //假设每个串的串长都小于20 char h[40]=\

char *p[N]; //借助指针数组,可以只交换指向串的指针,不交换串本身 int i,j,k;

for(i=0;i

for(i=0;i

//以下用选择法排序 for(i=0;i<=N-2;i++) {k=i;

for(j=i+1;j<=N-1;j++)

if(strcmp(p[j],p[k])>0)k=j; if(k!=i) {char *t; t=p[i]; p[i]=p[k]; p[k]=t;} }

puts(\降序排列后:\ for(i=0;i

strcat(strcat(h,p[0]),p[N-1]); printf(\合并后的串:%s\\n\}

4.任意读入两个正整数,调用子函数求得二者的最大公约数和最小公倍数。 #include

main()

{int x,y,gys,gbs;

void GYS_GBS(int a,int b,int *gy,int *gb); do

scanf(\ while(x<=0||y<=0);

GYS_GBS(x, y, &gys, &gbs);

printf(\和%d的最大公约数是%d,最小公倍数是%d\\n\}

void GYS_GBS(int a,int b,int *gy,int *gb) {int c,r; c=a*b; r=a%b;

while( r!=0 ) {a=b; b=r; r=a%b; }

*gy=b; *gb=c/b; }

二、编程题

任意读入一个大偶数(≥4),可以拆分成两个素数之和。编程按“x=s1+s2”的格式输出所有的素数对。 【要求:素数判断由子函数完成。并且结果不能出现两个相同的素数对,例如:输入28,则输出结果为: 28=5+23 28=11+17

若输出结果中还有“28=17+11”就重复了!】 #include int PDSS(int a) {int flag=1; long k;

for(k=2;k

main() {long x; long s1,s2; do

scanf(\ while(x<4||x%2!=0);

s1=2; s2=x-s1; do

{ while(!PDSS(s1)||!PDSS(s2)) {s1++; s2--;}

if(s1<=s2)printf(\ s1++; s2--; }while(s1