C程序设计试卷八及答案

C程序设计试卷八及答案
C程序设计试卷八及答案

《C语言程序设计》试题八

一、选择题

1.一个C语言程序是由()构成。

A.语句B.行号C.数据D.函数

2.下面标识符中正确的是()。

A.a#bc B.123ABC C.sime D .Y·M·D

3.在C语言中,存储一个整型、字符型、双精度实型变量所需的字节数是()。)。)。)。

A.2、1、8 B.4、1、4

C.4、1、4 D.2、2、8

4.为了避免嵌套的条件分支语句 if--else中的else总是与()组成成对关系。

A. 缩排位置相同的

B. 在其之前未配对的

C. 在其之前未配对的最近的if

D. 在同一行上的if

5.下列表达式的结果正确的是()。

int a,b,c,d;

a=b=c=d=2;

d=a+1==3?b=a+2:a+3

A.2 B.4 C.3 D.5

二、填空题

1.在C语言中,正确的标识符是由______________________组成的,且由_______________开头的。

2. 设x=3,那么表达式y=(++x)+(++x)的结果为_________,表达式执行后,变量x的结果为_________。

3. 一个变量的指针是指_________________________________________________________________。

4. 组成数组元素的特点是_______________________________________________;

组成结构体元素的特点是________________________________________________。

5. 在C语言程序中,对文件进行操作首先要______________________________;然后对文件进行操作,

最后要对文件实行__________________________________操作,防止文件中信息的丢失。

6. 对字符串进行操作的函数有_______________________________________________________等。

7. C语言程序是由___________________构成的,而C语言的函数是由____________________构成的。

8. 要想定义整型变量 a , 实型变量 b , 字符型的变量c,应该使用的正确语句为______________________________________________________________________________________。

9. 写出下面表达式的值

3*5/7+7%3_______________________ x=2 ; y=4; (x++)+y _________________________

3+4>=7-10_______________________ 3>4 ? 3%2: 1 ______________________________

x=2,y=2;++x&&++y_________________ x=3 ; x+=x-=2 ________________________ ______

三、判断题

1. C语言的一个特点是可以对计算机硬件进行操作()

2. 在循环过程中,使用break语句和continue语句的作用是一样的()

3. 在函数的定义和调用过程中,形式参数和实在参数数目可以不一致()

4. 指针变量可以接收任何类型的值()

5. 在C语言程序设计中,字符数组和字符串不是完全一样的概念()

6. 文件指针是结构体类型,用符号file来表示()

7. 选择结构(if语句)和循环结构都可以使用嵌套形式()

8. 在定义二维数组时,可以将该数组的两个维数全部省略()

9. 逻辑运算符&& || ! 的运算顺序是! 优先于&& 优先于|| ()

10. 任何数组都可以实现整体使用操作()

四、程序填空题

1.下面是实现打印九九乘法表的程序,请在画线的位置填上适当的语句,使程序(段)完整。

main()

{ int i , j , k;

for(i=1;_____________; i++)

{ for(j=1;______________; j++)

printf(“%d*%d=%d”,_______________);

printf(________________);

}

}

2.自己设计一个自定义函数,实现求两个数的最大数的功能,自定义函数如下:

int max(x,y)

int x , y ;

{

}

3.设有如下面的结构体,请用C语言的语句定义出正确的结构体形式:

学生信息:包括(姓名,性别,年龄,分数),并且定义变量stud和数组stud1[30]

struct student

{

}

4. 根据给出的程序段,请写出正确的结果

x=1 ; sum=1 ;

for (x=1 ; x<=5 ; x++)

sum=sum*x;

上面的程序段实现的功能是:______________________________________________________ ;

其运行结果为______________________________________________________________________。

5.设有如下的语句。

int a=43,b,c;

b=23;

c=a++ * --b;

(1)上面的语句段执行后a= b= c=

(2)简述a++和++a的相同点和不同点:

6.设有如下的程序:

main( )

{ int i=3,*p1;

int a[3]={15,30,45},*p2;

p1=&i; p2=a;

p1=p2+2;

printf(“%d,%d\n”,*p1,*p2);

}

程序运行结果是:

五、编程题(25分)

1.编程实现对10个整数进行冒泡排序(要求排成升序)。

2.编程实现求下面的式子的结果

3.编程实现将文本文件file1.dat中的内容复制到文本文件file2.dat中去

六、附加题

用C语言程序实现在已知链表中的第三个位置插入数值为a的程序

《C语言程序设计》试题八答案

一、选择题

1.D 2. C 3. A 4. C 5. B 二、填空题

1.字母、数字、下划线;以字母、下划线开头。2.10;5。 3. 该变量的地址。

4.一组数据类型相同的元素构成的;一组数据类型不同的元素构成的。

5.打开;关闭。6.字符串长度、取子字符串、字符串替换、字符串复制等。

7.函数;语句。8.int a ; float b ; char c ;

9 9 9.3 6 1 1 1 2

三、判断题

1. 对

2. 错

3. 错

4. 错

5. 对

6. 错

7. 对

8. 错

9.对 10. 错

四、程序填空题

1. i<=9 j<=9

printf(“%d*%d=%d”,i,j,i*j);

printf(“\n”); i , j , k;

2. int z;

if (x>=y)z=x;

else z=y;

return z;

3. char name[20];

char sex;

int age;

float score;

4. 实现功能:计算连续数之积,即sum=1*2*3*4*5 ;

运行结果:sum=120

5. 44 22 946

a++:先加1,后使用表达式的值;++a表示先加1,后使用表达式的值,它们最后的结果使a 加1。

6.45,15

五、编程题

1.编程实现对12个整数进行冒泡排序(要求排成升序)。

Main()

{ int a[12]; int m,n,p;

for (m=0;m<=11;m++)(m=0;m<=11;m++)

scanf(“%d”,&a[m]);

for (m=0;m<=11;m++)

for(n=0;n<11-m;n++)

if(a[n]>a[n+1])

{ p=a[n]; a[n]=a[n+1]; a[n+1]=p; }

for (m=0;m<=11;m++)

printf(“%d”,a[m]); }

2.编程实现求下面的式子的结果

# include “math.h”

main()

{ float x,y;

scanf(“%f”&x);

if (x>6) y=(x-3)/(2*x-12);

else y=-2*x*x+4*x-10;

printf(“y=%f”,y); }

3.编程实现将文本文件file1.dat中的内容复制到文本文件file2.dat中去

main()

{ char ch;

FILE *fp1,*fp2;

Fp1=fopen(“file1.dat”, “r”);

Fp2=fopen(“file2.dat”, “w”);

Ch=fgetc(fp1);

While(ch!=EOF)

{ fputc(ch,fp2);

Ch=fgetc(fp1); }

Fclose(fp1);

Fclose(fp2); }

六、附加题

p=H;K=0;

