C语言程序设计练习题1及答案(3)

2019-01-19 18:45

8.

defa 58 638.00

9. &#

10. 22 10 20 22 3 6

三、写出下列每个函数的功能

1. int SE(int n) { //n为大于等于1的整数 int x,s=0;

printf(\输入%d个整数: \ scanf(\ if(n==1) return x; s=x;

while(--n) {scanf(\ return s; }

2. #include

void WA(int a[], int n) { int i,k,j,x;

for(i=0;i

for(j=i+1;ja[k]) k=j; x=a[i]; a[i]=a[k]; a[k]=x; } }

3. #include

int* LJ(int a[], int n) { int i,k=0;

for(i=1;ia[k]) k=i; return &a[k]; }

4. int Output(struct IntNode *f) {

int sum=0;

if(!f) return -9999; //用返回特定值-9999表示空表 while(f) {

sum+=f->data; f=f->next;

}

return sum; }

假定struct IntNode的类型定义为: struct IntNode {

int data; //结点值域 struct IntNode* next; //结点指针域 };

答案:

1. 求出从键盘上输入的n个整数之和并返回。

2. 采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。 3. 求出数组a中n个元素的最大值元素,返回该元素的地址

4. 对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。 四 程序填空

1. 下面程序的功能是:将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。采用的算法是:确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。

# include void main() {

int a[11]={1,3,6,7,9,12,14,18,19,20},x; int i,p;

printf(\ scanf(\

for(i=0,p=10;i<10;i++) if(x

for(i=9; ② ;i--) a[i+1]=a[i]; ③ ; printf(\ for(i=0;i<11;i++) printf(\ printf(\ }

2. 以下程序能统计一个英文句子(以 . 号结束)中最长单词的长度。

# include int count(char *p) {

int word=0,max=0; while(*p!='.') {

while((*p<='z')&&(*p>='a')||(*p<='Z')&&(*p>='A')) { ① ; p++; } if(② ) max=word; ③ ; p++; }

return max; }

void main() {

char str[80]; gets(str);

printf(\}

3. 下面程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。主函数中输出和值。

# include # define M 2 # define N 4

void SumColumMin(int a[M][N],int *sum) {

int i,j,k,s=0; for(i=0;i

k=0;

for(j=0;j

if(a[k][i]>a[j][i]) k=j; s+=① ; } ② =s; }

void main() {

int x[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin(③ ); printf(\}

4. 以下程序采用直接选择法对数组a中的10个数进行降序排列,然后按每行5个数的格式输出。

# include void main() {

int i,j,k,t,a[10]={1,4,3,5,7,9,2,0,6,8}; for(j=0;j<9;j++) {

k=j;

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

if(*(a+i)>① ) k=i; }

t=a[j]; *(a+j)=② ; *(a+k)=t; }

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

printf( (i%5) ? \③ , *(a+i) ); printf(\}

5. 以下程序的功能是计算下列级数之和

s=1+x+x2/2!+x3/3!+…+xn/n! double sum(int x,int n) { int i;

double a,b,s;

a=1.0;b=1.0;s=1.0; for(i=1;i

void main() {

int x,n;double s;

scanf(\ ③ ; printf(\}

6. 下面invert函数实现数组元素值的逆置,即a[0],a[9]互换,a[1],a[8]互换,以此类推。

请填空。

# include void main()

{ void invert(int *s,int num);

int a[10]={1,2,3,4,5,6,7,8,9,10},i,n=10; for(i=0;i<10;i++) printf(\ printf(\ invert(a,n-1); for(i=0;i<10;i++) printf(\ printf(\}

void invert(int *s,int num) { int *t,k; t=s+num; while(① ) {

k=*s;*s=*t;*t=k; ② ; ③ ; } }

7. 下面程序的功能是在数组中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请填空。

# include

void fun(int *a,int n,int *max,int *min) { int i;

*max=*min=0; for(i=1;i

if(*(a+i)>*(a+*max)) ① ; else if(*(a+i)<*(a+min)) ② ; return; }

void main()

{ int a[10]={3,15,2,26,9,28,7,1,4,12}; int max,min; ③ ;

printf(\}

程序输出为: max=5,min=7

8. 下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符


C语言程序设计练习题1及答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:R2A琼脂培养基适用性检查方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: