C语言练习题第七章

合集下载

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

C语言程序设计(第3版)何钦铭 颜 晖 第7章  数组

第7章数组【练习7-1】将例7—3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。

当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。

【练习7—2】将数组中的数逆序存放.输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始.试编写相应程序。

解答:#include<stdio。

h〉int main(void){int i,n,temp;int a[10];printf("Input n:");scanf(”%d",&n);printf(”Input %d integer:",n);for(i=0;i<n;i++)scanf(”%d”,&a[i]);printf(”After reversed:");for(i=0;i〈n/2;i++){temp=a[i];a[i]=a[n—1—i];a[n-1—i]=temp;}for(i=0;i〈n;i++)printf("%d ”,a[i]);return 0;}【练习7-3】求最大值及其下标.输入一个正整数n(1〈n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素.试编写相应程序.解答:#include〈stdio.h>int main(void){int i,index,n;int a[10];printf("Enter n:”);scanf(”%d",&n);printf(”Enter %d integrs:”,n);for(i=0;i〈n;i++)scanf("%d",&a[i]);for(i=n—1;i〉=0;i++)printf("%d ”,a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。

C第七章选择题

C第七章选择题

C 语言选择题库
汕头大学许创编辑
707.下列描述说明正确的是 A) 定义结构体时,它的每个成员的数据类型可以不同。 B) 不同结构体的成员名不能相同。 C) 结构体定义时,其成员的数据类型不能是结构体本身。 D) 结构体定义时各成员项之间可用分号也可用逗号隔开。 708.下列描述说明正确的是 A) 定义结构体时,系统按照各成员项的大小分配相应的存储空间。 B) 定义结构体时,系统按照各成员项中占用空间最大的成员项分配存储空间。 C) 结构体定义时, 结构体本身并不占用存储空间, 即系统并不给结构体分配存储空间。 D) 以上说法均不正确。 709.下列描述说明正确的是 A) 结构体变量说明时,系统按照结构体定义时所需空间的大小实际分配存储空间。 B) 结构体变量说明时,系统按照各成员项中占用空间最大的成员项分配存储空间。 C) 结构体变量说明时,系统并不给结构体分配存储空间。 D) 以上说法均不正确。 710.下列描述说明正确的是 A) 结构体变量可以作为一个整体进行其值的输入和输出。 B) 结构体成员项不可以是结构体。 C) 结构体成员项可以是结构体或其他任何 C 语言的数据类型。 D) 结构体变量和结构体是相同的概念。 711.在微机上使用 turbo C,若有如下定义: struct data {int i; char c; double f; } b; 则结构变量 b 占用内存的字节数是 A) 1 B) 2 C) 7 D) 11 712.下面程序的运行结果是 main( ) { struct {long a; int b; char c; } m; printf("%d\n", sizeof(m)); }
C 语言选择题库
汕头大学许创编辑
结点插入到链表末尾的语句组是 data next data next ┌──┬───┐ ┌──┬───┐ head│ E │ +→│ F │ NULL│ └──┴───┘ └──┴───┘ ↑p A) s->next=NULL; p=p->next; p->next=s; B) p=p->next; s->next=p->next; p->next=s; C) p=p->next; s->next=p; p->next=s; D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; 723.以下程序的输出结果是 #include int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p; main( ) {p=(int*)malloc(sizeof(int)); f(p, a); printf("%d\n", *p); } f(int *s, int p[ ][3]) {*s=p[1][1];} A) 1 B) 4 C) 7 D) 5

C语言第七章复习题(含答案)

C语言第七章复习题(含答案)

1.下列对C语言字符数组的描述中错误的是(C )。