While(p!=NULL && k

{ p=p->next;

k++; }

if(p==NULL && H!=NULL) printf(“this is invilid”);

else

{ q=(Struct Linklist *)malloc(sizeof(Struct Linklist));

q->data=x; q->data=x;

q->next=p->next;

p->next=q; }

C语言程序设计习题参考答案第四章(数组)

第四章数组参考答案 一、选择题:1、 B 2、C 3、D 4、C 5、C 6、B 7、D 8、B 9、B 10、A 二、填空题: 1、首地址 2、按行存放 3、一个字符 4、′\0′ 5、字符数组名或字符串 6、9 0 7、6 8、j-1 str[j-1] 9、62 10、s1[i]=s2[i]; 三、改错题 1、错误语句:int a[3][ ]={2,4,6,8,10,12,14,16,18}; 正确语句:int a[ ][3]={2,4,6,8,10,12,14,16,18}; 2、错误语句:if (str[2]>string) string=str[2]; 正确语句:if (strcmp(str[2],string)>0) strcpy(string,str[2]); 3、错误语句:char c[5]={'C','h ','i','n','a '}; 正确语句:char c[6]={'C','h ','i','n','a '};或char c[ ]={“China”}; 4、错误语句:int a[3]={3*0} ; 正确语句:int a[4]; 5、错误语句:scanf(“%d%d%d”,&a); 正确语句:for (i=0; i<3; i++) scanf(“%d”,&a[i]); 或scanf(“%d%d%d”, &a[0], &a[1], &a[2]); 四、编程题 1、用数组来处理,求解Fibonacci数列前40项:1,1,2,3,5,8,13,21…。 #include void main() { int i; int t[40]={1,1}; for(i=2;i<40;i++) t[i]=t[i-2]+t[i-1]; for(i=0;i<40;i++) { if(i%5==0) printf("\n"); printf("%15d",t[i]); } } 2、用选择法对20个整数排序(由大到小)。 #include void main() {int i,j,min,t,x[20]; for(i=0;i<20;i++) scanf("%d",&x[i]); for(i=0;i<19;i++) {min=i; for(j=i+1;j<20;j++) if(x[min]>x[j])min=j; t=x[i];

C语言程序设计教程 清华大学出版社 陈明主编 第4章答案

第4章习题解答 一、选择题 1.在C语言中,函数返回值的类型最终取决于 A)函数定义时的函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型 解析:函数返回值类型最终取决于定义函数时所定义的函数类型。 答案:A 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); 解析:选项A中"abc"是字符串,与形参不匹配:由于Fun函数的返回值类型为void,所以选项B中进行了赋值操作是不正确的;在选项C中,'65'是不合法的字符形式,单引号中应该是单个字符。只有选项D才是合法的函数调用形式。 答案:D 3.有以下程序: /* 文件路径名:ex4_1_3\main.c */ #include /* 标准输入/输出头文件*/ int f1(int x, int y) { return x > y ? x : y; } int f2(int x, int y) { return x > y ? y : x; } int main(void) /* 主函数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); /* 输出e,f,g */ return 0; /* 返回值0, 返回操作系统*/ } 程序运行后的输出结果是。 A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7 解析:函数f1用于求两个数中的最大数,而函数f2用于求两个数中的最小数。因此有:e=f2(f1(a,b),f1(c,d))=f2(f1(4,3),f1(5,2))= f2(4,5)=4; f=f1(f2(a,b),f2(c,d)) =f1(f2(4,3),f2(5,2)) =f1(3,2)=3; g=a+b+c+d-e-f=4+3+5+2-4-3=7。

c程序设计(第四版)谭浩强-课后答案.pdf(2)(最新整理)

C 语言课后习题答案-第四版- 谭浩强(1-7) 第一章 #include int main ( ) { printf ("**************************\n\n"); printf(" Very Good!\n\n"); printf ("**************************\n"); return 0; } #include int main() {int a,b,c,max; printf("please input a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if (max

printf("The largest number is %d\n",max); return 0; } 第3 章 #include #include int main() {float p,r,n; r=0.1; n=10; p=pow(1+r,n); printf("p=%f\n",p); return 0; } #include #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); // 一次存5 年期 p2=p*(1+2*r2)*(1+3*r3); // 先存2 年期,到期后将本息再存3 年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3 年期,到期后将本息再存2 年期 p4=p*pow(1+r1,5); // 存1 年期,到期后将本息存再存1 年期,连续存5 次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次 printf("p1=%f\n",p1); // 输出按第1 方案得到的本息和 printf("p2=%f\n",p2); // 输出按第2 方案得到的本息和 printf("p3=%f\n",p3); // 输出按第3 方案得到的本息和 printf("p4=%f\n",p4); // 输出按第4 方案得到的本息和 printf("p5=%f\n",p5); // 输出按第5 方案得到的本息和 return 0; } #include #include

