C语言程序设计--形考任务2017全部答案

f=f->next;

} return x; } 假定struct IntNode的类型定义为:

struct IntNode { int data; struct IntNode* next;}; 求出由f所指向的单链表中所有结点的最大值。

3. #include int SA(int a, int b) { if(a>b) return 1; else if(a==b) return 0; else return -1; }

比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a

if(!f) return; while(f) {

printf(\ f=f->next; }

printf(\ }

假定struct IntNode的类型定义为:

struct IntNode { int data; struct IntNode* next;}; 遍历并输出由f所指向的单链表中每个结点的值。 5. int SC(int a, int b, int c) { if(a>=b && a>=c) return a; if(b>=a && b>=c) return b; return c; } 求出a,b,c三个数中的最大值并返回。 6. int* LI(int n) {

int* a=malloc(n*sizeof(int)); int i;

for(i=0;i

}首先建立一个动态整型数组a[n],接着从键盘上输入n个整数到a[n]中,最后返回数组a[n]的首地址。 7. int WC(int a[], int n, int k) { int i, c=0; for(i=0;i=k) c++; return c;

} 统计并返回一维整型数组a[n]中大于等于k的值的个数 8. void QA(struct Worker a[], int n) { int i;

for(i=0; i

scanf(\ 假定结构类型struct Worker 的定义如下:

struct Worker { char name[15]; int age; float pay;}; 从键盘上为具有struct Worker类型的数组a[n]输入n个记录 五、按题目要求编写程序或函数

1. 编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。 #include void main() {

int i;

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

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

2. 编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。 int FF(int a[], int n) {

if(n<=0) {printf(\值非法\\n\ if(n==1) return a[n-1]; else return a[n-1]*FF(a,n-1); }

3. 编写一个程序,利用while循环,计算并打印输出1?111??...?23n的值,其中正整数n值由键盘输入。假定求和

变量用sum表示,计数变量用i表示,sum、i和n均定义为全局变量,sum和i的初值分别被赋予0和1。#include int n,i=1; double sum=0; void main() {

scanf(\

while(i<=n) sum+=(double)1/i++; printf(\ }

4. 根据函数原型“void DD(int a[], int n, int MM)”编写函数定义,利用双重循环查找并打印输出数组a[n]中任何两个元素的值等于MM值的元素值。假定a[i]+a[j]等于MM,则输出格式为:(a[i],a[j])。

void DD(int a[], int n, int MM) {

int i,j;

for(i=0; i

if(a[i]+a[j]==MM) printf(\ }

5. 编写一个程序,计算1+3+3+...+3的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。 #include

2

10

void main() {

int i;

int p=1;

int s=1; for(i=1;i<=10;i++) {p*=3; s+=p;} printf(\ }

6. 根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。 int FF(int a[], int n) {

int i,sum=0; for(i=0; i

7. 根据函数原型“double Mean(double a[M][N],int m,int n)”,编写函数定义,要求返回二维数组a[m][n]中所有元素的平均值。假定在计算过程中采用变量v存放累加值和最后的平均值。

double Mean(double a[M][N],int m,int n) {

int i,j;

double v=0.0; for(i=0; i

for(j=0; j

return v; }

8. 根据函数原型“int MM(int a[],int m)”,编写函数定义,计算并返回数组a[m]中元素最大值和最小值之差。 int MM(int a[],int m) {

int i,x1,x2; x1=x2=a[0]; for(i=1; ix1) x1=a[i]; if(a[i]

《C语言程序设计》作业1解答

一、选择题

1. 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A )。

A. main

B. MAIN

C. name

D. function

2. C语言源程序文件的缺省扩展名为( D )。

A. cpp

B. exe

C. obj

D. C

3. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( B )。

A. cpp

B. exe

C. obj

D. c

4. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。

A. 空格或逗号

B. 逗号或回车

C. 逗号或分号

D. 空格或回车

5. 每个C语言程序文件的编译错误分为( B )类。

A. 1

B. 2

C. 3

D. 4

6. 设x和y均为逻辑值,则x && y为真的条件是( A )。

A. 它们均为真

B. 其中一个为真

C. 它们均为假

D. 其中一个为假

7. 设有语句“int a=12; a+=a*a; ”,则执行结束后,a的值为( C )。

A. 12

B. 144

C. 156

D. 288

8. x>0 && x<=10的相反表达式为( A )。

A. x<=0 || x>10 B. x<=0 && x>10

C. x<=0 || x<=10

D. x>0 && x>10

9. 字符串“a+b=12\\n”的长度为( B )。

A. 6

B. 7

C. 8

D. 9

10. 在下列符号常量定义中,错误的定义语句格式为( C )。

A. const M1=10; B. const int M2=20;

C. const M3 10;

D. const char

mark='3';

11. 带有随机函数的表达表达式rand( ) 的值在( C )区间内。

A. 1~19

B. 1~20

C. 0~19

D. 0~20

12. 当处理特定问题时的循环次数已知时,通常采用( A )循环来解决。

A. for

B. while

C. do-while

D. switch

13. 在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为( B )语句。

A. for

B. if

C. do

D. while

14. for语句能够被改写为( D )语句。

A. 复合

B. if

C. swtich

D. while

15. 下面循环语句执行结束后输出的i值为( B )。

for(int i=0; in/2) { printf(\

A. n/2

B. n/2+1

C. n/2-1

D. n-1

16. 在下面循环语句中内层循环体S语句的执行总次数为( D )。 for(int i=0; i

for(int j=i; j

B. (n+1)/2

C. n(n-1)/2

D. n(n+1)/2

17. 在下面的do循环语句中,其循环体被执行的次数为( A )。 int i=0; do i++; while(i*i<10);

A. 4

B. 3

C. 5

D. 2

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4