(A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值(D)不可以用关系运算符对字符数组中的字符串进行比较2.不能把字符串:Hello!赋给数组b的语句是( B )。

(A)char b[10]={'H','e','l','l','o','!'};(B)char b[10];b="Hello!";(C)char b[10];strcpy(b,"Hello!");(D)char b[10]="Hello!";3.若有以下说明:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为4的表达式是( D )。

(A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c]4.以下程序的输出结果是( B )(A) 20 (B) 21 (C) 22 (D)23main(){ int i, k, a[10], p[3];k=5;for (i=0;i<10;i++) a[i ]=i;for (i=0;i<3;i++) p[i ]=a[i *(i+1)];for (i=0;i<3;i++) k+=p[i] *2;printf("%d\n",k);5.以下程序的输出结果是(C )。

(A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9main(){ int i, x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x[i][2-i]);6.下面程序运行的结果是( C )。

C语言第七章习题带答案

C语言第七章习题带答案

选择题1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。

A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:int a, x;,则正确的赋值语句是( C )。

A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a="good"; 3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。

A.scanf("%d", &a); B.scanf("%d", p); C.printf("%d", a); D.scanf("%d", *p); 4.已知:char *p, *q;,选择正确的语句( C )。

A.p*=3; B.p/=q; C.p+=3; D.p+=q;5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。

A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;一、选择题1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。

A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知:double *p[6];,它的含义是( C )。

A.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。

A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0];4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。

【C语言】第七章作业

【C语言】第七章作业
修改源程序,把primer函数的定义放在main函数 之后,编译程。出现什么问题?如何修改?
如果要求输出100~200之间的素数,如何修改 main函数。
3.main函数实现
int main() { int i;
printf("100~200之间的素数有:"); for(i=100;i<=200;i++) if (primer(i)) printf("%d ",i);
{ printf("请输入一个大于2的整数:"); scanf("%d",&m);
} flag=primer(m); if (flag) printf("%d是素数。\n",m); else printf("%d不是素数。\n",m); return 0; }
3.运行程序
输入测试数据:17 输入测试数据:34 输入测试数据:2 输入测试数据:1 输入测试数据:0 分别测试程序的正确性。
convert(i); }运行结果是什么?
最小公倍数=(i*j)/最大公约数
1.最大公约数函数实现
int gongyue(int i,int j) { int t,r; if (j>i)
{t=i;i=j;j=t;} while( (r=i%j)!=0) {
i=j; j=r; } return(j); }
1.最小公倍数函数实现
int gongbei(int i,int j,int h) { return(i*j/h); }
9.运行程序
输入测试数据: I am No.201002,You are No.201003! 检测程序的正确性。 正确结果: 字母个数是:13 数字个数是:12 空格个数是:4 其它字符个数是:4

C语言题库第7章宏定义与预处理√

C语言题库第7章宏定义与预处理√

第七章宏定义与预处理一.单项选择1. 以下程序的运行结果是( D )。

#include<stdio.h>#define ADD(x) x+xint main ( ){int m=1,n=2,k=3,sum ;sum = ADD(m+n)*k ;printf(“%d\n”,sum) ;return 0;}A.18B.9C.12D.102. 以下程序的运行结果是( C )。

#include<stdio.h>#define MIN(x,y) (x)>(y) ? (x) : (y)int main ( ) {int i=10, j=15 , k;k = 10*MIN(i,j);printf(“%d\n”,k);return 0;}A.15B.100C.10D.1503. 以下程序的运行结果是( A )。

#include<stdio.h>#define X 5#define Y X+1#define Z Y*X/2int main ( ) {int a=Y;printf(“%d\n”,Z);printf(“%d\n”,--a);return 0;}A.75B.125C.76D.1264. 以下程序的运行结果是( C )。

#include<stdio.h>#define DOUBLE(r) r*rint main ( ) {int x=1,y=2,t;t = DOUBLE(x+y) ;printf (“%d\n”,t); return 0;}A.7B.6C.5D.85. 在“文件包含”预处理命令形式中,当#include后面的文件名用””(双引号)括起时,寻找被包含文件的方式是( C )。

A.仅仅搜索源程序所在目录B.直接按系统设定的标准方式搜索目录C.先在源程序所在目录中搜索,再按系统设定的标准方式搜索D.仅仅搜索当前目录6. 若有定义#define N 2#define Y(n) ((N+1)*n)则执行语句z=2*(N+Y(5));后,z的值为( C )。

C语言 第7章课后习题

C语言 第7章课后习题
1.用筛选法求100之内的素数。
#include<math.h> #define N 101 main()
{ int i,j,line,a[N];
for(i=2;i<N;i++) { a[i]=i; for(j=2;j<sqrt(N);j++)
{
if(a[i]!=0&&a[j]!=0) if(a[i]%a[j]==0) a[i]=0; } } printf(“\n”); for(i=2,line=0;i<N;i++)
5.将一个数组中的值按逆序重新存放,例如原来的顺序为8,6,5,4, 1。要求改为1,4,5,6,8。 #define N 5 main() { int a[N]={8,6,5,4,1},i,temp; printf("\n初始数组:\n"); for(i=0;i<N;i++) printf(%4d",a[i]); for(i=0;i<N/2;i++) { temp=a[i]; a[i]=a[N-i-1]; a[N-i-i]=temp; } printf("\n交换后的数组:\n"); for(i=0;i<N;i++) printf(%4d",a[i]); }
for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); /*排序*/
for(i=0;i<N-1;i++) { for(j=i+1;j<N;j++) if(a[i]>a[j]) temp=a[i]; a[i]=a[min]; a[min]=temp; } /*输出*/ printf("\n 排序结果如下:\n"); for(i=0;i<N;i++) printf("%5d",a[i]); }

C语言第七章习题答案

C语言第七章习题答案

7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

两个整数由键盘输入。

hcf(u,v)int u,v;{ int a,b,t,r;if(u>v){ t=u;u=v;v=t; }a=u;b=v;while((r=b%a)!=0){ b=a;a=r; }return(a);}lcd(u,v,h)int u,v,h;{ int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%dn",h);l=lcd(u,v,h);printf("L.C.d=%dn",l);return(u*v/h);}#include <stdio.h>void main(){ int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%dn",h);l=lcd(u,v,h);printf("L.C.D=%dn",l);}7.2 求方程根float x1,x2,disc,p,q; greater_than_zero(a,b)float a,b;{x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); }equal_to_zero(a,b)float a,b;{ x1=x2=(-b)/(2*a);}smaller_than_zero(a,b)float a,b;{ p=-b/(2*a);q=sqrt(disc)/(2*a);}main(){float a,b,c;printf("n输入方程的系数a,b,c:n");scanf("%f,%f,%f",&a,&b,&c);printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c);disc=b*b-4*a*c;printf("方程的解是:n");if(disc>0){ great_than_zero(a,b);printf("X1=%5.2ftX2=%5.2fnn",x1,x2);}else if(disc==0){zero(a,b);printf("X1=%5.2ftX2=%5.2fnn",x1,x2);}else{small_than_zero(a,b,c);printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);}}7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。

c语言第七章课后题

c语言第七章课后题

一、第七章习题7(p184-p187),7.1-7.7全做,7.8-7.12中选做两道,要求给出程序执行结果。