C程序设计第四版谭浩强完整版课后习题答案

C程序设计第四版谭浩强完整版课后习题答案集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 向屏幕输出文字. #include<>代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to \n"); return 0; } P008 求两个数的和. #include<> int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum);

return 0; } P008 调用函数比较两个数的大小. #include<> int main() { int max(int x,int y); int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c); return 0; } int max(int x,int y) { int z; if (x>y) z=x; else z=y; return(z); }

P015 三个数的大小.(数字0表示课后练习题) #include<> int main() { int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); printf("The max is :%d .\n",d); } int max(int x , int y , int z) { int m; if (x>y && x>z) m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); }

C程序设计(第四版)(谭浩强)完整版_课后习题答案

C程序设计(第四版)(谭浩强)第一章课后习题答案 P006 1.1 向屏幕输出文字. #include//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找. int main() { printf("Welcome to https://www.360docs.net/doc/954024716.html,\n"); return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;. } P008 1.2 求两个数的和. #include int main() { int a,b,sum; a=5; b=4; sum=a+b; printf("The sum is %d .\n",sum); return 0; } P008 1.3 调用函数比较两个数的大小. #include int main() { int max(int x,int y); //被调用函数在主函数后面,用前先声明. int a,b,c; scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误. c=max(a,b); //a,b作为实参传入被调用函数中. printf("The max is %d .\n",c); return 0; } int max(int x,int y) //定义了两个形参. {

int z; //z属于局部变量,可与主函数中相同名字. if (x>y) z=x; else z=y; return(z); //z作为整个程序的出口值,赋给主函数中的c. } #include int main() { int a,b,c,d; //d是用于存储最大值的. int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明. printf("Please input 3 numbers :\n"); scanf("%d %d %d",&a,&b,&c); d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算. printf("The max is :%d .\n",d); // d可以换成max(a,b,c). } int max(int x , int y , int z) { int m; if (x>y && x>z) //求三者之大的一种方法. m=x; if (y>x && y>z) m=y; if (z>y && z>x) m=z; return (m); //返回值m给主函数中的d. } C程序设计(第四版)(谭浩强)第2章课 后习题答案 算法——程序的灵魂

最新C++程序设计基础课后答案--第四章

4.1 阅读下列程序,写出执行结果 1.#include void main() { int i, conut=0, sum=0 ; float average ; int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ; for( i=0; i<10; i++ ) { if( a[i] % 2 == 0 ) continue ; sum += a[ i ] ; conut ++ ; } average = sum / conut ; cout << "conut = " << conut << '\t' << "average = " << average << endl ; } 2.#include void main() { int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; int *p = a , sum = 0 ; for( ; p=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main()

c语言程序设计第四版第四章答案谭浩强

