C语言第七套题
C语言答案谭浩强第7章

C语言答案谭浩强第7章<i>C语言答案谭浩强</i>77.1 100N-S 7.1#include math.hmain(){int i, j, n, a;for (i=1; i=100; i++)a[i]=i;for (i=2; i=sqrt(100); i++)for (j=i+1; j=100; j++)if (a[i]!=0 a[j]!=0)if (a[j]%a[i]==0)a[j]=0;printf(“\n”);for (i=2; i=100; i++){if (a[i]!=0){printf(“%5d”, a[i]);n++;<i>C语言答案谭浩强</i>}if (n%10==0)printf(“\n”);}}2 3 5 7 11 13 17 19 23 2931 37 42 43 47 53 59 61 67 7173 79 83 89 977.2 10 ( )10 a~a a a~a a a~a a~a a a a 10 a a~a a a~a a~a a a a 10 9 a a N-S 7.2main(){int i, j, min, temp, a;printf(“ : \n”);for (i=1; i i++){printf(“a[%d]=”, i);scanf(“%d”, a[i]); /* 10 */}printf(“\n”);for (i=1; i i++)printf(“%5d”, a[i]); /* 10 */printf(“\n”);for (i=1; i i++) /* 7 10 */<i>C语言答案谭浩强</i>{min=i;for (j=i+1; i j++)if (a[min]a[j]) min=j;temp=a[i]; a[i]=a[min]; a[min]=temp; /* a[i+1]~a a[i] */}printf(“ : \n”);for (i=1; i i++)printf(“%5d”, a[i]); /* 10 */}:a=6a=45a=56a=1a=15a=44a=78a=58a=1016 90 45 56 1 15 44 78 58 101 :1 6 15 44 45 56 58 78 90 101 7.3 3 3main(){int a, i, j, sum=0;printf(“ : \n”);for (i=0; i i++)for (j=0; j j++)scanf(“%d”, a[i][j]);for (i=0; i i++)sum+=a[i][i];pr intf(“sum=%5d”, sum);}:1 2 3 4 5 6 7 8 9sum= 157.4N-S 7.3<i>C语言答案谭浩强</i>{int a={1, 4, 6, 9, 13, 16, 19, 28, 40, 100}; int temp1, temp2, number, end, i, j;printf(“a : \n”);for (i=0; i i++)printf(“%5d”, a[i]);printf(“\n”);printf(“ : ”);scanf(“%d”, number);end=a;if (numberend)a=number;else{for (i=0; i i++)if (a[i]number){temp1=a[i]; a[i]=number;for (j=i+1; j j++){temp2=a[j]; a[j]=temp1; temp1=temp2; } }}printf(“ : \n”);for (i=0; i i++)printf(“%5d”, a[i]);}a :1 4 6 9 13 16 19 28 40 100<i>C语言答案谭浩强</i>:51 4 5 6 9 13 16 19 28 40 1007.5 , 8,6,5,4,1 1,4,5,6,8N-S 7.4#define N 5main(){int a[N], i, temp;printf(“ a : \n”);for (i=0; i i++)scanf(“%d”, a[i]);printf(“a :\n”);for (i=0; i i++)printf(“%5d”, a[i]);for (i=0; i i++){temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } printf(“ a : \n”);for (i=0; i i++)printf(“%5d”, a[i]);printf(“\n”);}a :8 6 5 4 1a :8 6 5 4 1a :1 4 5 6 87.6 ( 10 )11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 ………………<i>C语言答案谭浩强</i> (a+b)113N-S 7.5 1 2 3 n:#define N 11main(){int i, j, a[N][N];for (i=1; i i++){a[i][i]=1;a[i]=1;}for (i=3; i i++)for (j=2; j j++)a[i][j]=a[i-1][j-1]+a[i-1][j]; for (i=1; i i++){for (j=1; j j++)printf(“%6d”, a[i][j]);printf(“\n”);}}11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 17.7<i>C语言答案谭浩强</i>8 1 63 5 74 9 21~n1 12 2 n1 13 1 n 14 n 1 15 nN-S 7.622main(){int a, i, j, k, p, m, n;p=1;while (p==1) /* 1~15 */ {printf(“ n(n=1~15, ): ”);s canf(“%d”,if (n!=0 n=15 n%2!=0)p=0;}for (i=1; i i++) /* */<i>C语言答案谭浩强</i> for (j=1; j i++)a[i][j]=0;j=n/2+1;a[j]=1;for (k=2; k=n*n; k++){i=i-1;j=j+1;if (i1 jn){i=i+2;j=j-1;}else{if (i1) i=n;if (jn) j=1;}if (a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}for (i=1; i i++) /* */{for (j=1; j i++)printf(“%4d”, a[i][j]);printf(“\n”);}n(n=1~15, ):517 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 97.8N-S 7.7<i>C语言答案谭浩强</i>#define N 10#define M 10main(){int i, j, k, m, n, flag1, flag2, a[N][M], max, maxi, manj; prin tf(“\n n: ”);scanf(“%d”,printf(“\n m: ”);scanf(“%d”,for (i=0; i i++){printf(“ %d ? \n”, i);for (j=0; j j++)scanf(“%d”, a[i][j]);}for (i=0; i i++){for (j=0; j j++)printf(“%5d”, a[i][j]);printf(“\n”);<i>C语言答案谭浩强</i>flag2=0;for (i=0; i i++){max=a[i]; maxj=0;for (j=1; j j++)if (a[i][j]max){max=a[i][j];maxj=j;}for (k=0,flag1=1; kn flag1; k++)if (max a[k][maxj]) flag1=0;if (flag1!=0){printf(“\n %d , %d %d .\n”, i, maxj, max); flag2=1;}}if (flag2==0)printf(“\n !\n”);}(1)n: 3m: 40 ?1 2 3 41 ?4 5 5 62 ?3 5 6 71 2 3 44 5 5 63 5 6 70 , 3 4 .(2)n:3m: 40 ?2 4 90 71 ?3 4 5 82 ?9 1 2 3<i>C语言答案谭浩强</i>2 4 90 73 4 5 89 1 2 3!7.9 159 a~a 1 3 5 7 9 11 13 15 17 3 3 a3 a a=9 a3 3 a a a a a a=5 a3 3 a a a a a a=3N-S 7.8#define N 15main(){int i, j, number, top, bott, mid, loca, a[N], flag=1, sign=1; char c;<i>C语言答案谭浩强</i>printf(“ , :\n”);scanf(“%d”, a);i=1;while (iN){scanf(“%d”, a[i]);if (a[i]a[i-1])i++;elseprintf(“ : ”);}printf(“\n”);printf(“ :\n”);for (i=0; i i++)printf(“%4d”, a[i]);printf(“\n”);flag=1;while (flag){printf(“ :”);scanf(“%d”, number);loca=0;top=0;bott=N-1;if (numbera || numbera[N-1]) loca=-1;while (sign==1 top=bott){mid=(top+bott)/2;if (number==a[mid]){loca=mid;printf(“ %d, %d\n”, number, loca+1); sign=0;}else if (numbera[mid])bott=mid-1;elsetop=mid+1;}if (sign==1 || loca=-1) printf(“ %d.\n”, number); printf(“ (Y/N)?”);scanf(“%c”,if (c== ‘n’ || c== ‘N’)flag=0;}}<i>C语言答案谭浩强</i> , :132:45681223344445565758681 3 4 5 6 8 12 23 34 44 45 56 57 58 68 :77.(Y/N)?y:1212, 7(Y/N)?n7.10 , 3 80N-S 7.9<i>C语言答案谭浩强</i>#include stdio.hmain(){int i, j, upp, low, dig, spa, oth;char text;upp=low=dig=spa=oth=0;for (i=0; i i++){printf(“\n %d : \n”, i+1);gets(text[i]);for (j=0; j80 text[i][j]!= ‘\0’; j++){if (text[i][j]= ‘A’ text[i][j]= ‘Z’)upp++;else if (text[i][j]= ‘a’ text[i][j]= ‘z’)low++;else if (text[i][j]= ‘0’ text[i][j]= ‘9’)dig++;else if (text[i][j]= ‘ ’)spa++;elseoth++;}}for (i=0; i i++) printf(“%s”, text[i]); printf(“ : %d”, upp); printf(“ : %d”, low); printf(“ : %d”, dig); prin tf(“ : %d”, spa); printf(“ : %d”, oth); }1 :I am a student.2 :*****3 :ASDFGI am a student.*****ASDFG: 6: 10: 6: 3:1。
C语言的疑难问题 及全概括