7-1、#include <stdio.h>int Square(int i){return i*i;}int main(){int i=0;i=Square(i);for(; i<3;i++){static int i=1;i+=Square(i);printf("%d,",i);}printf("%d\n",i);return 0;}结果:结果分析:开头定义square()函数功能:计算一个数的平方入口参数:整数x返回值:i*i主函数:i=0;进入循环:静态变量i=1;i=i+square(1)=2;输出2;循环变量i=0+1=1;}int main(){int i;second=0;for(i=0;i<1000000;i++){update(); /*利用循环控制时钟运行时间*/display(); /*显示时,分,秒*/delay(); /*模一尺时间为1秒*/ }return 0;}结果:自动跳出时间7-3、#include <stdio.h>/*max()函数功能:找两个数的最大值入口参数:两个整数a,b返回值:两数的最大值*/int max(int a, int b){int max=0;max = (a>b)?a:b;return max;}void main(){int x=0; /*输入的两个数x,y*/int y=0;int m=0; /*m用于接收max()函数的返回值*/printf("input two integer numbers:");scanf("%d,%d",&x,&y);m=max(x,y);printf("the max number is %d\n",m);}结果:7-4#include <stdio.h>/*LCM()函数功能:计算两个整数的最小公倍数入口参数:两整数a,b返回值:最小公倍数*/int LCM(int a,int b){int i=0; /*循环变量*/int min=0; /*循环寻找范围的最小值*/int max=0; /*循环寻找范围的最大值*/min = (a>b)?a:b; /*最小值为a,b中的最大值*/ max = a*b; /*最大值为a*b*/for (i=min; i<=max; i++){if(i%a==0 && i%b==0)return i;}}void main(){int x; /*键盘输入两整数x,y*/int y;int m; /*m用于接收LCM()函数的返回值*/do{ /*输入整数的合法数据*/ printf("输入两个正整数:");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = LCM(x,y);printf("最小公倍数为:%d\n",m);}结果:7-5、#include <stdio.h>long fact(int n);void main(){int i=0; /*循环变量*/int n=0; /*输入的值*/int m=0; /*接收fact()函数的返回值*/do{printf("input n:");scanf("%d",&n);}while(n<0);for(i=1; i<=n; i++){m=fact(i);printf("%d!=%ld\n",i,m);}}/*fact函数功能:计算n!入口参数:n返回值:n!*/long fact(int n){static long p=1;p=p*n;return p;}结果:7-6、#include <stdio.h>}结果:7-7、(1)穷举法:#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /*键盘键入两个数*/int y=0;int m=0; /*接收Gcd的返回值*/do{printf("输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf("最大公约数:%d\n",m); }/*Gcd()函数功能:计算两数的最大公约数入口参数:两个正数a,b返回值:最大公约数*/int Gcd(int a,int b){int i=0;int t=0;t=(a<b)?a:b; /*t为a,b中的较小者*/ for(i=t; i>=1; i--){if(a%i==0 && b%i==0)return i;}}结果:(2)欧几里得算法#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /*键盘键入两个数*/int y=0;int m=0; /*接收Gcd的返回值*/do{printf("输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf("最大公约数:%d\n",m); }/*Gcd()函数功能:计算两数的最大公约数入口参数:两个正数a,b返回值:最大公约数*/int Gcd(int a,int b){int r=0;r=a%b;if(r!=0){do{a=b;b=r;r=a%b;}while(r!=0);}return b;}结果:(3)递归方法:7-9、#include <stdio.h>/*old()函数功能:计算第i个人的年龄入口参数:人数i返回值:年龄*/int old(int i){if(i==1)return 10;elsereturn old(i-1)+2;}void main(){int x=5; /*人数为5*/int y=0; /*接收old()函数的返回值*/y=old(x);printf("第五个人的年龄为:%d\n",y);}结果:7-10、#include <stdio.h>void main(){int flag=0; /*设置标志变量*/if ((m+n+p+q+r)==sum){flag=1; /*一旦找到就退出循环*/break;}}if(flag==0) /*未找到说明计算错误*/{printf("你算错了!");}else{printf("你想的数是%d %d %d \n",a,b,c);}}结果:二、收集资料并整理,叙述结构化程序设计的基本思想;根据自己的编程,说说你对结构化程序设计的理解。

C语言课后练习题答案第七章

C语言课后练习题答案第七章

C语言课后练习题答案第七章作业六:循环结构程序设计(一)(一)选择题(50分)1.设有程序段int k=10;while(k=0)k=k-1;这下面描述中正确的是_c_。

a)while循环执行10次 b)循环是无限循环c)循环体语句一次也不执行 d)循环体语句执行一次(重要) 2.语句while(!E);中的表达式!E等价于_a_。

a)E==0 b)E!=1 c)E!=0 d)E==1while(!e)表明!e==true,因此e==false,也就是e==03.下面程序段的运行结果是_c_。

int n=0;while(n++<=2);printf("%d",n);a)2 b)3 c)4 d)有语法错n=0,n++是先用0去和2比,然后再加1,n变成1。

n=1,n++<=2,1<=2成立,n+1变成2n=2,n++<=2,2<=2成立,n+1变成3n=3,n++<=2,3<=2不成立,n+1变成4,循环结束4.下面程序的运行结果是_c_。

#includemain(){int num=0;while(num<=2){num++;printf("%d\n",num);}}a)1 b)1 c)1 d)12 2 23 345.以下程序段_c_。

x=-1;do{x=x*x;}while(!x);a)是死循环 b)循环执行二次c)循环执行一次 d)有语法错误(二)填空题(30分)1.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

请填空。

main(){int n=0,c;c=getchar();while(c!=’\n’){if(c>=’0’&&c<=’9’) n++;c=getchar();}printf(“%d\n”,n);}2.下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。

