内容发布更新时间 : 2024/11/15 2:07:50星期一 下面是文章的全部内容请认真阅读。
f=f->next;
} return x; } 假定struct IntNode的类型定义为:
struct IntNode { int data; struct IntNode* next;}; 求出由f所指向的单链表中所有结点的最大值。
3. #include
比较两个整数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 } 统计并返回一维整型数组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 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 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; 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; i 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