1程序通过定义学生结构体变量,存储了学生的学号,姓名和3门课的成绩。
函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。
列如:a所指变量中的学号,姓名,和三门课的成绩依次是:10001、”ZhangSan”、95、80、88则修改后输出中的数据应为:10002、”LiSi”、95、80、88请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:原程序存在考生文件夹下的BLANK1。
C中。
不得增行或删行,也不得更改程序的结构!第一个空:a第二个空:或&[0]第三个空:score[i]2给定程序的功能是把一个字符串的字符复制到另外一个字符串中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!注意(考生文件夹:D:\SowerKS\CbtesExam\VC001)参考答案:第一个空:ps=ps+1第二个空:’0’第三个空: strcpy (pa,pb);3给定程序中,函数fun的功能是:找出100至x(x<=999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。
共有26个。
参考答案:第一空:0第二空:x第三空:t++04给定函数countValue(int n),它的功能是:求n以内(不包括n)同时能被7与11整除的所有自然数的平方根之和s,s作为函数返回值。
主程序调用该函数输出n为1000时的函数值。
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语言程序设计(第四版 谭洪强)实验7 答案

实验七 参考答案(参考答案)(1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。
例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。
注意:n 的值要求不大于100。
算法分析:使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。
注意:i 的倒数要表示成:1.0/i;参考子函数如下:double fun(int n){double sum=0;int i;for(i=5;i<=n;i++)if(i%5==0||i%9==0)sum=sum+1.0/i;return sum;}(2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。
n s ⋯++++⋯++++++=321132112111例如:若n 的值为11时,函数的值为1.83333算法分析:等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。
参考子函数如下:float fun(int n){float sum=1; //sum 中已经累加了第一项的值int i,m=1; //m 表示每项的分母;for(i=2;i<=n;i++){ m=m+i;sum=sum+1.0/m;}return sum;}(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。
合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。
例如,当a=45,b=12,调用该函数后,c=5241。
算法分析:对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。
(完整版)专升本C语言真题

05年C语言六、单项选择(10分,每题1分)1.下列变量定义正确的是________A. int 2ab; B。
float a〉b; C。
char $123 D. int *per;2.若有说明int a=1,x=2,y=3;下列不是C语言合法表达式的是A. ++9B. (float)(x) C。
a++ D. (float)x+y3.若有说明int i=1,j=2,k=3;表达式i&&j&&k的值为A。
1 B。
2 C。
3 D. 44.若有说明int a,b; 下面输入函数调用语句正确的是A。
scanf(“%d%d”,a,b); B. scanf(“%d%d”,&a,&b);C。
scanf(%d%d,a,b); D。
scanf(%d%d,&a,&b);5.下列不是关系表达式的是A。
3>5 B. 1<2〉3 C. !3〉5 D.1+2〉36。
下列对数组的定义正确的是A. int a(10);B. int a[10];C. int a{10};D.int a10;7。
下列对C程序结构的说法不正确的是A。
C程序是由一系列函数构成的 B.C程序可以有多个main()函数C.C程序中函数名不可以和变量名相同 D。
C程序中可以定义函数8.若有说明int *p,a[10],j=3;下列指针变量赋值错误的是A.p=&j;B.p=&a[j];C.p=a; D。
p=0x1000;9.若有说明int a=4;执行语句a>〉1后,变量a的值A.1B.2 C。
3 D。
410。
以只读的方式打开文本文件“test。
txt”的正确方法是A。
fopen(“test.txt",”r”); B. fopen(“test。
txt",”rb”);C。
fopen(“test”,"r”); D. fopen(“test.txt");七、填空题(10分,每题1分)a)若有说明a=-1;printf(“%d,%x,%o\n",a,a,a)的输出结果是______________。
二级C语言试题总结(八套)

第一套1.若变量已正确定义并赋值,对库函数错误调用的是A) k=scanf("%d%d",&i,&j);B) printf("\\%d\\\n",k);C) getchar(ch);D) putchar(ch);2.要求定义一个返回值为double类型的名为mysum的函数,其功能为求两个double类型数的和值,正确的定义是:A) mysum(double a,b){ return (a+b); }B) mysum(double a, double b){ return a+b; }C) double mysum(int a, intb);{return a+b; }D) double mysum(double a, double b){ retrun (a+b); }3.以下是对fun函数的正确调用:fun(a+b,fun(a+b,(a,b)));则fun函数有______个形参。
4.若有以下函数定义:myfun(double a, int n){…… }则myfun函数值的类型是A) void B) doubleC) int D) char5.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值。
以下选项中错误的程序是A) double fun( int a,int b ){…… }main(){ ┇fun( i,k );┇}B) main(){printf( "%f\n",fun( 2,10 ));┇}double fun( int a,int b ){ …… }C) double fun( int, int );main(){ ┇x=fun( i,k );┇}double fun( int a,int b ){ …… }D) main(){ double fun(int i,int y);┇x=fun( i,k );┇}double fun(int a,int b){ ……}6.若有以下函数:int fun(int x){ return (1+x*x); }则语句printf(" %d\n",fun(fun(fun(fun( 1 )))) );的输出结果____________第二套1.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()A)switch(x){ case1.0∶printf("*\n");case2.0∶printf("**\n");}B)switch(int(x)){ case1∶printf("*\n");case2∶print f("**\n");}C)switch(a+b){ case1∶printf("*\n");case1+2∶printf("**\n");}D)switch(a+b){ case1∶printf("*\n");casec∶printf("**\n");}2.执行下面程序片段的结果是()int x=123;do{ printf("=\n",x--);}while(!x);A)打印出321 B)打印出123C)不打印任何内容 D)陷入死循环3.以下程序的输出结果是()# includemain(){ int i=0,a=0;while(i<20){ for(;;){ if((i)==0)break;else i--; }i+=11;a+=i;}printf("%d\n",a);}A)21 B)32 C)33 D)114.下列与表达式“b=(a<0?-1∶a>0?1∶0)”的功能等价选项是()A)b=0;if(a>=0)if(a>0) b=1;else b=-1;B)if(a>0)b=1;else if(a<0)b=-1;elseb=0C)if(a)if(a<0) b=-1;else if(a>0)b=1;else b=0;D) b=-1;if(a)if(a>0)b=1;else if(a==0)b=0;else b=-1;5.若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()A)float B)intC)char D)double6.以下叙述中正确的是()A)在函数中必须要有return语句B)在函数中可以有多个return语句,但只执行其中的一个C)return语句中必须要有一个表达式D)函数值并不总是通过return语句传回调用处7.有以下程序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)9C)21 D)9.08.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,则对a数组元素不正确的引用是()A)a[p-a] B)*(&a[i])C)p[i] D)a[10]9.以下叙述中正确的是()A)全局变量的作用域一定比局部变量的作用域大B)静态(static)类型变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值10.若有如下程序:main(){char a[][9]={"china","Japan","USA","France"};printf("\′%s\′\n",a[2]);}则程序运行后的输出结果是()A)′Japan′B)′USA′C)USA D)′inaJapanUSAFrance′第三套1.若变量c为char类型,能正确判断出c为小写字母的表达式是()A)′a′<=c<=′z′B)(c>=′a′)||(c<=′z′)C)(′a′=C)D)(c>=′a′)&&(c<=′z′)2.下面程序的输出结果是()main(){ int x=2,y=0,z;x+=3+2;printf("%d",x);x*=y=z=4;printf("%d",x); }A)728 B)无法计算C)7,4 D)8,43.有如下程序main(){int x=1,a=0,b=0;switch(x){case 0∶b++;case 1∶a++;case 2∶a++;b++;}printf("a=%d,b=%d\n",a,b);}程序运行后的输出结果是()A)a=2,b=1 B)a=1,b=1C)a=1,b=0 D)a=2,b=24.以下选项中,正确的if-else语句是()A)if(x!=0)printf("%d",x)elseprintf("%d",-x);B)if(x!=0){x=x+y;printf("%d",x); }elseprintf("%d",-x);C)if(x!=0)x=x+y;printf("%d",x);elseprintf("%d",-x);D)if(x!=0){x=x+y;printf("%d",x)};elseprintf("%d",-x);5.有以下程序段int n=0,p;do {scanf("%d",&p);n++;}while(p!=12345 &&n<3);此处do-while循环的结束条件是()A)p的值不等于12345并且n的值小于3B)p的值等于12345并且n的值大于等于3C)p的值不等于12345或者n的值小于3D)p的值等于12345或者n的值大于等于36.若有如下程序段:main(){ int n=0;while(printf("*")){ n++;if(n<3)break; }}则下列描述正确的是()A)其中循环控制表达式与0等价B)其中循环控制表达式与’0’等价C)其中循环控制表达式是不合法的D)以上说法都不对7.C语言中main函数参数的非法表示形式是()A)main(char *argv[],int argc)B)main(int a,char**b)C)main(int y,char *x[])D)main(int argv,char *argc[])8.设有如下枚举类型定义:enum language {Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举类型Fortran的值为()A)4 B)7C)102 D)1039.阅读下述程序段:y=-1;if (x!=0)if (x>0)y=1;elsey=0;该程序段所描述的数学关系是()A)y=-1(x<0)0(x=0)1(x>0)B)y=1(x<0)0(x=0)-1(x>0)C)y=0(x<0)-1(x=0)1(x>0)D)y=-1(x<0)1(x=0)0(x>0)10.设有数组定义:char array[]="China";蚴 閍rray所占的空间为()A)4个字节 B)5个字节C)6个字节D)7个字节第四套1.有以下程序:main(){intx=0xFFFF;printf("%d\n",x--);}执行后的输出结果是()A)32767 B)FFFEC)-1 D)-327682.以下程序的输出结果是()#include#includemain(){ char str[12]={′s′,′t′,′r′,′i′,′n′,′g′};printf("%d\n",strlen(str));}A)6 B)7C)11 D)123.若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是()A)ps+2 B)s[2]C)ps[2] D)ps+=2,*ps4.关于语句“for(表达式1;表达式2;表达式3)”,下面说法中错误的是()A)for语句中的三个表达式可以同时省略B)for语句可以用于循环次数不确定的情况C)for语句中表达式2只能是关系表达式或逻辑表达式D)for语句中表达式1和表达式3可以是逗号表达式5.执行下面程序片段的结果是()int x=23;do{ printf("-",x--);}while(!x);A)打印出321 B)打印出23C)不打印任何内容 D)陷入死循环6.与y=(x>0?1∶x<0?-1∶0);的功能相同的if语句是()A)if(x>0)y=1;else if(x<0)y=-1;else y=0;B)if(x)if(x>0) y=1;else if(x<0) y=-1;else y=0;C)y=-1;if(x)if(x>0)y=1;else if(x==0) y=0;else y=-1;D)y=0;if(x>=0)if(x>0) y=1;else y=-1;7.标准库函数fgets(s,n,f)的功能是()A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C)从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存8.若有如下函数调用语句:sub(a,1,fun(b,c),d+c,(a+d,c*f));则在该函数调用语句中含有实参的个数是()A)5 B)7C)10 D)69.若要定义a为3×4的二维数组,正确的定义语句是()A)float a(3,4); B)float a[3][4];C)float a(3)(4); D)float a[3,4];10.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};int i,s=0;for (i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()A)11 B)19C)13 D)20第五套1.以下程序的输出结果是()#includemain (){int a,b,d=241;a=d/100%9b=(-1)&&(+1);printf("%d,%d,a,d"); }A)6,1 B)2,1C)6,0 D)2,02.关于if后一对圆括号中的表达式,以下叙述中正确的是()A)只能用逻辑表达式B)只能用关系表达式C)既可用逻辑表达式也可用关系表达式D)可用任意表达式3.有以下程序main(){ int a,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}程序运行后的输出结果是()A)7 B)8C)9 D)104.C语言中()A)不能使用do-while语句构成的循环B)do-while语句构成的循环必须用break语句才能退出C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环5.当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a if(c elseif(a if(b elsex=3;elesx=6;elsex=7;程序执行后,x的值为()A)1 B)2C)3 D)66.设有如下的函数funct(x)float x;{ x*=x;printf("\n%d",x);return(x);}则函数的类型()A)与参数x的类型相同 B)voidC)int D)无法确定7.在C语言中,不适用于局部变量的存储类说明符是()A)auto B)registerC)static D)extern8.有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<5;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是()A)15 B)10C)6 D)39.有以下程序intb=2;int func(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}程序运行后的输出结果是()A)4 B)6C)8 D)10第六套1.下面叙述正确的是()A)define和auto都不能定义为用户标识符B)可以把define和auto定义为用户标识符C)可以把define定义为用户标识符,但auto是C语言的关键字D)可以把auto定义为用户标识符,但define是C语言的关键字2.以下的for循环()for(x=0,y=0;(y!=123)&&(x<4);x++)A)是无限循环 B)循环次数不定C)执行4次 D)执行3次3.下述对C语言字符数组的描述中错误的是()A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较4.设有定义:int a,*p=&a,**pp= &p;,则与a=100;等价的语句为()A)**p=100; B)**pp=100;C)&*p=100; D)*pp=10;5.有以下程序int x=3;do {printf("%d",x-=2);}while(!(--x));程序运行后的输出结果是()A)1 B)30C)1-2 D)死循环6.执行下面程序的正确结果是()main(){ float a=1.9;switch(a){ case 0∶printf("0000");case 1∶printf("1111");case 2∶printf("3333");}printf("%f",a);}A)1.900000 B)111133331.900000C)33331.900000 D)00001111233331.9000007.对下述程序,正确的判断是()main (){ int a, b;scanf("%d,%d",&a,&b);if(a>b)a=b;b=a;else a++;b++;printf("%d,%d",a,b);}A)有语法错误不能通过编译B)若输入4,5则输出5,6C)若输入5,4则输出4,5D)若输入5,4则输出5,58.若有如下程序:sub(int n){intt;if(n==1)returnt=5;else t=sub(n-1)+3;returnt;}main(){printf("%d\n",sub(5));}则程序运行后的输出结果是()A)17 B)18C)19 D)209.下面各被调用函数首部书写正确的是()A)void sub(float x;float y);B)void sub(float x,y)C)void sub(float x,float y)D)void sub(float x,float y);10.设有如下程序:#include"string.h"main(){static char s1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()A)$8 B)@10C)$9 D)@9第七套1.以下程序运行后,输出结果是()#includess(char *s){char *p=s;while(*p)p++;return(p-s);}main(){char*a="abded";inti;i=ss(a);printf("%d\n",i);}A)8 B)7C)6 D)52.若有如下程序:int sub(){static int n=1;int x=1;x*=n;n++;return x;}main(){int n,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}则程序运行后的输出结果是()A)15 B)120C)34560 D)-309763.在C语言中,函数的隐含存储类别是()A)static B)autoC)extern D)register4.有以下程序:intf1(doublea){returna*a; }intf2(doublex,doubley){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(1.1,2.0);…}变量w中的值是()A)5.21 B)5C)5.0 D)0.05.下面被调用函数sub的函数值的类型是()sub(float a){float b;b=a*a+1;return b;}A)单精度型B)双精度型C)空类型 D)整型6.若有以下定义语句:doublea[5];inti=0;能正确给a数组元素输入数据的语句是()A)scanf("%lf%lf%lf%lf%lf",a);B)for(i=0;i<=5;i++)scanf("%lf",a+i);C)while(i<5)scanf("%lf",&a[i++]);D)while(i<5)scanf("%lf",a+i);7.以下程序的输出结果是()main(){ charss[16]="test\0\n\"";printf("%d,%d\n",strlen(ss),sizeof(ss));}A)4,16 B)7,7C)16,16 D)4,78.以下说法正确的是()A)宏定义是C语句,所以要在行末加分号B)可以使用#undef命令来终止宏定义的作用域C)在进行宏定义时,宏定义不能层层置换D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换9.以下程序的输出结果是()#includemain(){struct stru{int a,b;char c[6];};printf("%d\n",sizeof(stru));}A)2 B)4C)8 D)1010.若有如下定义:int s[3];则下面表达式中不能代表数组元素s[1]的地址的是()A)&s[1] B)&s[0]+1C)s+1 D)s++第八套1.若以下对fun函数的调用是正确的:x=fun(fun(a,b,c),(a+b,a+c),a+b+c);则fun函数的形参个数为()A)3 B)4C)5 D)62.若有说明:int*p, m=5; n;,以下正确的程序段是()A)p=&m;scanf("%d",&p)B)p=&n;scanf("%d",&p)C)scanf("%d",&p)p=&n;D)p=&n;p=&m;3.以下程序调用findmax函数返回数组中的最大值findmax(int*a,int n){ int*p,*s;for(p=a,s=a;p-a if()s=p;return(*s);}main(){ intx[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}在下划线处应填入的是()A)p>s B)*p>*sC)a[p]>a[s] D)p-a>p-s4.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是()A)p=2*(int*)malloc(sizeof(int));B)p=(int*)calloc(2*sizeof(int));C)p=(int*)malloc(2* sizeof(int));D)p=2*(int*)calloc(sizeof(int));5.下列程序的输出结果是()main(){char *p1,*p2,str[50]="xyz";p1="abcd";p2="ABCD";strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);}A)xyabcAB B)abcABzC)Ababcz D)XycdBCD6.以下叙述中不正确的是()A)一个变量的作用域完全取决于变量定义语句的位置B)全局变量可以在函数以外的任何部位进行定义C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用D)一个变量说明为static存储类是为了限制其他编译单位的引用7.交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()A)~ B)&C)^ D)|8.fscanf函数的正确调用形式是()A)fscanf(fp,格式字符串,输出表列);B)fscanf(格式字符串,输出表列,fp);C)fscanf(格式字符串,文件指针,输出表列);D)fscanf(文件指针,格式字符串,输入表列);9.以下程序的运行结果是()# define MAX 10int a[MAX],i;main(){ printf("\n");sub1();sub3(a);sub2();sub3(a);}sub2(){ int a[MAX],i,max;max=5;for(i=0;i }sub1(){for(i=0;i }sub3(int a[]){ int i;for(i=0;i printf("\n");}A)0 2 4 6 8 10 12 14 16 180 1 2 3 4B)0 1 2 3 40 2 4 6 8 10 12 14 16 18C)0 1 2 3 4 5 6 7 8 90 1 2 3 4D)0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 18第一套答案:1.C 2.D 3.2 4.C 5.B 6.677第二套答案:1.C 2.B 3.B 4.B 5.D 6.B 7.B 8.D 9.B 10.B 第三套答案: 1.D 2.A 3.A 4.B 5.D 6.B 7.A 8.C 9.C 10.C 第四套答案:1.C 2.A 3.A 4.C 5.B 6.A 7.B 8.A 9.B 10.B 第五套答案:1.B 2.D 3.B 4.D 5.B 6.C 7.D 8.B 9.B第六套答案:1.C 2.C 3.C 4.B 5.C 6.B 7.A 8.A 9.C 10.D 第七套答案:1.D 2.B 3.C 4.C 5.D 6.C 7.A 8.B 9.D 10.D 第八套答案:1.A 2.D 3.B 4.C 5.D 6.B 7.C 8.D 9.D。
c程序设计(谭浩强)第七章习题答案