c语言第七章课后题

c语言第七章课后题

一、第七章习题7(p184-p187),7.1-7.7全做,7.8-7.12中选做两道,要求给出程序执行结果。

7-1 、#include <stdio.h>int Square(int i){return i*i;}int main(){int i=0;i=Square(i);for(; i<3;i++){static int i=1;i+=Square(i);printf("%d,",i);}printf("%d\n",i);return 0;}结果:结果分析:开头定义square()函数功能:计算一个数的平方入口参数:整数x返回值: i*i主函数: i=0; 进入循环:静态变量i=1 ;i=i+square ( 1) =2;输出2;循环变量i=0+1=1;i=1<3成立静态变量i=i+square (2) =2+4=6 ;输出6;循环变量i=i+1=2;I=2<3 成立静态变量( i 保持原值) i=6 ;i=i+square ( 6) =6+36=42 ;输出 42;循环变量i=i+1=3 ;I=3<3 不成立退出循环输出循环变量i=37-2 、#include <stdio.h>int hour,minute,second; /* 定义全局变量 */ voidupdate(){second ++;if(second == 60){second=0;minute++;}if(minute==60){minute=0 ;hour++;}if(hour==24)hour=0;}void display(){printf(" %d : %d : %d\n ",hour,minute,second);}void delay(){int t;for (t=0;t<100000000;t++); /*用循环体为空语句的循环实现延时*/}int main(){int i;second=0;for(i=0;i<1000000;i++){update(); /*利用循环控制时钟运行时间*/display(); /*显示时,分,秒*/delay(); /*模一尺时间为1秒*/ }return 0;}结果:自动跳出时间7-3 、#include <stdio.h>/*max() 函数功能:找两个数的最大值入口参数:两个整数a,b返回值:两数的最大值*/int max(int a, int b){int max=0;max = (a>b)?a:b;return max;}void main(){int x=0; /*输入的两个数x,y*/int y=0;int m=0; /*m用于接收max()函数的返回值*/printf("input two integer numbers:");scanf("%d,%d",&x,&y);m=max(x,y);printf("the max number is %d\n",m);}结果:7-4#include <stdio.h>/*LCM() 函数功能:计算两个整数的最小公倍数入口参数:两整数a, b返回值:最小公倍数*/int LCM(int a,int b){int i=0; /*循环变量*/int min=0; /*循环寻找范围的最小值*/int max=0; /*循环寻找范围的最大值*/min = (a>b)?a:b; /*最小值为a,b中的最大值*/ max = a*b;/*最大值为a*b*/for (i=min; i<=max; i++){if(i%a==0 && i%b==0)return i;}}void main(){int x; /*键盘输入两整数x,y*/int y;int m; /*m用于接收LCM()函数的返回值*/do{/*输入整数的合法数据*/ printf(" 输入两个正整数: ");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = LCM(x,y);printf(" 最小公倍数为: %d\n",m);}结果:7-5、#include <stdio.h>long fact(int n);void main(){int i=0; /* 循环变量*/int n=0; /* 输入的值*/int m=0; /* 接收 fact()函数的返回值*/do{printf("input n:");scanf("%d",&n);}while(n<0);for(i=1; i<=n; i++){m=fact(i);printf("%d!=%ld\n",i,m);}}/*fact 函数功能:计算 n!入口参数:n返回值:n!*/long fact(int n){static long p=1;p=p*n;return p;}结果:7-6、#include <stdio.h>long fact(int n);void main(){int i=0; /* 循环变量*/int n=0; /* 输入的值*/int m=0; /* 接收 fact()函数的返回值*/long s=0; /*所求最终结果*/do{printf("input n:");scanf("%d",&n);}while(n<0);for(i=1; i<=n; i++){m=fact(i);s=s+m;}printf("1!+2!+...+n! = %ld\n",s);}/*fact 函数功能:计算 n!入口参数:n返回值:n!*/long fact(int n){static long p=1;p=p*n;return p;}结果:7-7、(1)穷举法:#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /* 键盘键入两个数 */int y=0;int m=0; /* 接收 Gcd 的返回值*/do{printf(" 输入两个正数 :");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf(" 最大公约数:%d\n",m); }/*Gcd() 函数功能:计算两数的最大公约数入口参数:两个正数 a, b返回值:最大公约数*/int Gcd(int a,int b){int i=0;int t=0;t=(a<b)?a:b; /*t 为 a,b 中的较小者 */ for(i=t; i>=1; i--){if(a%i==0 && b%i==0)return i;}}结果:( 2)欧几里得算法#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /* 键盘键入两个数 */int y=0;int m=0; /* 接收 Gcd 的返回值*/do{printf(" 输入两个正数 :");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf(" 最大公约数:%d\n",m); }/*Gcd() 函数功能:计算两数的最大公约数入口参数:两个正数 a, b返回值:最大公约数*/int Gcd(int a,int b){int r=0;r=a%b;if(r!=0){do{a=b;b=r;r=a%b;}while(r!=0);}return b;}结果:(3)递归方法:#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /*键盘键入两个数*/int y=0;int m=0; /* 接收 Gcd 的返回值 */do{printf(" 输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf(" 最大公约数: %d\n",m); }/*Gcd() 函数功能:计算两数的最大公约数入口参数:两个正数a, b返回值:最大公约数*/int Gcd(int a,int b){if (a==b)/* 递归出口 */return a;else{if(a>b)return Gcd(a-b,b);elsereturn Gcd(b,b-a);}}结果:7-9、#include <stdio.h>/*old() 函数功能:计算第i 个人的年龄入口参数:人数i返回值:年龄*/int old(int i){if(i==1)return 10;elsereturn old(i-1)+2;}void main(){int x=5;/* 人数为 5*/int y=0; /* 接收 old()函数的返回值*/y=old(x);printf(" 第五个人的年龄为:%d\n",y);}结果:7-10、#include <stdio.h>void main(){int flag=0; /* 设置标志变量*/int a=0;/* 百位 */int b=0;/* 十位 */int c=0;/* 个位*/int m=0;/* 代表 acb*/int n=0;/* 代表 bac*/int p=0;/* 代表 bca*/int q=0;/* 代表 cab*/int r=0;/* 代表 cba*/int i=0;/* 从 100~999 中找 abc*/ int sum=0; /* 观众计算得结果*/printf(" 说出你的计算结果: "); scanf("%d",&sum);for(i=100;i<=999;i++){a=i/100;b=i/10%10;c=i%10;m=a*100+c*10+b;n=b*100+a*10+c;p=b*100+c*10+a;q=c*100+a*10+b;r=c*100+b*10+a;if ((m+n+p+q+r)==sum){flag=1;/* 一旦找到就退出循环*/break;}}if(flag==0)/* 未找到说明计算错误 */{printf(" 你算错了!");}else{printf(" 你想的数是 %d %d %d \n",a,b,c);}}结果:二、收集资料并整理,叙述结构化程序设计的基本思想;根据自己的编程,说说你对结构化程序设计的理解。

