当前位置:
文档之家› C语言入门学习-C上机实验九要求
C语言入门学习-C上机实验九要求
【要求:素数判断由子函数完成。并且结果不能出现两个相同的素数对,例如:输入28,则输出结果为:
28=5+23
28=11+17
若输出结果中还有“28=17+11”就重复了!】
#include <stdio.h>
int PDSS(int a)
{int flag=1;
long k;
for(k=2;k<a/2;k++)
{a[n][j++]=*(text+i);word=0;}
else
if(word==0){word=1;a[n][j]='\0';n++;j=0; }
printf("It has %d word.\n\n", n);
for(i=0;i<n;i++)
puts(a[i]);
}
2.用指针完成下列任务:输出如下矩阵:
x=x/10;
}
for(i=____________;i>0;i--)
if(s[i]<s[i-1]){flag=0;break;}
______________________;
}
4.以下程序中的fun函数对二维数组中存储的n阶方阵做如下操作:先将每一行中值最大的元素与该行位于主对角线处的元素交换值,然后对主对角线上的所有元素排序使其左上角到右下角升序排列,最后输出排序后主对角线上各元素的值。
{n++;
printf("%6d",a[i]);}
if(n==0)printf("Array a has no JXSS!\n");
}
int SS(int x)/*此函数判断x是否素数*/
{int k,flag=1;
if(x<2)________________;
for(k=2;k<=x-1;k++)
一、完善程序题
1.以下程序统计指定句子(即只含有字母、空格、句号的字符串)中的单词个数,并输出每个单词。
【本题的思路是:将每个单词存放到二维数组的每一行,则存放的行数即为单词的个数。】
#include <string.h>
#include <ctype.h>
main()
{char *text=" I will pass the examination in the summer holiday." ;
for(j=________;j<n;j++)
if(________________)
{t=________;________________;________=t;}
}
二、编程题
使用全局变量完成下列任务:任意读入10个整数,调用子函数求得它们的平均值、最大值、最小值后由主函数输出。
【实验八参考答案】
int n, i, j, word;
char a[20][80];
while(*text==' ' )text++;/*去掉前导空格*/
n=0; j=0;
for(i=0;i<strlen(text);i++)
if(isalpha(*(text+i)))/* isalpha函数的功能是判断其参数是否为字母,要加"ctype.h"*/
1 2 3 4
5 6 7 8
9 10 11 12
【法一:使用列指针完成,双重循环】
#include "stdio.h"
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++;
}
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”的格式输出所有的素数对。
if(a%k==0){flag=0;break;}
return flag;
}
main()
{long x;
long s1,s2;
do
scanf("%ld",&x);
while(x<4||x%2!=0);
s1=2;
s2=x-s1;
do
{while(!PDSS(s1)||!PDSS(s2))
{s1++; s2--;}
p[i]=s[i];
for(i=0;i<N;i++)//读入5个串,存放到s的每一行中
gets(s[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;
{arr=____________;
col=0;
for(j=1;j<n;j++)
if(x[i][j]>=arr)
{arr=x[i][j];
____________;
}
t=____________;
____________=x[i][col];
x[i][col]=t;
}
for(i=0;i<n-1;i++)//选择法变形
例如有:
10
25
24
13
23
8
10
24
13
23
4
3
6
9
7
4
9
6
9
7
原
数
组
:
2
15
19
16
18
处
理
后
的
数
组
:
2
15
17
16
18
17
9
4
5
3
5
9
4
19
3
2
1
6
7
8
2
1
6
7
25
输出结果为:8 9 17 19 25
#include<stdio.h>
#define n 5
void main()
{int a[n][n]={{10,25,24,13,23},{4,3,6,9,7},{2,15,19,16,18},{17,9,4,5,3},{2,1,6,7,8}};
_____________________;
int i;
fun(a);
for(i=0;i<n;i++)
printf("%3d",a[i][i]);
printf("\n");
}
void fun(_____________________)
{int i, j, t, arr, col;
for(i=0;i<n;i++)
double mypoly(double x)
{return(x*x+3.0*x+2.0);
}
double trap(double a,double b)
{double t,h; int i,n=1000;
t=0.5*(mypoly(a)+mypoly(b));
h=______________/(double)(n);
#include <stdio.h>
main()
{int x,y,gys,gbs;
void GYS_GBS(int a,int b,int *gy,int *gb);
do
scanf("%d%d", &x ,&y);
while(x<=0||y<=0);
GYS_GBS(x,y,&gys,&gbs);
printf("%d和%d的最大公约数是%d,最小公倍数是%d\n",x,y,gys,gbs);
main()
{int i;
long f;
for(i=1;i<=N;i++)
f=____________________________;
printf("%d!=%ld\n",N,f);
}
long JC(int n)
{______________________________;
jc=jc*n;
return jc;
a[i/4][i%4]=j++;
p=a[0];
for(i=0;i<3;i++)
{for(j=0;j<4;j++) printf("%3d", *(p+i*4+j));
printf("\n");}
}