int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);
c语言教材第七章习题答案

c语言教材第七章习题答案《C语言教材第七章习题答案》在学习C语言的过程中,掌握基本的语法和逻辑结构是非常重要的。
第七章的习题涉及到了一些较为复杂的概念和技巧,需要我们对C语言有更深入的理解和掌握。
1. 题目:编写一个程序,计算并输出1到100之间所有偶数的和。
答案:我们可以使用循环结构和条件判断来解决这个问题。
具体的代码如下: ```#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("1到100之间所有偶数的和为:%d\n", sum);return 0;}```这段代码使用了for循环来遍历1到100之间的所有数字,然后通过条件判断判断是否为偶数,如果是偶数则累加到sum中,最后输出sum的值。
2. 题目:编写一个程序,输出九九乘法表。
答案:九九乘法表是一个经典的练习题,通过嵌套循环可以很容易地实现。
具体的代码如下:```#include <stdio.h>int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d*%d=%d\t", j, i, i*j);}printf("\n");}return 0;}```这段代码使用了两层嵌套的for循环,外层循环控制行数,内层循环控制列数,通过printf语句输出乘法表中的每一项。
通过解答以上两道习题,我们不仅复习了C语言中的循环结构和条件判断,还锻炼了我们的编程思维和逻辑能力。
希望大家在学习C语言的过程中能够多多练习,不断提升自己的编程水平。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言第七套题一、选择题1、下列叙述中正确的是()。
A) 循环队列是队列的一种链式存储结构B) 循环队列是队列的一种顺序存储结构C) 循环队列是非线性结构D) 循环队列是一种逻辑结构参考答案:B【解析】在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
2、下列关于线性链表的叙述中,正确的是()。
A) 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B) 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C) 进行插入与删除时,不需要移动表中的元素D) 以上说法均不正确参考答案:C【解析】一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。
线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。
3、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为()A) 16 B) 10 C) 6 D) 4参考答案:A【解析】根据二叉树的性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中度为2的结点是5-1=4个,所以度为1的结点的个数是25-5-4=16个。
4、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。
A) 外模式B) 内模式C) 概念模式D) 逻辑模式参考答案:B【解析】数据库系统的三级模式是概念模式、外模式和内模式。
概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。
外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。
内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B)。
5、在满足实体完整性约束的条件下()。
A) 一个关系中应该有一个或多个候选关键字B) 一个关系中只能有一个候选关键字C) 一个关系中必须有多关键字个候选D) 一个关系中可以没有候选关键字参考答案:A【解析】实体完整性约束要求关系的主键中属性值不能为空值,所以选择A)。
6、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是( )。
A) 自然连接B) 交C) 除D) 并参考答案:C【解析】如果S=T/R,则S称为T除以R的商。
在除运算中S的域由T中那些不出现在R中的域所组成,对于S中的任一有序组,由它与关系R中每个有序组所构成的有序组均出现在关系T中。
所以本题选择C)。
7、下面描述中,不属于软件危机表现的是()。
A) 软件过程不规范B) 软件开发生产率低C) 软件质量难以控制D) 软件成本不断提高参考答案:A【解析】软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
所以选择A)。
8、下面不属于需求分析阶段任务的是()。
A) 确定软件系统的功能需求B) 确定软件系统的性能需求C) 需求规格说明书评审D) 制定软件集成测试计划参考答案:D【解析】需求分析阶段的工作有:需求获取;需求分析;编写需求规格说明书;需求评审,所以选择D)。
9、在黑盒测试方法中,设计测试用例的主要根据是()。
A) 程序内部逻辑B) 程序外部功能C) 程序数据结构D) 程序流程图参考答案:B【解析】黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择B)。
10、在软件设计中不使用的工具是()。
A) 系统结构图B) PAD图C) 数据流图(DFD图) D) 程序流程图参考答案:C【解析】系统结构图是对软件系统结构的总体设计的图形显示。
在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。
PAD图是在详细设计阶段用到的。
程序流程图是对程序流程的图形表示,在详细设计过程中用到。
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C)。
11、以下选项中关于程序模块化的叙述错误的是A) 可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序B) 把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C) 把程序分成若干相对独立的模块,可便于编码和调试D) 可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序参考答案:A【解析】程序模块化思想中,可以采用自顶向下、逐步细化的方法。所以选项A中"自底向上"的说法是错误的。12、以下叙述中正确的是A) 用C语言编写的程序只能放在一个程序文件中B) C程序书写格式严格,要求一行内只能写一个语句C) C程序中的注释只能出现在程序的开始位置和语句的后面D) C程序书写格式自由,一个语句可以写在多行上参考答案:D【解析】C语言编写的程序可以放置于多个程序文件中,所以A错误。C程序中的一行可以有多条语句,所以B错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C错误。13、以下不合法的数值常量是A) 8.0E0.5 B) 1e1 C) 011 D) 0xabcd参考答案:A【解析】A选项中E后面的指数必须为整型数据,所以A错误。C选项中011表示的是八进制常量,0xabcd表示的是十六进制常量。14、以下关于C语言数据类型使用的叙述中错误的是A) 若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型B) 若要保存带有多位小数的数据,可使用双精度类型C) 若只处理"真"和"假"两种逻辑值,应使用逻辑类型D) 整数类型表示的自然数是准确无误差的参考答案:C【解析】C语言中没有逻辑类型,所以C错误。若要保存带有多位小数的数据,可以用单精度类型也可以用双精度类型。处理包含不同类型的相关数据可以定义为结构体类型。整数类型可以无误差的表示自然数。15、设有定义:int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是A) ++k B) k+=1 C) k++ D) k+1参考答案:C【解析】++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值自增1,所以C选项中表达式的值为0,而其他三个表达式的值均为1,所以选择C。16、有如下程序段:int x=12;double y=3.141593;printf("%d%8.6f", x, y);其输出结果是A) 123.141593 B) 12 3.141593 C) 12, 3.141593 D) 123.1415930参考答案:A【解析】printf函数中格式字符"%8.6"的含义是:变量y的输出宽度为8(包括小数点),小数点后面保留6位小数,且右对齐。所以选择A。17、已知字符'A'的ASCII代码值是65,字符变量c1的值是'A',c2的值是'D'。
则执行语句printf("%d,%d", c1, c2-2 );的输出结果是A) 65,68 B) A,68 C) A,B D) 65,66参考答案:D【解析】打印时以%d整型格式打印输出,所以字符标量c1的值打印出来就是65,从c2-2的值打印出来就是68-2,即66。所以选择D。18、以下选项中,当x为大于1的奇数时,值为0的表达式是A) x%2==0 B) x/2 C) x%2!=0 D) x%2==1参考答案:A【解析】算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。D选项的值为真,即1。19、有以下程序#include <stdio.h>main(){ int x;scanf("%d", &x);if(x<=3) ; elseif(x!=10) printf("%d\n", x);}程序运行时,输入的值在哪个范围才会有输出结果A) 小于3的整数B) 不等于10的整数C) 大于3或等于10的整数D) 大于3且不等10的整数参考答案:D【解析】根据代码可知如果x的值小于3,执行空语句,不进行打印操作。如果x的值大于3,再判断x的值是否不等于10,如果不等于10就打印x的值,所以选择D选项。20、有以下程序#include <stdio.h>main(){ int a = 7;while ( a-- ) ;printf ("%d\n", a);}程序运行后的输出结果是A) 0 B) -1 C) 1 D) 7参考答案:B【解析】a- -的含义是先用后减1,所以当a的值为0时,跳出循环,但是仍要执行a-- ,a的值变为-1。
21、有以下程序#include <stdio.h>main(){char b,c;int i;b= 'a';c = 'A';for (i=0; i<6; i++){if (i%2) putchar(i+b);else putchar(i+c);}printf("\n");}程序运行后的输出结果是A) abcdef B) ABCDEF C) aBcDeF D) AbCdEf参考答案:D【解析】函数的含义是如果i的值能被2整除,以字符格式打印输出i+c的值,如果i的值不能被2整除打印i+b的值。第一次i值为0,执行else语句打印字符'A',第二次i值为1,打印1+b的值即字符'b',第三次i值为2,打印字符'C',依此类推选择D选项。22、有以下程序#include <stdio.h>main(){int i, j, x=0;for(i=0; i<2; i++){x++;for( j=0; j<=3; j++){if(j%2) continue;x++;}x++;}printf("x=%d\n",x);}程序执行后的输出结果是A) x=4 B) x=8 C) x=6 D) x=12参考答案:B【解析】coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次执行外循环i 的值为0,执行x++,x的值变为1,第一次执行内层循环j的值为0,不满足if条件,执行x++,x的值变为2,第二次内循环j的值为1,if条件成立,跳出本次循环,第三次执行内循环j的值为2,不满足if条件,x的值变为3,第四次执行内循环j的值为3满足条件跳出本次内循环,x的值加1,即为4,第一次外循环结束。第二次执行外循环时,同理,i的值被加了,4次,变为8,所以选择B选项。23、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A) 函数的形参和实参分别占用不同的存储单元B) 形参只是形式上的存在,不占用具体存储单元C) 同名的实参和形参占同一存储单元D) 函数的实参和其对应的形参共占同一存储单元参考答案:A【解析】本题重点考察的是函数的形参和实参。