C语言理论教材各章后习题参考答案第七章习题

C语言理论教材各章后习题参考答案第七章习题

第七章习题参考答案一、选择题7.1 答案:C7.2 答案:C7.3 答案:D7.4 答案:C7.5 答案:D二、读程序回答问题7.6 答案:B7.7 答案:C7.8 答案:D7.9 答案:A7.10 答案:C7.11 答案:D7.12 答案:C7.13 答案:C三、编写程序7.14 参考源程序如下:/* 习题7.14参考源程序*/#include<stdio.h>int N1=50,N2=10;long add(int m){static long s=0;s=s+m;return(s);}long mul(int m){static long p=1;p=p*m;return(p);}main(){int i;long sum,product;for(i=1;i<=N1;i++)sum=add(i);printf("1+2...+%d=%ld\n", N1, sum);for(i=1;i<=N2;i++)product=mul(i);printf("1*2...*%d=%ld\n", N2, product);}7.15 求素数的算法比较简单,本题主要考察通过外部变量来传递数据。

参考源程序中使用两个外部变量分别来存放素数的个数和素数的和。

参考源程序如下:参考源程序如下:/* 习题7.15参考源程序*/#include<math.h>#include<stdio.h>int n=0;long sum;void count(int n1,int n2){int i,j;int k;int flag=1;for(i=n1;i<=n2;i++){k=sqrt(n2);for(j=2;j<=k;j++)if(i%j==0) {flag=0; break;}if(flag){n++; sum+=i;}flag=1;}}main(){int n1=10,n2=100;count(n1,n2);printf("%d prime numbers, total is %d\n",n,sum);}。

C语言练习题第七章

C语言练习题第七章

C语⾔练习题第七章第七章常见题型⼀.选择题:1.C语⾔标准库函数"fgets(string,n,fp)"的功能是________。

A.从⽂件fp中读取长度为n的字符串存⼊指针string指向的内存B.从⽂件fp中读取长度为n-1的字符串存⼊指针string指向的内存C.从⽂件fp中读取n个字符串存⼊指针string指向的内存D.从⽂件fp中读取长度不超过长度为n的字符串存⼊指针string指向的内存2.参考下⾯函数f的定义:f(int a){printf("%d",a);}函数f的返回类型________。

A.同参数a的类型相同B.是void类型C.没有返回值D.⽆法确定3.函数NewPring⽤于打印sin(x)、cos(x)和ln(x)等函数的曲线模拟,其参数就是上述函数,则NewPring的原型为________。

A.double NewPrint(double x)B.void NewPrint(double(*f)(double X))C.void (*NewPrint)(double X)D.void (*NewPrint)(double f(double x))4.数组名作为参数传递给函数,此时作为实在参数的数组名被处理为________。

A.该数组的长度B.该数组的元素个数C.该数组中各元素的值D.该数组的⾸地址5.执⾏完下⾯的程序段后,屏幕显⽰的内容为何。

main(){int a=2,i;for(i=0;i<3;i++) printf("%d",f(a));}f(a)int a;{int b=0;static c=3;b++;c++;return(a+b+c);}A.777B.7 7 7C.789D.7 8 96.C程序中若函数类型未加显式说明,则函数的隐含类型为________类型。

A.voidB.intC.charD.double7.对于C程序的函数,下列叙述中正确的是________。

《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案

《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案

习题七一、单项选择题1、以下程序的输出结果是()。

main(){int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i; /*a: 0 1 2 3 4 5 6 7 8 9 */for(i=0;i<3;i++)p[i]=a[i*(i+1)]; /*p:0 2 6 */for(i=0;i<3;i++)k+=p[i]*2; /* k=5+4+12=21 */printf(“%d\n”,k);}A)20 B)21 C)22 D)232、以下正确的数组定义语句是()。

A)int y[1][4]={1,2,3,4,5}; B)float x[3][ ]={{1},{2},{3}}; C)long s[2][3]={{1},{1,2},{1,2,3}}; D)double t[ ][3]={0};3、以下程序段的输出结果是()。