第四章 什么是算术运算什么是关系运算什么是逻辑运算 解:略。 C语言中如何表示“真”和“假”系统如何判断一个量的“真”和“假” 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include <> main() { int a,b,c; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)a:b; /* 将a和b中的大者存人temp中 */ max=(temp>c)temp:c; /* 将a和b中的大者与c比较,取最大者*/ printf("3个整数的最大数是%d\n”,max); }

c语言程序设计第四章习题答案

第四章选择结构 1:实现输入一个字符的大小写字母的转换 #include void main() {char x='a'; printf("输入x:\n"); scanf("%c",&x); if( x>='A' && x<='Z') { x=x+32; /*是大写,转换为小写,至于为什么要+32吗,请看看 大小写字母的ASCII码差值*/ } else if( x>='a' && x<='z') { x=x-32; /*是小写,转换为大写*/ } /*其它不用理*/ printf("%c\n",x); } 2:输入一个大写字母实现,输出字母表中的前后字母,但是当时A 或是Z时提示输出的“没有前面的字母”,“没有后面的字母” #include void main() {char x; printf("输入一个大写字母x:\n"); scanf("%c",&x); if (x=='A') {printf("没有前面的字母");} if( x=='Z') { printf("没有后面的字母");} else// (x>'A'||x<'Z') {printf("%c, %c",x-1,x+1);} } 3:实现的是对百分制的评等级

#include void main() { float x; printf("请输入学生的成绩x的值\n"); scanf("%f",&x); if(x>=90&&x<=100) {printf("等级为A ");} else { if (x>=80&&x>=89) {printf("等级为B "); } else if (x>=70&&x<=79) {printf("等级为C "); } else if (x>=60&&x<=69) {printf("等级为D "); } else { printf("等级为E "); } } } 4:知道今天的日期,年月日,求出明天的年月日 #include int main() { int year,month,day; int maxdays[]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入年月日,中间用空格隔开!\n"); scanf("%d %d %d",&year,&month,&day); if(year%400==0 || (year%4==0 && year%100!=0)) maxdays[1]=29;//闰年二月最大值是29 if(month>12 || month<1) { printf("日期不合法!\n"); return 0; } if(day>maxdays[month-1])

c语言程序设计第四版第九章答案谭浩强

第九章 9.1定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。解:Struct {int year; int month; int day; }date; main() {int days; printf(“Input year,month,day:”); scanf(“%d,%D,%d”,&date.year,&date.month,&date.day); switch(date.month) {case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break; case 6: days=date.day+31; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break; case 9: days=date.day+243; break; case 10: days=date.day+273; break; case 11: days=date.day+304; break; case 12: days=date.day+334; break; } if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3)days+=1; printf(“\n%d/%d is the %dth day in%d.”,date.month,data.day,days,date,year); } 9.2写一个函数days,实现上面的计算。由主函数将年、月、日传递给days 函数,计算后将日数传回主函数输出。 解:struct y_m_d {int year: int month; int day; }date; intdays(struct y_m_d date1) {int sum; switch(data.month) {case 1:sum=date1.day; break; case 2:sum=date1.day+31; break; case 3:sum=date1.day+59; break; case 4:sum=date1.day+90; break; case 5:sum=date1.day+120; break; case 6:sum=date1.day+151; break;

C语言程序设计教程第四章练习题解析最新版

单选题 1、关于C语言中的函数,下列描述正确的是() A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的嵌套均不可以嵌套 D.函数的定义和函数的调用均不可以嵌套 答案:B 解析:函数的定义不可以嵌套,但函数的调用可以嵌套 2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A 解析:(v1, v2),(v3,v4,v5)和v6一共三个实参 3、关于C语言中print()函数与scanf()函数,下列描述中正确的是() A.printf()函数可以向任何地方输出数据 B.printf()只向控制台输出数据 C.scanf()只能输入英文字母和数字 D.scanf()函数可以识别输入的空格 答案:B 解析:printf()是向控制台输出的函数 4、在C语言中,内部函数需要添加的关键字是() A.extern B.static C.this D.auto 答案:B 解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。 5、当调用时,会调用内部函数 A.当调用时,会调用内部函数 B.当调用时,会调用外部函数 C.当调用时,会调用两次,先调用内部函数再调用外部函数 D.都不调用,会报错 答案:A 解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是() A.extern B.static C.this D.auto

解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字 7、关于C语言中的局部变量,下列描述中错误的是() A.局部变量就是在函数内部声明的变量 B.局部变量只在函数内部有效 C.局部变量只有当它所在的函数被调用时才会被使用 D.局部变量一旦被调用,其生存周期持续到程序结束 答案:D 解析:当函数调用结束时局部变量就会失去作用 8、关于C语言中的全局变量,下列描述中正确的是() A.全局变量的作用域一定比局部变量的作用域范围大 B.静态类别变量的生存周期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量 D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 答案:B 解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用; 选项3不对:除了C++的引用类型参数,所有函数的形参都是局部变量; 选项4不对:static变量定义时就存储地全局区,初始化为0; 9、当全局变量与局部变量重名时,那么在调用时() A.局部变量会被屏蔽 B.全局变量会被屏蔽 C.都不会调用,系统会报错 D.会调用两次,先调用局部变量,再调用全局变量 答案:B 解析:当局部变量与全局变量重名时,全局变量会被屏蔽。 10、在C语言中,关于变量的作用域,下列描述中错误的是() A.局部变量只在整个函数的运行周期中有效 B.全局变量的作用域为整个程序的运行周期 C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量 D.全局变量会覆盖掉所有与它重名的局部变量 答案:D 解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉 11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量() A.只在该复合语句中有效,在该复合语句外无效 B.在该函数中任何位置都有效 C.在本程序的原文件范围内均有效 D.此定义方法错误,其变量为非法变量 答案:D 解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量 4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的 12、C语言程序的基本单位是()。 A.程序行

c语言第4章 选择结构程序设计习题答案

第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法类似。法一:先求前两个数的最值,再用前两个数的最值和第三个数比较即得结果。法二:先假设第一个数是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: 法一: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

C语言程序设计第四版第四章答案 谭浩强

第四章 4.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 解:略。 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。例如3&&5的值为“真”,系统给出3&&5的值为1。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1) a+b>c&&b==c (2) a||b+c&&b-c (3) !(a>b)&&!c||1 (4) !(x=a)&&(y=b)&&0 (5) !(a+b)+c-1&&b+c/2 解: (1) 0 (2) 1 (3) 1 (4) 0 (5) 1 4.4 有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一 #include main() { int a,b,c; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); if(a main() { int a,b,c,temp,max; printf("请输入3个整数:"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; /* 将a和b中的大者存人temp中*/ max=(temp>c)?temp:c; /* 将a和b中的大者与c比较,取最大者*/ printf("3个整数的最大数是%d\n”,max); }

C语言程序设计教程第四章练习题解析(20200930222025)

单选题 1、关于C 语言中的函数,下列描述正确的是( ) A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B?函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的嵌套均不可以嵌套 D?函数的定义和函数的调用均不可以嵌套 答案:B 解析:函数的定义不可以嵌套,但函数的调用可以嵌套 2、定义一个函数:exce((v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个 A.3 B.4 C.5 D.6 答案:A 解析:(v1, v2),(v3,v4,v5)和v6 一共三个实参 3、关于 C语言中print()函数与scanf()函数,下列描述中正确的是() A. printf() 函数可以向任何地方输出数据 B. printf() 只向控制台输出数据 C. sca nf()只能输入英文字母和数字 D. sca nf()函数可以识别输入的空格 答案:B 解析:printf() 是向控制台输出的函数 4、在C语言中,内部函数需要添加的关键字是( ) A. extern B. static C. this D. auto 答案:B 解析:在定义内部函数时,需要在函数的返回值类型前面添加static 关键字(又称为静态函数)。 5、当调用时,会调用内部函数 A. 当调用时,会调用内部函数 B. 当调用时,会调用外部函数 C. 当调用时,会调用两次,先调用内部函数再调用外部函数 D都不调用,会报错 答案:A 解析:当内部函数与外部函数重名时,会优先调用内部函数 6、在C语言中,声明外部函数需要添加的关键字是( ) A. extern B. static C. this D. auto

C程序设计第四版第四章答案

//5.输入一个小于1000的正数,先判断是否小于1000,若小于输出平方根的整数//部分,否则重新输入。 /*#include #include double Proot(double n) { double d; if(n>1000) { printf("重新输入\n"); } else { d=(double)sqrt(n); } return d; } int main() { printf("%.0f\n",Proot(9)); printf("%.0f\n",Proot(19)); printf("%.0f\n",Proot(1119)); return 0; }*/ //6.当x<1时,y=x,当1<=x<10时,y=2x-1;当x>=10时,y=3x-11.编写程序。 /*#include double Fun(double x) { double y; if(x<1) { y=x; } else if(x>=1&&x<10) { y=2*x-1; } else { y=3*x-11;

} return y; } int main() { printf("%f\n",Fun(0)); printf("%f\n",Fun(8.9)); printf("%f\n",Fun(11110)); printf("%f\n",Fun(-1.5)); return 0; }*/ //7.当x<0时,y=-1,当x=0时,y=0;当x>0时,y=1.编写程序。/*#include double Fun(double x) { double y; if(x<0) { y=-1; } else if(x==0) { y=0; } else { y=1; } return y; } int main() { printf("%f\n",Fun(0)); printf("%f\n",Fun(10)); printf("%f\n",Fun(-0.01)); return 0; }*/ //8.成绩分等级 /*#include

C语言程序设计第四版第四章答案 谭浩强

第四章 4.1什么是算术运算?什么是关系运算?什么是逻辑运算?解: 略。 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?解: 设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0表示。 但是判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。 例如3&&5的值为“真”,系统给出3&&5的值为 1。 4.3写出下面各逻辑表达式的值。 设a=3,b=4,c= 5。 (1) a+b>c&&b==c(2) a||b+c&&b- c(3) !(a>b)&&!c||1(4) !(x=a)&&(y=b)&&0(5) !(a+b)+c-1&&b+c/2解: (1) 0(2) 1(3) 1(4) 0(5) 14.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 解: 方法一#include main(){ int a,b,c;printf("请输入3个整数: ");scanf("%d,%d,%d",&a,&b,&c);if(a

程序如下: #include main(){ int a,b,c,temp,max;printf("请输入3个整数: ");scanf("%d,%d,%d",&a,&b,&c);temp=(a>b)?a: b;/*将a和b中的大者存人temp中*/max=(temp>c)?temp: c;/*将a和b中的大者与c比较,取最大者*/printf("3个整数的最大数 是%d\n”,max);} 4.6有一函数: 写一程序,输入x值,输出y值。 解: #include main(){int x,y;printf("输入x: ");scanf("%d",&x);if(x<1)/* x<1 */{ y=x;printf("x=%3d, y=x=%d\n",x,y);}else if (x<10)/* 1≤x-10 */{ y=2*x-1;printf("x=%3d, y=2*x-1=%d\n",x,y);}else/* x≥10 */{ y=3*x-11;printf("x=%3d, y=3*x-11=%d\n",x,y);}} 4.8给一个百分制成绩,要求输出等级’A’、’B’、’C’、’D’、’E’。 90分以上为’A’,80~90分为’B’,70~79分为’C’,60分以下为’D’。 解: 程序如下: #include main(){ float score;char grade;printf("请输入学生成绩: ");scanf("%f",&score);while(score>100||(score<0){ printf("\n输入有误,请重新输入: ");scanf("%f",&score);}switch((int)(score/10)){ case 10: case 9:

C程序设计语言 (第二版) 课后答案第四章

Exercise 4-1 Write the function strrindex(s,t) , which returns the position of the rightmost occurrence of t in s , or -1 if there is none. #include #define MAXLINE 1000 int getline(char line[], int max); int find_the_situaion(char t[],char s[]); int count(char v[]); void main() { char target[MAXLINE]; char line[MAXLINE]; while (getline(line, MAXLINE) > 0) { printf("%d", find_the_situaion(line, target)); } } int getline(char s[], int lim) { int c, i; i = 0; while (--lim > 0 && (c = getchar()) != EOF && c != '\n') s[i++] = c; if (c == '\n') s[i++] = c; s[i] = '\0'; return i; } int find_the_situaion(char t[], char s[]) { int i, j, k; int b = count(s); int c = count(t); for (i = 0; s[i] != '\0'; i++) { for (j = i, k = 0; t[k] != '\0' && s[j] == t[k]; j++,k++) ; if(k==b+1) { return c - i - b; } } return -1;

相关文档
最新文档