main(){int m[3][3]={{1},{2},{3}}; m 1 0 0 n 1 2 3int n[3][3]={1,2,3}; 2 0 0 0 0 0printf(“%d\n”,m[1][0]+n[0][0]); 3 0 0 0 0 0printf(“%d\n”,m[0][1]+n[1][0]);}A)0 B)2 C)3 D)10 3 0 24、以下程序的输出结果是()。

main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9}; 1 2 3for(i=0;i<3;i++)printf(“%d,”x[i][2-i]); 4 5 6} 7 8 9A)1,5,9 B)1,4,7 C)3,5,7 D)3,6,95、对以下程序从第一列开始输入数据:2473↙,程序的输出结果是()。

#include “stdio.h”main(){char c;while((c=getchar())!=’\n’){switch (c-‘2’){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);}}}A)668977 B}668966 C}66778777 D)66887666、不能正确为字符数组输入数据的是( )。

C语言第7章习题及实验参考答案~1

C语言第7章习题及实验参考答案~1

C语言第7章习题及实验参考答案~1第7章习题及参考答案1. 编程,从键盘上输入n个整数,按逆序输出这些数。

参考程序:#include#define N 5void main(){int i,t,a[N];for(i=0;i<n;i++)< p="">scanf("%d",&a[i]);for(i=0;i<n;i++)< p="">printf("%5d ",a[i]);printf("\n");for(i=0;i<="" p="">{t=a[i];a[i]=a[N-i-1];a[N-i-1]=t;}for(i=0;i<n;i++)< p="">printf("%5d ",a[i]);}2. 编程,已知某同学某门课程的平时、实习、测验和期末成绩,求该同学该门课程的总评成绩。

其中,平时、实习、测验和期末分别占10%、20%、20%、50%。

参考程序:#includevoid main(){int i ;float tot,a[4];for(i=0;i<4;i++)scanf("%f",&a[i]);tot=0.1*a[0]+0.2*a[1]+0.2*a[2]+0.5*a[3];printf("%f ",tot);}3. 编程,输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。

参考程序:# include "stdio.h"#define N 10void main(){int term[N];int i,max,min;for(i=1;i<n,i++)< p="">scanf("%d",&term[i]);max=0;min=0;for(i=1;i<10;i++){if (term[i]< term[min])min=i;if (term[i]> term[max])max=i;}if(term[min]!=term[0]){ t=term[min]; term[min]= term[0]; term[0]=t;}if(term[max]!=term[N-1]){ t=term[max]; term[max]= term[N-1]; term[N-1]=t;}for(i=1;i<n,i++)< p="">printf("%d",trem[i]);}4. 编程,已有一个已排好序的数组(由小到大),今输入另一个数,要求仍然有序。

C语言程序设计-第7章 练习题

C语言程序设计-第7章  练习题

一、单项选择题1题目1在结构类型的定义中,对于类型标识符后的定义体,使用的起止标记符是一对()。

a. 中括号b. 圆括号c. 圆括号d. 尖括号题目2假定一个结构类型的定义为“struct A{int a,b; double c;};”,则该类型的长度为()。

a. 12b. 10c. 8d. 16题目3假定一个结构类型的定义为“struct D{int a; D* next;};”,则该类型的长度为()。

a. 4b. 8c. 12d. 16题目4假定有结构定义“struct Book{char title[20]; double price;};”,则不正确的语句定义为()。

a. struct Book b=("C++ Programming",27.0)b. struct Book* c[10]c. struct Book d[2][3]d. struct Book a[5]题目5假定有结构定义“struct Book{char title[20]; double price;};”,则正确的语句定义为()。

a. struct Book *x=malloc(6*sizeof(struct Book *));b. struct Book *x=malloc(6,sizeofstruct (Book));c. struct Book *x=calloc(6*sizeof(struct Book));d. struct Book *x=calloc(6,sizeof(struct Book));题目6假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。

a. x(a)b. x{a}c. x.ad. x->a题目7与结构成员访问表达式p->name等价的表达式为()。

a. (*p).nameb. *(p->name)c. d. *题目8在一个链表中,每个结点必然存在着一个指向自身结点类型的指针域,用来保存下一个结点的()。

C语言程序设计(第三版)谭浩强习题与答案 第七章

C语言程序设计(第三版)谭浩强习题与答案   第七章
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051


main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;

c语言试题7

c语言试题7

第七章结构型、共同型和枚举型一、单项选择题1.对以下结构定义:struct { int len; char *str ; } *p; 表达式(*p)->str++中的++加在(D)A. 指针str上B. 指针p上C. str所指的内容上D. 表达式语法有错2.存放100个学生的数据,包括学号,姓名,成绩。

在如下的定义中,不正确的是(B)。

A.struct student { int sno; char name[20]; float score } stu[100];B.struct student stu[100] { int sno; char name[20]; float score } ;C.struct { int sno; char name[20]; float score } stu[100];D.struct student { int sno; char name[20]; float score } ; struct student stu[100];3.设有定义语句struct { int x ; int y ;} d[2]={{1,3}, {2,7}};则printf (“%d\n”, d[0].y/d[0].x*d[1].x ); 的输出是(D)。

A.0 B.1 C.3 D.64.设有定义语句enum team {my, your = 4, his, her=his+10} ;则printf(“%d,%d,%d,%d\n”, my, your, his, her) ;的输出是(D)。

A.0,1,2,3 B.0,4,0,10 C.0,4,5,15 D.1,4,5,15 5.以下对枚举类型名的定义中正确的是(B)。

A.enum a={one, two, three}; B.enum a {a1, a2, a3} ;C.enum a={‘1’, ’2’, ’3’} ; D.enum a {“one”, ”two”, ”three”} ;6.若有如下定义,则printf (“%d\n”, sizeof (them)) ; 的输出是(C)。

计算机二级c语言第七章 函数习题

计算机二级c语言第七章 函数习题

第七章函数一、选择题1、以下关于函数的叙述中正确的是A)每个函数都可以被其它函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数2、设函数fun的定义形式为void fun(char ch,float x) { … }则以下对函数fun的调用语句中,正确的是A)fun("abc",3.0); B)t=fun('D',16.5);C)fun('65',2.8); D)fun(32,32);3、有以下程序int f1(int x,int y){return x>y?x:y;}int f2(int x,int y){return x>y?y:x;}main(){ int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g); }程序运行后的输出结果是A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,74、有以下程序#define P 3#define F(int x) { return (P*x*x);}main(){ printf("%d\n",F(3+5));}程序运行后的输出结果是A)192 B)29 C)25 D)编译出错5、若程序中定义了以下函数double myadd(double a,double B){ return(a+B);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是A)double myadd(double a,B); B)double myadd(double,double);C)double myadd(double b,double A); D)double myadd(double x,double y);6、有以下程序char fun(char x ,char y){ if(x < y) return x;return y;}main(){ int a=’9’,b=’8’,c=’7’;printf("%c\n",fun(fun(a,b),fun(b,c))); }程序的执行结果是A)函数调用出错 B)8 C)9 D)77、有以下程序void f(int v,int w){ int t;t=v;v=w;w=t;}main(){ int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z) f(y,z);else f(x,z);printf("%d,%d,%d\n",x,y,z);}执行后输出结果是A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,18、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A) 调用可以作为独立的语句存在 B) 调用可以作为一个函数的实参C) 调用可以出现在表达式中 D) 调用可以作为一个函数的形参9、有以下函数定义:void fun(int n,double x) { …… }若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A)fun(int y,double m); B) k=fun(10,12.5);C)fun(x,n); D) vold fun(n,x);10、有以下程序fun(int a,int b){ if(a>b) return(a);else return(b);}main(){ int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}程序运行后的输出结果是A) 3 B) 6 C) 8 D) 1211、在一个C程序中A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置12、有以下程序int f1(int x,int y){ return x>y?x:y; }int f2(int x,int y){ return x>y?y:x; }main(){ int a=4,b=3,c=5,d,e,f;d=f1(a,b); d=f1(d,c);e=f2(a,b); e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}执行后输出结果是A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,413、有如下程序void f(int x,int y){ int t;if(x < y){ t=x; x=y; y=t; }}main(){ int a=4,b=3,c=5;f(a,b); f(a,c); f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,514、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是A) void B) int C) float D) double15、有以下程序float fun(int x,int y){ return(x+y); }main(){ int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是A) 编译出错 B) 9 C) 21 D) 9.016、若有以下程序#includevoid f(int n);main(){ void f(int n);f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无值型17、以下函数值的类型是fun(float x){ float y;y= 3*x-4;return y;}A)int B)不确定 C)void D)float18、以下所列的各函数首部中,正确的是A)void play(var :Integer,var b:Integer)B)void play(int a,b)C)void play(int a,int b)D)Sub play(a as integer,b as integer)19、以下程序的输出结果是fun(int x, int y, int z){ z=x*x+y*y; }main(){ int a=31;fun(5,2,a);printf("%d",a);}A)0 B)29 C)31 D)无定值20、有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是A) 3 B) 4 C) 5 D) 有语法错21、有如下程序int func(int a,int b){ return(a+b);}main(){ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出的结果是A) 12 B) 13 C) 14 D) 1522、以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效23、有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}main(){ int x=10, y=20,z=30;fun(x,y,z);printf("%d,%d,%d \n",z,y,x);}输出结果是A)30,20,10 B)10,20,30 C) 456,567,678 D) 678,567,45624、有以下程序#include "stdio.h"int abc(int u,intv);main(){ int a=24,b=16,c;c=abc(a,b);printf("%d\n",c);}int abc(int u,int v){ int w;while(v){ w=u%v; u=v; v=w }return u;}输出结果是A)6 B)7 C)8 D)925、以下说法中正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分26、请读程序:#includefunc( int a, int b){ int c;c=a+b;return c;}main(){ int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);}上面程序的输出结果是A)11 B)20 C)21 D)31二、填空题1、有以下程序int sub(int n) {return(n/10+n%10); }main(){ int x,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%d\n",y);}若运行时输入:1234<回车>,程序的输出结果是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B.main(ac,av) int ac;char **av;
C.main(c,v) int c;char *v[];
D.main(argc,argv) int argc;char argv[];
二.填空题:
1.填入运行结果:
swap1(x,y)
int x,y;
{
int w;
A.4个
B.3个
C.8个
D.5个
11.C语言中函数能否嵌套调用和递归调用?
A.二者均不可
B.前者可,后者不可
C.前者不可,后者可
D.二者均可
12.C语言标准库函数"strcat(strcpy(STR1,STR2),STR3)"的功能是________。
A.将串STR1复制到串STR2中后再连接至串STR3之后
B.将串STR1连接至STR2之后再复制至串STR3之后
C.将串STR2复制到串STR1串后再将串STR3连接到串STR1 之后
D.将串STR2连接到串STR1之后再将串STR1复制到串STR3串
13.下列选项中不是C语言main函数正确表达形式的是________?
A.main(int argc,char *argv[]);
B.(1)-8 1 2 7 9 10
(2)-8 1 7 9 10 2
C.(1)-8027910
(2)-8079102
D.(1)-8 0 3 7 9 10
(2)-8 0 4 9 10 2
f(n-1)+f(n-2) (n>1)
D. 0 (n<0)
f(n)={ 1 (n>0)
f(n-1)+f(n-2) (n>1)
6.现给出如下C语言程序:
#include<stdio.h>
shell(v,n)
int v[],n;
data3=5 data4=7
data5=5 data6=7
data7=7 data8=7
data9=7 data10=7
D.data1=5 data2=7
data3=5 data4=5
data5=5 data6=5
data7=7 data8=5
data9=7 data10=5
2.main()
B.函数的定义可嵌套,但函数的调用不能嵌套
C.函数的定义和调用均不能嵌套
D.函数的定义和调用均可嵌套
8.C语言命令行参数很有特点,其一般表达式形式为________。
A.main(int argc,int argv)
B.main(int argc,char argv[])
C.main(int argc,char *argv)
}
A.777
B.7 7 7
C.789
D.7 8 9
6.C程序中若函数类型未加显式说明,则函数的隐含类型为________类型。
A.void
B.int
C.char
D.double
7.对于C程序的函数,下列叙述中正确的是________。
A.函数的定义不能嵌套,但函数调用可以嵌套
}
gbs(a,b)
int a,b;
{ int c;
a=a>0?a:-a;
b=b>0?b:-b;
c=a*b;
if(c==0) return(0);
while(a!=b) if(a>b) a-=b;
else b-=a;
return(c/a);
}
gys(a,b)
f(n)={ 1 (n=1)
f(n-1)+f(n-2) (n>0)
B. 0 (n=0)
f(n)={ 1 (n=0)
f(n-1)+f(n-2) (n>1)
C. 0 (n=0)
f(n)={ 1 (n=1)
B.a=27 b=63 gbs=190 gys=10
C.a=27 b=63 gbs=189 gys=9
D.a=27 b=63 gbs=188 gys=10
4.下面函数swap_p的功能是完成交换两个指针的操作。请 按指定的顺序在题后的相应序号后填上适当的内容,使之成为完整正确的函数。
w=x;x=y;y=w;
}
swap2(p1,p2)
int *p1,*p2;
{
int *p;
p=p1;p1=p2;p2=p;
}
swap3(pa,pb)
int *pa,*pb;
{
int p;
p=*pa;pa=*pb;pb=p;
}
main()
{
int a,b;
int a,b;
{ if(a*b==0) return(0);
a=a>0?a:-a;
b=b>0?b:-b;
while(a!=b) if(a>b) a-=b;else b-=a;
return(a);
}
请写出上面程序的运行结果:
A.a=30 b=63 gbs=189 gys=9
C.没有返回值
D.无法确定
3.函数NewPring用于打印sin(x)、cos(x)和ln(x)等函数的曲线模拟,其参数就是上述函数,则NewPring的原型为___
B.void NewPrint(double(*f)(double X))
for(i=0;i<count;i++)
printf("%d",a[i]);
}
(1)该程序的输出结果是________。
(2)将程序中shell(a,count)改为shell(a,count-1)输出结果是________。
A.(1)-8 0 2 7 9 10
(2)-8 0 7 9 10 2
printf("data5=%d\tdata6=%d\n",a,b);
swap3(ptr1,ptr2);
printf("data7=%d\tdata8=%d\n",*ptr1,*ptr2);
printf("data9=%d\tdata10=%d\n",a,b);
}
A.data1=5 data2=7
v[j]=v[j+gap];
v[j+gap]=temp;
}
}
main()
{
int i,count;
static int a[]={9,7,10,0,-8,2};
count=sizeof(a)/sizeof(int);
shell(a,count);
int *ptr1,*ptr2;
a=5;b=7;
ptr1=&a;ptr2=&b;
swap1(*ptr1,*ptr2);
printf("data1=%d\tdata2=%d\n",*ptr1,*ptr2);
swap2(ptr1,ptr2);
printf("data3=%d\tdata4=%d\n",*ptr1,*ptr2);
*t;
term;
C.**s(或**t);
**t(或**s);
s;
t;
*term;
D.s(或**t);
t(或**s);
*s;
*t;
&term;
5.现有一C语言程序用于计算一个数学函数f(n):
fib(n)
int n;
{
switch(n){
case 0:return 0;
case 1:return 1;
default:
{
int i;
int a=0,b=1,result;
for(i=2;i<=n;i++)
{ result=a+b;
{ int x=3,i;
for(i=0;i<3;i++) printf("%d",f(x));
}
int f(int a)
{ int b=0;
static c=3;
b++;c++;
return(a+b+c);
}
执行此程序后屏幕上显示的结果是什么:
A.8 10 10
data3=5 data4=7
data5=5 data6=7
data7=7 data8=5
data9=7 data10=5
B.data1=7 data2=7
data3=7 data4=7
data5=7 data6=7
data7=7 data8=5
data9=7 data10=5
C.data1=5 data2=7
答案
一.选择题:
1.B
C.从文件fp中读取n个字符串存入指针string指向的内存
D.从文件fp中读取长度不超过长度为n的字符串存入指针string指向的内存
2.参考下面函数f的定义:
f(int a){printf("%d",a);}
函数f的返回类型________。
A.同参数a的类型相同
B.是void类型
D.main(int argc,char *argv[])
相关文档
最新文档