超星C语言程序设计_28课后答案(学习通2023完整答案)

分类: 建筑类问答发布于:2024-06-02 13:12:24ė34367次浏览683条评论

超星C语言程序设计_28课后答案(学习通2023完整答案)

第二周:计算

2.1 变量随堂测验

1、超星以下哪些是语言程有效的变量名?
A、main
B、序设习通4ever
C、计课monkey-king
D、后答__int

2、案学给定: int a,完整b; scanf("%d %d", &a, &b); 则以下哪些输入方式是正确的?
A、1 2
B、答案1,超星2
C、1(回车)2
D、语言程1、序设习通2

3、计课给定: int a,后答b; 以下哪些scanf的使用是正确的?
A、scanf("%d",案学 &a); scanf("%d", &b);
B、scanf("%d %d",完整 &a, &b);
C、scanf("%d, %d", &a, &b);
D、scanf("%d %d", a, b);

4、给定以下代码段: int a,b=0; 则a的初始值是0

5、写出下式的运算结果: 10/3.0*3

6、写出下式的运算结果: 10/3*3.0

2.2 表达式随堂测验

1、写出以下代码执行后,t1和t2的值,以空格隔开: int a=14; int t1 = a++; int t2 = ++a;

2、写出以下表达式的结果,一个结果一行: 6 + 5 / 4 - 2 2 + 2 * (2 * 2 - 2) % 2 / 3 10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10

四川轻化工大学C语言第1-3章单元测验一(出题人:林山)

1、以下关于C语言数据类型使用的叙述中错误的是______。
A、若要准确无误差地表示一个自然数,应使用整数类型。
B、若要保存带有多位小数的数据,应使用双精度类型。
C、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型。
D、若只处理"真"和"假"两种逻辑值,应使用逻辑类型。

2、以下选项中,合法的一组C语言数值常量是______。
A、028 .5e-3 -0xf
B、12. 0Xa23 4.5e0
C、1774 e1.5 0abc
D、0x8A 10,000 3.e5

3、以下选项中不能作为C语言合法常量的是______。
A、'cd'
B、0.1e+6
C、"\a"
D、'\011'

4、以下说法正确的是______。
A、C语言只接受十进制的数
B、C语言只接受二进制、八进制、十六进制的数
C、C语言只接受二进制、十进制、十六进制的数
D、C语言只接受八进制、十进制、十六进制的数

5、以下选项中表示一个合法的常量是(说明:符号口表示空格)______。
A、9口9口9
B、0Xab
C、123E0.2
D、2.7e

6、关于C语言的符号常量,以下叙述中正确的是______。
A、符号常量的符号名是标识符,但必须大写
B、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量
C、符号常量在整个程序中其值都不能再被重新定义
D、符号常量的符号名必须是常量

7、以下选项中,合法的数值型常量是______。
A、3.1415
B、"A"
C、092
D、0xDH

8、C语言的常量包括数值型常量和符号常量,以下叙述正确的是______。
A、数值型常量1.0和1所占内存的大小不同
B、不能用sizeof求数值型常量所占内存的大小
C、不能用sizeof求符号常量所占内存的大小
D、可以用A取得符号常量A所占内存的首地址

9、以下选项中,能用作数据常量的是______。
A、o115
B、0118
C、1.5e1.5
D、115L

10、以下叙述中错误的是______。
A、非零的数值型常量有正值和负值的区分
B、常量是在程序运行过程中值不能被改变的量
C、定义符号常量必须用类型名来设定常量的类型
D、用符号名表示的常量叫符号常量

11、设有两行定义语句: int scanf; float case; 则以下叙述正确的是______。
A、第2行语句不合法
B、两行定义语句都合法
C、第1行语句不合法
D、两行定义语句都不合法

12、关于C语言的变量,以下叙述中错误的是______。
A、变量所占的存储单元地址可以随时改变
B、所谓变量是指在程序运行过程中其值可以被改变的量
C、程序中用到的所有变量都必须先定义后才能使用
D、由三条下划线构成的符号名是合法的变量名

13、以下程序执行后sum的值是______。 main() { int i, sum; for(i=1; i<6; i++) sum+=i; printf("%d\n",sum); }
A、15
B、14
C、不确定
D、0

14、有以下程序 #include <stdio.h> main() { char *p1 = 0; int *p2 = 0; float *p3 = 0; printf("%d,%d,%d\n", sizeof(p1), sizeof(p2), sizeof(p3)); }
A、1,1,4
B、1,2,4
C、1,4,8
D、4,4,4

15、关于C语言的变量名,以下叙述正确的是______。
A、变量名必须以字母开头
B、变量名不可以与预定义标识符同名
C、变量名不可以与关键字同名
D、变量名是没有长度限制的

16、以下选项中合法的变量是______。
A、sizeof
B、5a
C、A%
D、_10_

17、以下选项中不是C语言数据类型的是______。
A、整型int
B、浮点型float
C、字符型char
D、字符串型string

18、C语言中,最基本的数据类型包括______。
A、整型、实型、字符型
B、整型、字符型、数组
C、整型、实型、逻辑型
D、整型、实型、结构体

19、以下选项中可用作C程序合法整数的是______。
A、0x77
B、1 2(数字间有一个空格)
C、xff
D、018

20、以下不属于C语言整型常量的是______。
A、-018
B、0L
C、0Xa
D、200U

21、与十进制数200等值的十六进制数为______。
A、A8
B、A4
C、C8
D、C4

22、C语言整数不包括______。
A、带小数点的整数
B、正整数
C、负整数
D、无符号整数

23、以下选项中可作为C语言合法整数的是______。
A、10110B
B、0386
C、0Xffa
D、x2a2

24、以下非法的定义语句是______。
A、unsigned int a=-100u;
B、long b=0L;
C、short c2=0123;
D、int d=0x0;

25、以下叙述中正确的是______。
A、整型变量可以分为int型、short型、long型和unsigned型四种
B、在C程序中书写的八进制和十六进制数,可以是浮点数
C、八进制数的开头要使用英文字母o,否则不能与十进制区分开
D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符

26、若函数中有定义语句:int k;,则______。
A、系统将自动给k赋初值0
B、这时k中的值无定义
C、系统将自动给k赋初值-1
D、这时k中无任何值

27、在C语言中,不正确的short int类型的常数是______。
A、32768
B、0
C、037
D、0xAF

28、以下关于long、int和short类型数据占用内存大小的叙述中正确的是______。
A、均占4个字节
B、根据数据的大小来决定所占内存的字节数
C、由用户自己定义
D、由C语言编译系统决定

29、在C语言中,合法的长整型常数是______。
A、OL
B、4962710
C、324562
D、216D

30、以下选项中不属于C语言的类型是______。
A、signed short int
B、unsigned char
C、signed long
D、long short

31、以下选项中,合法的实数是______。
A、E1.3
B、4.5E2
C、7.11E
D、1.2E1.2

32、以下选项中,合法的C语言实数是______。
A、3.1e0.4
B、2e0
C、E13
D、7.12E

33、以下选项中,合法的实数是______。
A、1.9E1.4
B、E1.1
C、2.10E
D、1.5E2

34、以下不合法的数值常量是______。
A、011
B、le1
C、8.0E0.5
D、0xabcd

35、以下选项中可用作C程序合法实数的是______。
A、1e0
B、3.0e0.2
C、E9
D、9.12E

36、以下选项中合法的实型常量是______。
A、0
B、3.13e-2.1
C、.914
D、2.0*10

37、以下选项中不能作为合法常量的是______。
A、1.234e04
B、1.234e0.4
C、1.234e+4
D、1.234e0

38、以下______是不合法的C语言常量。
A、OxFF
B、1.2e0.5
C、2L
D、'\72'

39、以下是正确C语言实型常量的是______。
A、1e-1
B、e-1
C、-1e
D、.e-1

40、在C语言中,以下选项中不能正确表示10×1000之值的是______。
A、1.0e4
B、1.E4
C、10E3
D、1.0E4.0

41、下列定义变量的语句中错误的是______。
A、int _int;
B、double int_;
C、char For;
D、float US$;

42、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
A、x=x*100+0.5/100.0;
B、x=(x*100+0.5)/100.0
C、x=(int)(x*100+0.5)/100.0;
D、x=(x/100+0.5)/100.0;

43、以下选项中正确的定义语句是______。
A、double a;b;
B、double a=b=7;
C、double a=7,b=7;
D、double,a,b;

44、有以下程序 main() { int a,b,d=25; a=d/10%9; b=a-1; printf("%d,%d\n",a,b); } 程序运行后的输出结果是______。
A、6,1
B、2,1
C、6,0
D、2,0

45、以下不能用于实型数据的运算符是______。
A、%
B、/
C、*
D、+

46、以下选项中,当x为大于1的奇数时,值为0的表达式是______。
A、x%2==0
B、x/2
C、x%2!=0
D、x%2==1

47、C语言程序中,运算对象必须是整型数的运算符是______。
A、+
B、/
C、%
D、*

48、以下叙述中错误的是______。
A、C程序中的#include和#define行均不是C语句
B、除逗号运算符外,赋值运算符的优先级最低
C、C程序中,j++;是赋值语句
D、C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算

49、若有以下程序 #include <stdio.h> main() { int b=10, a=-11; a%=b%=4; printf("%d %d\n", a, b); } 则程序的输出结果是______。
A、-1 2
B、1 2
C、-1 -2
D、1 -2

50、以下关于运算符"/"的叙述正确的是______。
A、不允许char型对象参与运算
B、总是进行双精度除法运算
C、总是进行单精度除法运算
D、只有其两边运算对象的类型都是整型时,所做运算为整数整除运算

51、以下程序拟实现计算 sum=1+1/2+1/3+ … +1/50 。 #include <stdio.h> main( ) { int i; double sum; sum=1.0; i=1; do { i++; sum += 1/i; } while( i<50 ); printf("sum=%lf\n",sum); } 程序运行后,不能得到正确结果,出现问题的语句是______。
A、sum += 1/i;
B、while(i<50);
C、sum = 1.0;
D、i++;

52、设变量m为float类型,变量n为int类型,则以下能实现将m中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是______。
A、n=m*100+0.5, m=n/100.0
B、m=(m*100+0.5)/100.0
C、n=m/100+0.5, m=n*100.0
D、m=m*100+0.5/100.0

53、有以下程序 #include <stdio.h> main() { int a=0,b=0,c=0; c=(a-=a-5); a=b,b+=4); printf("%d,%d,%d\n",a,b,c); } 程序运行后的输出结果是______。
A、0,4,5
B、4,4,5
C、4,4,4
D、0,0,0

54、设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是______。
A、(a+b)*h/2
B、(1/2)*(a+b)*h
C、(a+b)*h*1/2
D、h/2*(a+b)

55、以下能正确表述算式sin(2πr+30°)的C语言表达式是______。
A、sin(2*3.14*r+3.14*30/180.0)
B、sin(2*π*r+ 30 )
C、sin(2*3.14*r+ 30 )
D、sin(2*3.14*r+30*3.14/360.0)

56、有以下定义: int a; long b; double x,y; 则以下选项中正确的表达式是______。
A、a%(int)(x-y)
B、a=x!=y;
C、(a*y)%b
D、y=x+y=x

57、以下说法正确的是______。
A、复合语句中包含的语句种类没有限制
B、复合语句中不能有循环语句
C、复合语句中不能有分支语句
D、一条复合语句不能超过50行

58、以下叙述中错误的是______。
A、C语句必须以分号结束
B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句

59、有如下程序 #include <stdio.h> Int main() { int x = 0x13; if ( x = 0x18) printf("T"); printf("F"); printf("\n"); } 程序运行后的输出结果是______。
A、F
B、T
C、TF
D、TFT

60、以下选项中,能表示逻辑值"假"的是______。
A、1
B、0.000001
C、0
D、100.0

61、以下关于C语言数据类型使用的叙述中错误的是______。
A、若只处理"真"和"假"两种逻辑值,应使用逻辑类型
B、若要保存带有多位小数的数据,可使用双精度类型
C、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型
D、整数类型表示的自然数是准确无误差的

62、有以下程序 main() { int a=5,b=4,c=3,d=2; if (a==b==c) printf("%d\n",d); else if((c-d)==1) printf("%d\n",d+1); else printf("%d\n",d+2);} 执行后输出的结果是______。
A、2
B、3
C、4
D、编译时有错,无结果

63、以下叙述中正确的是______。
A、关系运算符两边的运算对象可以是C语言中任意合法的表达式
B、在C语言中,逻辑真值和假值分别对应1和0
C、对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误
D、分支结构是根据算术表达式的结果来判断流程走向的

64、表示关系式x≤y≤z的C语言表达式的是______。
A、(x<=y<=z)
B、(x<=y)||(y<=z)
C、(x<=y) && (y<=z)
D、(x<=y) ! (y<=z)

65、以下关于逻辑运算符两侧运算对象的叙述中正确的是______。
A、只能是整数0或1
B、只能是整数0或非0整数
C、可以是结构体类型的数据
D、可以是任意合法的表达式

66、若变量c为char类型,能正确判断出c为小写字母的表达式是______。
A、'a'>=c<='z'
B、(c>='a')||(c<='z')
C、('a'<=c)and('z'>=c)
D、(c>='a')(c<='z')

67、有以下程序 #include "stdio.h" main(){ int x=10,y=11,z=12; if(y<z) x=y;y=z;z=x; printf("x=%d y=%d z=%d\n",x,y,z); } 程序运行后的输出结果是______。
A、A:x=11 y=12 z=11
B、x=10 y=10 z=10
C、x=11 y=11 z=10
D、x=10 y=10 z=12

68、有以下程序: #include "stdio.h" main() { int x = 0x13; if (x = 0x12) printf("True"); printf("False\n"); } 程序运行后的输出结果是______。
A、False
B、True
C、TrueFalse
D、TrueFalseTrue

69、以下运用if语句判断x和y大小的程序段,错误的是______。
A、if(x>y) printf(" x>y ");else if(x<y) printf(" x<y ");else printf(" x=y ");
B、if(x>=y)if(xy) printf("xy");else printf("x=y");else printf("x<y");
C、if(x>y) printf(" x>y ");if(y<x) printf(" x<y ");if(x==y) printf(" x=y ");
D、if(x>y) printf(" x>y ");else if(y<x) printf(" x<y ");else printf(" x=y ");

70、有以下程序段scanf("%d%d%d",&a,&b,&c);if(a<b) a=b;if(a<c) a=c;printf("%d\n",a);该程序段的功能是______。
A、输出a、b、c中的最小值
B、输出a、b、c中的最大值
C、输出a的原始值
D、输出a、b、c中值相等的数值

71、若有以下程序: #include "stdio.h" main() { int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b==2) r+=2; else; if (c!=3) r+=3; else; if (d==4) r+=4; printf("%d\n", r);} 则程序的输出结果是______。
A、7
B、10
C、6
D、3

72、以下程序的功能是判断输入的一个整数是否能被3或7整除,若能整除,输出YES,否则输出NO。在下划线处应填入的选项是______。 #include "stdio.h" main() { int k; printf("Enter a int number : "); scanf("%d", &k ); if printf("YES\n"); else printf("NO\n"); printf("%d\n",k); }
A、((k%3==0)||(k%7==0))
B、(k/3==0)||(k/7==0)
C、((k%3=0)||(k%7=0))
D、((k%3==0)&&(k%7==0))

73、下面的程序片段: y=-1; if (x!=0) { if(x>0) y=1;} else y=0; 以下说法错误的是______。
A、表述了类似数学中的分段函数
B、可以用其他格式的if语句改写替代
C、else与上一行的if相匹配
D、该程序段是if语句的嵌套

74、有以下程序: #include “stdio.h” main(){ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d\n",a,b,c,d);} 程序输出______。
A、0,1,2,0
B、0,0,0,3
C、1,1,2,0
D、编译有错

75、若执行以下程序时从键盘上输入9,则输出结果是______。 main() { int n; scanf("%d:",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); }
A、11
B、10
C、9
D、8

76、为了避免在嵌套的if-else语句中产生二义性,C语言规定与else子句配对是______。
A、与其缩排位置相同的if子句
B、在其之后最近的不带else的if子句
C、在其之前最近的不带else的同层if子句
D、与其在同一行上的if子句

77、以下4个选项,不能看作一条语句的是______。
A、{ ;}
B、a=0,b=0,c=0;
C、if(a>0);
D、if(b==0)m=1;n=2;

78、设有定义:int m=1,n=2;则以下if语句中,编译时会产生错误信息的是______。
A、if(m<n) m-- else n--;
B、if(m=n){ m++; n++;}
C、if(m>0 && n>0) { ;}
D、if(m==0) ; else m++;

79、有以下程序: #include "stdio.h" main() { int t; scanf("%d", &t ); if(t++ !=6) printf("%d\n",t); else printf("%d\n",t--); printf("\n"); } 执行时输入:6回车,则输出结果是______。
A、8
B、7
C、6
D、5

80、有以下程序段 scanf("%d%d%d",a,b,c); if(a>b) a=b; if(a>c) a=c; printf("%d\n",a);该程序段的功能是______。
A、输出a、b、c中值相等的数值
B、输出a、b、c中的最大值
C、输出a、b、c中的最小值
D、输出a的原始值

81、以下程序段中,不能实现条件"如果a==b则x=10,否则x=-10"的是______。
A、if(a==b) x=10;if(b==a) x=-10;
B、if(a==b) x=10;else x=-10;
C、x=-10;if(a==b) x=10;
D、x=(a==b)? 10:-10;

82、以下程序的输出结果是______。 main() { int x=05; char z='a'; printf("%d\n",(x)&&('z') ); }
A、0
B、1
C、2
D、3

83、#include “stdio.h” main() { int a=0,b=0,c=0; if(a++ || b++&&++c) printf ("%d,%d,%d\n", a, b, c); else printf ("%d,%d,%d\n", a, c, b); }
A、1,1,1
B、1,0,1
C、1,0,0
D、1,1,0

84、下列叙述中正确的是______。
A、C语言中既有逻辑类型也有集合类型
B、C语言中没有逻辑类型但有集合类型
C、C语言中有逻辑类型但没有集合类型
D、C语言中既没有逻辑类型也没有集合类型

85、以下叙述中正确的是______。
A、else不是一条独立的语句,它只是if语句的一部分
B、对于逻辑表达式:a++ && b++,设a的值为0,则求解表达式的值后,b的值会发生改变
C、对于逻辑表达式:a++ || b++,设a的值为1,则求解表达式的值后,b的值会发生改变
D、关系运算符的结果有三种:0,1,-1

86、若有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=4; if ((a=2) || (b=2)) c=2; if ((c==3) & (d==-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d);} 则程序的输出结果是______。
A、1,2,3,4
B、2,1,2,-1
C、5,1,2,-1
D、2,2,2,4

87、执行以下程序段后,w的值为______。 int w='A',x=14,y=15; w =((x || y)||(w &'a'));
A、-1
B、NULL
C、1
D、0

88、有下列程序 #include <stdio.h> main() { int a=-1,b=2; for (;b>1; a++ ) printf("%d,%d,", ++a, --b); printf ("%d,%d",a, b);} 程序执行后的输出结果是______
A、0,1,1,1
B、0,1,1,0
C、0,1,1,0,1,0
D、0,1,1,1,1,1

89、有以下程序 #include<stdio.h> main() { int a=1,b=2,c=3,d=0; if (a==1 && b++==2) if (b!=2||c--!=3) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c);} 程序运行后的输出结果是______。
A、1,2,3
B、1,3,2
C、1,3,3
D、3,2,1

90、以下程序的输出结果是______。 main() { int a=4,b=5,c=0,d; d=!a && !b || !c; printf("%d\n",d);}
A、1
B、0
C、非0的数
D、-1

91、有以下程序: main() { int x=0,y=5,z=3; while(z-->0 && ++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z);} 程序执行后的输出结果是______。
A、3,2,0
B、3,2,-1
C、4,3,-1
D、5,-2,-5

92、设有定义:int a=0,b=1;,以下表达式中,会产生"短路"现象,致使变量b的值不变的是______。
A、a++ && b++
B、a++ || ++b
C、++a && b++
D、+a || ++b

93、以下选项中与(!a==0)的逻辑值不等价的表达式是______。
A、(a==!0)
B、a
C、(a>0||a<0)
D、(a!=0)

94、已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a<b) || (n=c<d)后n的值为______。
A、-1
B、0
C、1
D、2

95、设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为______。
A、不定值
B、4
C、3
D、1

96、若有以下程序 #include <stdio.h> main() { int a=1,b=2,c=3,d=4; if (a==b--) c=2; if ( c-- > (d=-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d);} 则程序的输出结果是______。
A、2,2,2,4
B、2,1,2,-1
C、5,1,2,-1
D、1,2,3,4

97、有如下程序 #include<stdio.h> main() { iint a = 0, b = 1; if (a++ == b) printf("TRUE"); else printf("FALSE"); printf("_OUT:a=%d,b=%d\n", a, b++);} 程序运行后的输出结果是______。
A、FALSE_OUT:a=1,b=1
B、FALSE_OUT:a=0,b=2
C、TRUE_OUT:a=1,b=2
D、TRUE_OUT:a=0,b=1

98、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是______。
A、1
B、0
C、2
D、不知道a的值,不能确定

99、有以下程序 main() { int i=1,j=2,k=3; if(i++==1 && (++j==3 || k++==3)) printf("%d %d %d\n",i,j,k); }
A、1 2 3
B、2 3 4
C、2 2 4
D、2 3 3

100、设a、b、c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。
A、'a'<'b'
B、a=b
C、a||a+c<b-c
D、!((a<b) && !c||1)

第三周:判断

3.1 判断随堂测验

1、以下语句是否可以通过编译: if ( 1<=n<=10 );

2、以下语句是否表示n属于[1,10]: if ( 1<=n<=10 );

3、写出程序的输出结果: int i,j,k; i=5; j=10; k=1; printf("%d", k>i<j);

4、写出程序的输出结果: int i,j,k; i=2;j=3; k = i*j==6; printf("%d\n", k);

5、写出程序的输出结果: int i,j,k; i=3;j=2;k=1; printf("%d", i<j == j<k);

3.2 分支随堂测验

1、写出程序的输出: int i=1; switch ( i%3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); }

2、写出程序的输出: int a = 58; if ( a>50 ) printf("A"); if ( a>40 ) printf("B"); if ( a>30 ) printf("C");

编程题01

1、请编程实现:从键盘上随意输入一个算术运算式(可能是加、减、乘、除中的一种),然后你编写的程序要能判断出这个算术运算是否正确,正确显示“yes”,错误显示“no”。比如:从键盘上输入“3+2=5↙”,则屏幕上显示“yes”;从键盘上输入“3*2=5↙”,则屏幕上显示“no”。

编程题01(在线评分)

1、蓝集明出题:顺序、选择结构部分。

2、蓝集明出题:顺序、选择结构部分。

第四周:循环

4.1 循环随堂测验

1、while循环的条件满足的时候循环继续,而do-while的条件满足的时候循环就结束了

2、以下代码片段执行结束后,变量i的值是多少? int i =10; while ( i>0 ) { i /=2; }

3、以下代码片段执行结束后,变量i的值是多少? int i = 1; do { i += 5; } while (i<17);

4.2 循环应用随堂测验

1、以下哪种运算能从变量x中取得十进制最低位的数字
A、x / 10
B、x % 10
C、x * 10
D、10 / x

2、当需要累加一些值的时候,用来记录累加结果的变量应该被初始为:

四川轻化工大学C语言第4-5章单元测验二(出题人:宋健)

1、有以下程序: #include "stdio.h" void main() { int x=0,y=6; do { while(--y) x++; }while(y--); printf("%d,%d\n",x,y); } 程序的运行结果是______。
A、5,-1
B、6,0
C、5,0
D、6,-1

2、以下程序的输出结果是______。 #include "stdio.h" void main() { int i=0,a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d\n",a); }
A、21
B、32
C、33
D、11

3、以下判断形参变量a是否为素数的函数正确的是______。
A、int isprime(int a) { int i; for(i=2; i<=a/2; i++) if(a%i==0) return 0; return 1;}
B、int isprime(int a) { int i; for(i=2; i<=a/2; i++) if(a%i==1) return 1; return 0;}
C、int isprime(int a) { int i; for(i=2; i=<a/2; i++) if(a%i==0) return 0; else return 1;}
D、int isprime(int a) { int i; for(i=2; i<=a/2; i++) if(a%i==1) return 1; else return 0;}

4、有以下程序 #include "stdio.h" void main() { int i,j,m=1; for(i=1;i<3;i++) { for(j=3;j>0;j--) { if(i*j>3) break; m*=i*j; } } printf("m=%d\n",m); } 程序运行后的输出结果是______。
A、m=6
B、m=2
C、m=4
D、m=5

5、有以下程序: #include "stdio.h" void func(int n) { int i; for(i=0;i<=n;i++) printf("*"); printf("#"); } void main() { func(3); printf("????"); func(4); printf("\n"); } 程序运行后的输出结果是______。
A、****#????***#
B、***#????****#
C、**#????*****#
D、****#????*****#

6、有以下程序 #include "stdio.h" void main() { int i,j; for( i=3; i>0; i-- ) { for( j=1; j<=i; j++ ) putchar( '*'); for( j=1; j<=3-i; j++ ) putchar('#'); putchar('\n'); } } 程序运行后的输出结果是______。
A、*** **# *##
B、**# *## ###
C、### ##* #**
D、##* #** ***

7、有下列程序: #include <stdio.h> void main() { int arry[] = { 1,3,5,7,9},i,j; for(i=0;i<4;i+=2) { for(j=1;i+j<5;j++,j++) printf ("%d ",arry[i+j]); } } 程序执行后的输出结果是______。
A、5 7 7
B、3 5 7
C、5 9 9
D、3 7 7

8、以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序。 void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;} } void main() { int aa[10]={ 1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是______。
A、1,2,3,4,5,6,7,8,9,10,
B、10,9,8,7,6,5,4,3,2,1,
C、1,2,3,8,7,6,5,4,9,10,
D、1,2,10,9,8,7,6,5,4,3,

9、若i和k都是int类型变量,有以下for语句: for(i=0,k=-1;k=1;k++) printf("*****\n"); 下面关于语句执行情况的叙述中正确的是______。
A、循环体执行两次
B、循环体执行一次
C、循环体一次也不执行
D、构成无限循环

10、有以下程序 #include "stdio.h" void main() { int i,n=0; for( i=2;i<5;i++) { do { if(i%3) continue; n++; }while(!i); n++; } printf("n=%d\n",n); } 程序执行后输出结果是______。
A、n=5
B、n=2
C、n=3
D、n=4

11、以下程序段中,与其他三个功能不同的程序段是______。
A、s=0;i=1; for( ; ; ) { s+=i; i++; if(i>=10) break;}
B、s=0,i=1; for( ; i<=10; ) { s+=i,i++;}
C、s=0; for(i=1; i<=10; i++) { s+=i;}
D、for(s=0,i=1; i<=10; s+=i,i++) ;

12、以下程序的输出结果是______。 #include "stdio.h" void main() { int a=6,b=0,c=0; for ( ;a; ) { b += a; a -= ++c; } printf("%d,%d,%d\n", a,b,c); }
A、0,14,3
B、1,14,3
C、0,18,3
D、0,14,6

13、有以下程序: #include "stdio.h" void main() { int k=5, n=0; do { switch(k) { case 1: case 3: n+=1; k--; break; default: n=0; k--; case 2: case 4: n+=2; k--; break; } printf("%d",n); }while(k>0 && n<5); } 程序运行后的输出结果是______。
A、235
B、0235
C、02356
D、2356

14、有以下程序: #include "stdio.h" void main() { int i,a; for (i=0; i<=10; i++) a=i; printf("%d,%d\n", i, a); } 程序的运行结果是______。
A、10,11
B、10,10
C、11,10
D、11,11

15、有以下程序 #include "stdio.h" void main() { int num[4][4]={ { 1,2,3,4},{ 5,6,7,8},{ 9,10,11,12},{ 13,14,15,16}},i,j; for(i=0;i<4;i++) { for(j=0;j<=i;j++) printf("%4c",' '); for(j=_____;j<4;j++) printf("%4d",num[i][j]); printf("\n"); } } 若要按以下形式输出数组右上半三角: 1 2 3 4 6 7 8 11 12 16 在程序下划线处应填入的是______。
A、i-1
B、i
C、i+1
D、4-i

16、有以下程序 #include "stdio.h" void main() { int i, j; for(i=1;i<4;i++) { for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j); printf("\n"); } } 程序运行后的输出结果是______。
A、1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3
B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
C、1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9
D、1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9

17、有以下程序: void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i+=2) for(j=i+2;j<n;j+=2) if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;} } void main() { int aa[10]={ 1,2,3,4,5,6,7,8,9,10},i; sort(aa,10); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); } 其输出结果是______。
A、1,2,3,4,5,6,7,8,9,10,
B、10,9,8,7,6,5,4,3,2,1,
C、9,2,7,4,5,6,3,8,1,10,
D、1,10,3,8,5,6,7,4,9,2,

18、有如下程序: #include <stdio.h> void main() { int i,data; scanf("%d",&data); for (i=0; i<5; i++) { if (i>data) break; printf("%d,", i); } printf("\n"); } 程序运行时,从键盘输入:3回车后,程序输出结果为______。
A、3,4,
B、0,1,0,1,
C、3,4,5,
D、0,1,2,3,

19、对于循环语句:for(i=0;i<=10;i++) { ; }下面各选项的叙述中错误的是______。
A、省略i=0,可引起无限循环
B、省略i<=10,可引起无限循环
C、省略i++,可引起无限循环
D、圆括号()内三个表达式都省略,可引起无限循环

20、以下程序的输出结果是______。 #include "stdio.h" void main() { int b[3][3]={ 0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf("%d\n",t); }
A、3
B、4
C、1
D、9

21、以下叙述中正确的是______。
A、三种循环for,while,do-while可以互相嵌套
B、循环发生嵌套时,最多只能两层
C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误
D、for语句的圆括号中的表达式不能都省略掉

22、有以下程序 : #include "stdio.h" void main() { int a[3]=, i, j, k=2; for( i=0; i<k; i++ ) for( j=0; j<k; j++ ) a[j] = a[i]+1; printf("%d\n", a[1] ); } 程序运行后的输出结果是______。
A、1
B、2
C、3
D、0

23、设有n个数按从大到小的顺序存放在数组x中,以下能使这n个数在x数组中的顺序变为从小到大的是______。
A、for(i=0;i<n/2;i++) { t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}
B、for(i=0;i<n;i++) { t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}
C、for(i=0;i<n/2;i++) { t=x[i];x[i]=x[n-i+1];x[n-i+1]=t;}
D、for(i=0;i<n/2;i+=2) { t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}

24、以下程序的输出结果是______。 #include "stdio.h" void main() { 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]); }
A、1,5,9,
B、1,4,7,
C、3,5,7,
D、3,6,9,

25、以下程序段中的变量已正确定义 for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf("*"); 程序段的输出结果是______。
A、最新考试答案

**
B、****
C、**
D、*

26、以下程序中给数组所有元素输入数据,请从选项中选择正确的答案填入下划线处______。 #include <stdio.h> void main() { int a[10], i=0; while( i<10 ) scanf("%d", ______ ); }
A、a+(i++)
B、a[i+1]
C、a+i
D、a[i++]

27、以下叙述中错误的是______。
A、while语句的循环体至少会被执行一次
B、break语句只能在循环体内和switch语句体内使用
C、执行continue语句时将跳过本次循环体中余下尚未执行的语句
D、在C语言中有三种可以构成循环结构的循环语句:while、do-while和for

28、若有以下程序 #include <stdio.h> void main() { int a=-2, b=0; do { ++b ; }while(a++); printf("%d,%d\n", a, b); } 则程序的输出结果是______。
A、0,2
B、1,3
C、1,2
D、2,3

29、由以下while构成的循环,循环体执行的次数是______。int k=0;while ( k=1 ) k++;
A、无限次
B、一次也不执行
C、执行一次
D、有语法错,不能执行

30、以下程序的输出结果是______。 #include <stdio.h> void main() { int num=0; while(num!=2) { num++; printf("%d\n",num); } }
A、123
B、12
C、1234
D、1

31、有以下程序 #include <stdio.h> void main() { int i; for(i=0;i<3;i++) switch(i) { case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } } 执行后输出的结果是______。
A、011122
B、012
C、012020
D、120

32、有以下程序 #include <stdio.h> void main() { int a=1, b=0; for(;a<5; a++) { if (a%2==0) break; b += a; } printf("%d \n", b); } 程序的运行结果是______。
A、0
B、10
C、1
D、4

33、有以下程序 #include <stdio.h> void main() { int x,a=1,b=1; while(1) { scanf("%d",&x); if(x>0) { a*=x;break;} if(x<0) { b*=x;continue; } printf("%d,%d\n",a,b); } } 程序运行时输入:-1 -2 0 1 2 回车,则输出结果是______。
A、1,2
B、2,2
C、-1,1
D、-2,1

34、关于"while(条件表达式)循环体",以下叙述正确的是______。
A、条件表达式的执行次数总是比循环体的执行次数多一次
B、循环体的执行次数总是比条件表达式的执行次数多一次
C、条件表达式的执行次数与循环体的执行次数一样
D、条件表达式的执行次数与循环体的执行次数无关

35、下面程序的输出是______。 #include <stdio.h> void main() { char *s="12134211"; int v1=0,v2=0,v3=0,v4=0,k; for (k=0;s[k];k++) switch(s[k]) { default:v4++; case '1':v1++; case '3':v3++; case '2':v2++; } printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A、v1=4,v2=2,v3=1,v4=1
B、v1=4,v2=9,v3=3,v4=1
C、v1=5,v2=8,v3=6,v4=1
D、v1=8,v2=8,v3=8,v4=8

36、t为int类型,进入下面的循环之前,t的值为0。while(t=1){ ......}则以下叙述中正确的是______。
A、循环控制表达式的值为0
B、循环控制表达式的值为1
C、循环控制表达式不合法
D、以上说法都不对

37、下面函数的功能是______。 int fun1(char*x) { char *y=x; while(*y++); return(y-x-1); }
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串x复制到字符串y
D、将字符串x连接到字符串y后面

38、有如下程序 void main() { int n=9; while(n>6) { n--; printf("%d",n); } } 该程序段的输出结果是______。
A、987
B、876
C、8765
D、9876

39、有以下程序 #include <stdio.h> void main() { int s; scanf("%d",&s); while(s) { switch(s) { case 1:printf("%d",s+5); case 2:printf("%d",s+4);break; case 3:printf("%d",s+3); default:printf("%d",s+1);break; } scanf("%d",&s); } } 运行时,若输入1 2 3 4 5 0回车,则输出结果是______。
A、6566456
B、66656
C、66666
D、6666656

40、有以下程序段 int i,n; for(i=0;i<8;i++) { n= %5; switch(n) { case 1: case 3: printf("%d\n",n); break; case 2: case 4: printf("%d\n",n); continue; case 0: exit(0); } printf("%d\n",n); } 以下关于程序段执行情况的叙述,正确的是______。
A、for循环语句固定执行8次
B、当产生的随机数n为4时结束循环操作
C、当产生的随机数n为1和2时不做任何操作
D、当产生的随机数n为0时结束程序运行

41、有以下程序 #include <stdio.h> void main() { int a=1,b=2; while(a<6) { b+=a; a+=2; b%=10; } printf("%d,%d\n",a,b); } 程序运行后的输出结果是______。
A、5,11
B、7,1
C、7,11
D、6,1

42、有以下程序 #include <stdio.h> void main() { char ch = 'D'; while (ch!='A') { ch --; putchar(ch); if (ch == 'A') break; putchar(ch+1); } } 程序运行后的输出结果是______。
A、CDBCA
B、BCA
C、CCBB
D、CB

43、有以下程序 #include <stdio.h> void main() { int a=7; while(a--); printf("%d\n",a); } 程序运行后的输出结果是______
A、-1
B、0
C、1
D、7

44、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是______。
A、while((ch=getchar())!='N') printf("%c ",ch);
B、while(ch=getchar() ='N') printf("%c ",ch);
C、while(ch=getchar()=='N') printf("%c ",ch);
D、while(getchar(ch))=='N') printf("%c ",ch);

45、有以下程序 #include <stdio.h> void main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是______。
A、y=0
B、y=-1
C、y=1
D、while构成无限循环

46、有以下程序 #include <stdio.h> void main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,", b++); case 1: printf("%d,", b++); case 2: printf("%d,", b++); } } } 程序运行时输入:1 2 3回车,则输出结果是______。
A、1,2,3,
B、1,2,2,3,4,5,
C、1,2,3,2,3,3,
D、1,1,1,2,2,3

47、有以下程序 #include <stdio.h> void main() { int a[]={ 2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0:switch(a[i]%2) { case 0:a[i]++;break; case 1:a[i]--; } break; case 1:a[i]=0; } for(i=0;i<4;i++) printf("%d ",a[i]); printf("\n"); } 程序运行后的输出结果是______。
A、3 3 4 4
B、2 0 5 0
C、3 0 4 0
D、0 3 0 4

48、请读程序: #include <stdio.h> void main() { int num=0; while( num <=2) { num++; printf("%d\n",num); } } 上面程序的输出结果是______。 ① 1 ② 12 ③ 123 ④ 1234
A、①
B、②
C、③
D、④

49、有以下程序 #include <stdio.h> void main() { int k=5,n=0; while(k>0) { switch(k) { default : break; case 1 : n+=k; case 2 : case 3 : n+=k; } k--; } printf("%d\n",n); } 程序运行后的输出结果是______。
A、0
B、4
C、6
D、7

50、有如下程序 #include <stdio.h> void main() { int n = 9; while(n>6) { n--; printf("%d",n); } } 该程序的输出结果是______。
A、987
B、876
C、8765
D、9876

51、有以下程序 #include <stdio.h> void main() { int a,b; for (a=0; a<3; a++) { scanf("%d",&b); switch(b) { case 1: printf("%d,", ++b); case 2: printf("%d,", ++b); default: printf("%d,", ++b); } } } 执行时输入:1 2 3回车 ,则输出结果是______。
A、2,3,4,3,4,4,
B、2,3,4,
C、2,2,2,3,3,4,
D、2,3,4,3,4,5,4,5,6

52、有以下程序 #include <stdio.h> void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } } printf("a=%d,b=%d\n",a,b);} 程序的运行结果是______。
A、a=1,b=0
B、a=2,b=2
C、a=1,b=1
D、a=2,b=1

53、有以下程序 #include <stdio.h> void main() { int a=15,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是______。
A、1
B、2
C、3
D、4

54、有以下程序 #include <stdio.h> void main() { int m,n; scanf("%d%d",&m,&n); while(m!=n) { while(m>n) m=m-n; while(n>m) n=n-m; } printf("%d\n",m); } 该程序的功能是______。
A、计算m和n的差值
B、计算m和n的最小公倍数
C、计算m和n的最大公约数
D、找出m和n中的较大值

55、对于while(!E) s; ,若要执行循环体s,则E的取值应为:______。
A、E不等于0
B、E等于0
C、E不等于1
D、E等于1

56、有以下程序 #include <stdio.h> void main() { char ch = '1'; while (ch<'9') { printf("%d", ch - '0'); ch++; } } 程序运行后的输出结果是______。
A、1
B、01234567
C、0
D、12345678

57、设变量n已正确定义并赋值,以下不能实现自然数1到n累加求和的程序段是______。
A、int sum=1, i=0;while(i<=n){ i++; sum+=i;}
B、int sum=0,i=1;while(i<=n){ sum+=i;i++;}
C、int sum=0, i=0;while(i<=n){ i++; sum+=i;}
D、int sum=1, i=1;while(i<=n){ i++; sum+=i;}

58、以下叙述中正确的是______。
A、只能在循环体内和switch语句体内使用break语句
B、当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行
C、continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环
D、在while语句和do-while语句中无法使用continue语句

59、以下程序中,while循环的循环次数是______。 #include <stdio.h> void main() { int i=0; while(i<10) { if(i<10) continue; if(i==5)break; i++; } ...... }
A、1
B、10
C、6
D、死循环,不能确定次数

60、以下程序的输出结果是______。 #include <stdio.h> void main() { char *s="12134211"; int v[4]={ 0,0,0,0},k,i; for (k=0;s[k];k++) { switch(s[k]) { case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; } for(k=0; k<4;k++) printf("%d ",v[k]); }
A、4 2 1 1
B、0 0 0 8
C、4 6 7 8
D、8 8 8 8

61、有以下程序 #include <stdio.h> void main() { int a=-1, b=-1; while(++a)++b; printf("%d,%d\n", a,b); } 程序的运行结果是______。
A、0,0
B、0,-1
C、-1,-1
D、结果不确定

62、有以下程序 #include <stdio.h> void main() { int k=5; while(--k) printf("%d",k-=3); printf("\n"); } 执行后的输出结果是______。
A、1
B、2
C、4
D、死循环

63、若有以下程序 #include <stdio.h> void main() { int s=0, n; for (n=0; n4; n++) { switch(n) { default: s+=4; case 1: s+=1; case 2: s+=2; case 3: s+=3; } } printf("%d\n", s); } 则程序的输出结果是______。
A、24
B、18
C、10
D、6

64、设有以下两段代码 do { while(条件表达式1 ) 循环体A; }while (条件表达式2); 和 while (条件表达式1) { do { 循环体B;} while (条件表达式2); } 其中,循环体A与循环体B相同,在相同条件下,以下叙述正确的是______。
A、循环体A与循环体B的执行次数不确定
B、循环体A比循环体B的执行次数多一次
C、循环体A比循环体B的执行次数少一次
D、循环体A与循环体B的执行次数相同

65、阅读以下函数 fun(char *sl,char *s2) { int i=0; while(sl[i]==s2[i]) i++; return(sl[i]=='\0' ?1:0); } 此函数的功能是______。
A、将s2所指字符串赋给s1
B、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0
C、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0
D、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

66、以下叙述中正确的是______。
A、如果根据算法需要使用无限循环(即通常所称的"死循环") ,则只能使用while语句
B、对于"for(表达式1;表达式2;表达式3) 循环体"首先要计算表达式2的值,以便决定是否开始循环
C、对于"for(表达式1;表达式2;表达式3) 循环体",只在个别情况下才能转换成while语句
D、只要适当地修改代码,就可以将do-while与while相互转换

67、以下叙述中正确的是______。
A、continue语句使得整个循环终止
B、break语句不能用于提前结束for语句的本层循环
C、使用break语句可以使流程跳出switch语句体
D、在for语句中,continue与break的效果是一样的,可以互换

68、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。
A、(!E==0)
B、(E>0||E<0)
C、(E==0)
D、(E!=0)

69、若有以下程序段,w和k都是整型变量: w=k;LB:if(w==0)goto LE;w--;printf("*");goto LB;LE: . . . 则不能与上面程序段等价的循环语句是______。
A、for(w=k;w!=0;w--)printf("*");
B、w=k; while(w--!=0)printf("*");w++;
C、w=k; do { w--;printf("*");}while(w!=0);
D、for(w=k;w;--w)printf("*");

70、以下叙述中正确的是______。
A、break语句只能用于switch语句体中
B、continue语句的作用是:使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体中
D、在循环内使用break语句和continue语句的作用相同

71、有以下程序 #include <stdio.h> void main() { int c=0,k; for(k=1;k<3;k++) switch(k) { default: c+=k; case 2: c++;break; case 4: c+=2;break; } printf("%d\n",c); } 程序运行后的输出结果是______。
A、3
B、5
C、7
D、9

72、有以下程序 #include <stdio.h> void main() { int x,y=0,z=0,t; do { scanf("%d",&x); t=x; switch (t) { case 0:break; case 1:y+=x; continue; } z+=x; }while(x); printf("%d,%d\n",y,z); } 程序运行时输入:-1 1 -2 2 0回车,则输出结果是______。
A、1,1
B、1,0
C、1,-1
D、3,0

73、若有定义语句int a,b;double x ;则下列选项中没有错误的是______。
A、switch (x%2){ case 0: a++;break;case 1: b++;break;default: a++; b++;}
B、switch ((int)x/2.0){ case 0: a++;break;case 1: b++;break;default: a++; b++;}
C、switch ((int)x%2){ case 0: a++;break;case 1: b++;break;default: a++; b++;}
D、switch ( (int) (x)%2){ case 0.0: a++;break;case 1.0: b++;break;default: a++; b++;}

74、有以下程序 #include <stdio.h> void 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 ); break; } } printf( "\n" ); } 程序运行后从第一列开始输入以下数据2473回车程序的输出结果是______。
A、668977
B、4444
C、6677877
D、68766

75、有以下程序 #include <stdio.h> void main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,", ++b); case 1: printf("%d,", ++b); case 2: printf("%d,", ++b); } } } 执行时输入:1 2 3回车,则输出结果是______。
A、2,3,4,
B、2,3,3,4,5,6,
C、2,2,3,4,4,4,
D、2,3,4,3,4,4,

76、下列叙述中正确的是______。
A、在switch语句中必须使用default
B、在switch语句中,不一定使用break语句
C、break语句必须与switch语句中的case配对使用
D、break语句只能用于switch语句

77、有如下程序 #include <stdio.h> void 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=1
C、a=1,b=0
D、a=2,b=2

78、有以下程序 #include <stdio.h> void main() { int a = 3; do { printf("%d,", a-=2 ); } while( ! (--a) ); printf("\n"); } 程序运行后的输出结果是______。
A、1,
B、1, -2,
C、3,0,
D、1,0

79、有以下程序段 int n,t=1,s=0; scanf("%d",&n); do { s=s+t; t=t-2; } while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是______。
A、任意正奇数
B、任意负偶数
C、任意正偶数
D、任意负奇数

80、有以下程序 #include <stdio.h> void main() { int a,b; for (a=0; a<3; a++) { scanf("%d", &b); switch(b) { case 1: printf("%d,", b++); case 2: printf("%d,", b++); default: printf("%d,", b++); } } printf("\n"); } 执行时输入:1 2 3 回车,则输出结果是______。
A、1,2,3,
B、1,2,3,2,3,3,
C、2,3,4,3,4,4,
D、1,1,1,2,2,3

81、若有以下程序 #include <stdio.h> void main() { int s=0, n; for (n=0; n<4; n++) { switch(n) { default: s+=4; case 1: s+=1; break; case 2: s+=2; break; case 3: s+=3; } } printf("%d\n", s); } 则程序的输出结果是______。
A、10
B、11
C、13
D、15

82、以下程序的输出结果是______。 #include <stdio.h> void main() { int n=4; while(n--) printf("%d ",--n); }
A、2 0
B、3 1
C、3 2 1
D、2 1 0

83、有下列程序 #include <stdio.h> void main() { int i,j,a,b; a=b=j=0; while(j<3) { j++; if(j==1) continue; for(i=0;i<3;i++) { if(i>1) break; a=a*10+i; if(i<1) b=a; } } printf ("%d %d\n",a, b); } 程序执行后的输出结果是______。
A、101 10
B、101 101
C、10 0
D、10 101

84、若要实现total=1+2+3+4+5求和,以下程序段错误的是______。
A、int i=1,total=1;while(i<=5){ total+=i;i+=1;}
B、int i=1,total=0;while(i<=5){ total+=i;i+=1;}
C、int i=0,total=0;while(i<5){ i+=1;total+=i;}
D、int i=0,total=0;while(i<=5){ total+=i;i+=1;}

85、以下选项中与if(a==1)a=b;else a++;语句功能不同的switch语句是______。
A、switch(a){ case 1:a=b;break;default : a++;}
B、switch(a==1){ case 0:a=b;break;case 1:a++;}
C、switch(a){ default:a++;break;case 1:a=b;}
D、switch(a==1){ case 1:a=b;break;case 0:a++;}

86、有以下程序段int x=3;do{ printf("%d",x-=2);}while(!(--x));其输出结果是______。
A、1
B、3 0
C、1 -2
D、死循环

87、有以下程序 #include <stdio.h> void main() { int i=5; do{ if(i%3==1) if(i%5==2) { printf("*%d",i);break;} i++; }while(i!=0); printf("\n"); } 程序的运行结果是______。
A、*7
B、*3*5
C、*5
D、*2*6

88、有以下程序#include <stdio.h> #include<stdio.h> #include<string.h> void main() { char c; do { c=getchar(); putchar(c); } while(c != '#'); printf("\n"); } 执行时如输入:abcdefg##回车 , 则输出结果是______。
A、abcdefg
B、abcdefg#
C、abcdefg##
D、##

89、以下能够实现计算5!的程序段是______。
A、int fac=1,k=0;do{ k++; fac*=k;} while(k5);
B、int fac=0,k=1;do{ fac*=k; k++;} while(k5);
C、int fac=1,k=1;do{ k++; fac*=k;} while(k=5);
D、int fac=1,k=0;do{ fac*=k; k++;} while(k5);

90、有以下程序#include <stdio.h> #include<stdio.h> void main() { int a=7,b=0; do { b+= a;a-=1; } while (a--) ; printf("%d,%d\n",b,a); } 执行后的输出结果是______。
A、16,-1
B、28,1
C、16,0
D、28,0

91、以下不构成无限循环的语句或语句组是______。
A、n=0;do{ ++n;} while(n=0);
B、n=0;while(1){ n++;}
C、n=10;while (n);{ n--;}
D、for(n=0,i=1; ;i++) n+=i;

92、有以下程序 #include<stdio.h> void main() { int i=0,s=0; do { if(i%2) { i++;continue;} i++;s+=i; } while(i<7); printf("%d\n",s); } 执行后输出的结果是______。
A、16
B、12
C、28
D、21

93、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是______。
A、n=0; while((ch=getchar())!='\n') n++;
B、n=0; while(getchar()!='\n') n++;
C、for(n=0;getchar()!='\n';n++);
D、n=0;for(ch=getchar();ch!='\n';n++);

94、有如下程序: #include<stdio.h> void main() { int n[5] = { 0,0,0},i,k = 2; for(i = 0; i<k; i++) n[i] = n[i] + 1; printf("%d\n",n[k]); } 该程序的输出结果是______。
A、不确定的值
B、2
C、1
D、0

95、以下程序的输出结果是______。 #include<stdio.h> void main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); }
A、258
B、741
C、852
D、369

96、有以下程序 #include<stdio.h> int f(int a) { return a%2; } void main() { int s[8]={ 1,3,5,2,4,6},i,d=0; for (i=0;f(s[i]);i++) d+=s[i]; printf("%d\n",d); } 程序运行后的输出结果是______。
A、9
B、11
C、19
D、21

97、有以下程序: #include<stdio.h> void main() { int i,s=0; for(i=1;i<=10;i+=2) s+=i+1; printf("%d\n",s); } 程序执行后的输出结果是______。
A、自然数1~9的累加和
B、自然数1~10的累加和
C、自然数1~9中奇数之和
D、自然数1~10中偶数之和

98、有如下程序 #include "stdio.h" void main() { int i,f=1,s=0; for(i=1;i<100;i++) { s=s+f*i;f=-f;} printf ("s=%d\n",s); } 程序的功能是______。
A、计算1-3+5-7+...-99的值
B、计算1-2+3-4+... +99的值
C、计算1*2*3*4*...*99的值
D、计算1*3*5*7*...*99的值

99、有以下程序 #include "stdio.h" void main() { int a, b; for( a=1,b=1; a<=100; a++ ) { if(b>=20) break; if(b % 3==1) { b=b+3; continue;} b=b-5; } printf("%d\n",a); } 程序的输出结果是______。
A、8
B、10
C、9
D、7

100、有以下程序 #include "stdio.h" void main() { char a[4][4]={ ' '}; int i,j; for(i=0;i<4; i++) { a[i][0]=a[i][3]='#'; for(j=1; j<3; j++) { a[0][j]=a[3][j]='#'; if((i!=0)||(i!=3)) a[i][j]='o'; } } for(i=1;i<3; i++) { for(j=0; j<4;j++) printf("%2c",a[i][j]); printf("\n"); } } 程序的运行结果是______。
A、# o o # # o o #
B、# # # # # o o #
C、# o o # # # # #
D、# # # # # # # #

4.3循环编程作业

1、(郑宗良出题) 请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代): 程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

第五周:循环控制

5.1 第三种循环随堂测验

1、以下哪个循环和其他三条循环不等价(假设循环体都是一样的)?
A、for ( i=0; i<10; i++ ) { ...}
B、for ( i=0; i<10; ++i ) { ...}
C、for ( i=0; i++<10; ) { ...}
D、for ( i=0; i<=9; i++ ) { ...}

2、以下代码段的输出是什么? for ( int i=10; i> 1; i /=2 ) { printf("%d ", i++); }

5.2 循环控制随堂测验

1、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) continue; sum += i; } printf("%d\n", sum);

2、以下代码段的输出是: int sum = 0; for ( int i=0; i<10; i++ ) { if ( i%2 ) break; sum += i; } printf("%d\n", sum);

第六周:数据类型

6.1 数据类型随堂测验

1、以下哪个字母不能在数字后面表示类型?
A、F
B、U
C、L
D、X

2、以下哪个数字的值最大?
A、10
B、010
C、0x10
D、10.0

3、以下哪个数字占据的空间最大?
A、32768
B、‘3’
C、32768.0
D、32768.0F

4、以下哪种类型不能用在switch-case的判断变量中:
A、char
B、short
C、int
D、double

5、下列哪些是有效的字符?
A、‘ ’
B、‘\’‘
C、''
D、'\'

6、以下表达式的结果是: '1'+3

6.2 其他运算:逻辑、条件、逗号随堂测验

1、以下哪个表达式,当a和b都是true或者都是false的时候,表达式的结果为true。
A、a && b
B、a || b
C、a == b
D、a ^ b

2、以下哪个表达式与!(a&&b)是等价的
A、!a && !b
B、!a || !b
C、a && b
D、a || b

3、以下哪个表达式的结果是true?
A、!(4<5)
B、2>2||4==4&&1<0
C、34==33&&!false
D、!false

4、以下哪个表达式,当a和b中只有一个是true的时候结果为true,而如果两个都是false或都是true的时候,结果为false
A、a && b
B、a || b
C、a != b
D、!a && !b

5、以下代码执行后,i的值是: i = 3/2,3*2;

第一次单元测验

1、以下哪个选项是判断ch是否为大写字母的正确形式?
A、ch >= 'A' && ch <='Z'
B、ch <= 'Z' && ch >= 'A'
C、'A' <= ch <= 'Z'
D、ch >= 'A' || ch <= 'Z'
E、ch >='A' AND ch <='Z'
F、ch BETWEEN 'A' AND 'Z"

2、以下代码片段的输出是: int j=4; for ( int i=j; i<=2*j; i++ ) { switch ( i/j ) { case 0: case 1: printf(“*”); break; case 2: printf(“#”); } }
A、****#
B、****##
C、***#
D、*#
E、****

3、下列程序段输出结果为: int x=1, y=012; printf(“%d”,y*x++);
A、10
B、12
C、20
D、24

4、下面程序段的输出结果是? int k; while(k!=0) k=k-1; printf(“%d”, k);
A、0
B、无论k的初值如何,最终都会减到0的。
C、因为k没有初值,所以结果不确定
D、1
E、因为没有给k赋初值,因此程序不能通过编译

5、以下表达式x&&1 用在if的条件中时,和哪个是等价的:
A、x!=0
B、x
C、x==0
D、x==1
E、x!=1

6、以下哪个不是C语言的关键字?
A、include
B、if
C、while
D、int
E、for

7、对于以下代码: unsigned short sht = 0; sht --; 执行后,sht的值是?
A、65535
B、2的16次方-1
C、-1
D、32767
E、65536

8、以下哪个直接量是十进制的124?
A、0174
B、0x7C
C、124
D、0x124
E、0124
F、124d

9、对于以下代码: int i=6; if ( i<= 6 ) printf("hello\n");; else printf("bye-bye\n");; 哪句话是对的?
A、无法编译
B、不能通过编译
C、打印出"hello"
D、打印出"bye-bye"
E、打印出"hello bye-bye"

10、在代码: while ( !e ) 中,!e等价于:
A、e == 0
B、e != 1
C、e!=0
D、e == 1

11、下列可用于C语言程序标识符的一组是(名字间以逗号分隔):
A、For, _abc, IF
B、_if, _123, file
C、void, d, WORD
D、For, -abc, IF
E、-(减号)不能出现在名字中
F、2_a, xyz, b1_s

12、对for(表达式1;;表达式3) 可理解为
A、for(表达式1;1;表达式3)
B、for(表达式1;true;表达式3)
C、for(表达式1; 表达式1;表达式3)
D、for(表达式1; 表达式3;表达式3)
E、for(表达式1;0;表达式3)

13、对于以下代码: int i,j=6; 以下哪句话是对的?
A、i不会被初始化,而j是6
B、i和j的初始值都是6
C、i被初始为0,而j是6
D、不能通过编译

14、对于以下代码: char ch = -1; printf("%d\n", ch); 输出结果是?
A、-1
B、255
C、ASCII码表中255那个位置的字符
D、编译错误,因为赋值的时候类型不一致
E、编译错误,因为赋值的时候不能把负数赋给char
F、运行错误,因为%d和ch的类型不匹配

15、对于以下代码: int i; scanf("%d", &i); i %= 4; 执行后,i会有几种可能性?
A、7
B、0
C、1
D、2
E、3
F、不好说

16、对于以下代码: int i=6; do { printf("%d", i--); } while (0); 哪句话是对的?
A、打印出6
B、打印出5
C、因为while(0),无法编译
D、打印不出东西

17、对于以下代码: int i; for ( i=0; i<10; i++) printf("%d", i); for循环后,i的值是多少?
A、10
B、9
C、11
D、i没有确定的值
E、i不存在

18、以下哪个for语句是错误的?
A、for (i=0;j=0; i<10; i++ );
B、for (i=0;i<10);
C、for (i=0; i++ );
D、for (;;);
E、for (i=0; i<10; i--);
F、for (i=0; i<10, j<10; i++);
G、for (int i=0; i<10, j<10; i++);

19、表达式ch =‘B’+‘8’-‘3’表示的字符是:

20、以下代码的输出是 _____. int x=0, y=0, z=0; z = (x==1) && (y=2); printf("%d ", y);

21、以下代码段的结果是: int i=10; long long t = sizeof(i++); printf("%d", i);

22、表达式(double)(10/4*4) 的结果是_____

23、以下代码的输出是 : int i,x,y; i=x=y=0; do { ++i; if ( i%2 ) x+=i, i++; y +=i++; } while ( i<=7 ); printf("%d %d %d", i, x, y);

第七周:函数

7.2 函数的参数和变量随堂测验

1、以下哪句不是正确的原型?
A、int f();
B、int f(int i);
C、int f(int);
D、int f(int i) { }

2、以下哪个函数的定义是错误的?
A、void f() { }
B、void f(int i) { return i+1; }
C、void f(int i) { }
D、int f() { return 0; }

3、对于不返回值而且只有一个int类型的参数的函数,以下哪些函数原型是正确的?
A、void f(int x);
B、void f();
C、void f(int);
D、void f(x);

4、以下程序的输出是什么? #include <stdio.h> void swap(int a, int b); int main() { int a = 5; int b = 6; swap(a,b); printf("%d-%d\n", a, b); return 0; } void swap(int a, int b) { int t = a; a = b; b = t; }

第八周:数组

8.2 数组运算随堂测验

1、若有定义: int a[2][3]; 则以下选项中不越界的正确的访问有:
A、a[2][0]
B、a[2][3]
C、a[1>2][0]
D、a[0][3]

2、以下程序片段的输出结果是:int m[][3] = { 1,4,7,2,5,8,3,6,9,}; int i,j,k=2; for ( i=0; i<3; i++ ) { printf("%d", m[k][i]); }
A、369
B、不能通过编译
C、789
D、能编译,但是运行时数组下标越界了

3、假设int类型变量占用4个字节,定义数组 int x[10] = { 0,2,4}; 则x在内存中占据几个字节?

4、若有: int a[][3] = { { 0},{ 1},{ 2}}; 则 a[1][2] 的值是?

四川轻化工大学C语言第6-7章单元测验三(出题人:郑宗良)

1、有以下程序 #include<stdio.h> void main() { int a[3][2]=,(*ptr)[2],i,j; for(i=0;i<2;i++) { ptr=a+i; scanf("%d",ptr); ptr++; } for(i=0;i<3;i++) { for(j=0;j<2;j++) printf("%d",a[i][j]); } } 若运行时输入:1 2 3回车,则输出结果是______。
A、产生错误信息
B、102000
C、123000
D、102030

2、有以下程序 #include<stdio.h> void main() { char *p[]={ "3697","2548"}; int i,j; long num=0; for(i=0;i<2;i++) { j=0; while(p[i][j]!='\0') { if((p[i][j]- '0')%2) num=10*num+p[i][j]- '0'; j+=2; } } printf("%d\n",num); } 程序执行后的输出结果上______。
A、35
B、37
C、39
D、3975

3、有以下程序 #include<stdio.h> void main() { int b[3][3]={ 0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=0;j<i;j++) t+=b[i][j]; printf("%d\n",t); } 程序运行后的输出结果是______。
A、1
B、3
C、2
D、9

4、有以下程序 #include<stdio.h> void main() { int i,j; for(i=3;i>=1;i--) { for(j=1;j<3;j++) printf("%d",i+j); } } 程序的运行结果是______。
A、2 3 43 4 5
B、4 3 25 4 3
C、2 33 44 5
D、4 53 42 3

5、有以下程序 #include<stdio.h> void 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

6、有以下程序 #include<stdio.h> void main() { int a[4][4]={ { 1,4,3,2},{ 8,6,5,7},{ 3,7,2,5},{ 4,8,6,1}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]) { t=a[j][i]; a[j][i]=a[k][i]; a[k][i]=t; } /*按列排序*/ for(i=0;i<4;i++) printf("%d,",a[i][i]); } 程序运行后的输出结果是______。
A、1,6,5,7,
B、8,7,3,1,
C、4,7,5,2,
D、1,6,2,1,

7、有以下程序 #include <stdio.h> void main() { int k, j, s; for( k=2; k<6; k++,k++ ) { s=1; for (j=k; j<6; j++

学习通C语言程序设计_28

本文将介绍学习通C语言程序设计_28的相关内容。

28.1 文件操作

C语言中,我们可以使用文件操作来读取和写入文件。常见的文件操作包括打开文件、读取文件、写入文件和关闭文件。

28.1.1 打开文件

在C语言中,我们需要使用fopen函数打开文件。

FILE *fopen(const char *filename, const char *mode);

其中,filename为文件名,mode为打开方式。常见的打开方式包括:

  • \r\:只读方式打开
  • \w\:写入方式打开,如果文件已存在则清空文件内容
  • \a\:追加方式打开,如果文件已存在则在文件末尾添加内容

使用fopen函数打开文件后,会返回一个文件指针,用于后续操作文件。

28.1.2 读取文件

在C语言中,我们可以使用fscanf函数从文件中读取数据。

int fscanf(FILE *stream, const char *format, ...);

其中,stream为文件指针,format为格式控制字符串,后面的省略号表示可变参数。

例如,我们可以使用以下代码从文件中读取一个整数:

int num;FILE *fp = fopen(\test.txt\ \r\fscanf(fp, \d\ &num);

在读取完数据后,我们需要使用fclose函数关闭文件。

int fclose(FILE *stream);

其中,stream为文件指针。

28.1.3 写入文件

在C语言中,我们可以使用fprintf函数向文件中写入数据。

int fprintf(FILE *stream, const char *format, ...);

其中,stream为文件指针,format为格式控制字符串,后面的省略号表示可变参数。

例如,我们可以使用以下代码向文件中写入一行字符串:

char str[] = \hello world\FILE *fp = fopen(\test.txt\ \w\fprintf(fp, \s\\ str);

在写入完数据后,我们需要使用fclose函数关闭文件。

28.2 文件读写案例

下面是一个文件读写的综合案例,读取一个文本文件中的数据,将其中的英文单词转换为大写,再写入另一个文件中。

#include <stdio.h>#include <ctype.h>int main(){     FILE *fp1, *fp2;    char filename1[] = \input.txt\    char filename2[] = \output.txt\    char str[100];    // 打开文件    fp1 = fopen(filename1, \r\    fp2 = fopen(filename2, \w\    // 读取文件并将单词转换为大写    while (fscanf(fp1, \s\ str) != EOF)    {         for (int i = 0; str[i]; i++)        {             str[i] = toupper(str[i]);        }        // 写入文件        fprintf(fp2, \s \ str);    }    // 关闭文件    fclose(fp1);    fclose(fp2);    return 0;}

在本案例中,我们首先使用fopen函数打开两个文件,一个用于读取数据,一个用于写入数据。然后,我们使用fscanf函数从输入文件中读取一个单词,再使用toupper函数将单词中的英文字母转换为大写,最后使用fprintf函数将单词写入输出文件中。循环处理直到读取完整个文件。

在写入完数据后,我们使用fclose函数关闭两个文件。

28.3 总结

本文介绍了学习通C语言程序设计_28中的文件操作,包括打开文件、读取文件、写入文件和关闭文件。我们还通过一个文件读写的案例,展示了如何在C语言中实现文件操作。

希望本文能够对大家学习C语言文件操作有所帮助。

学习通C语言程序设计_28

本文将介绍学习通C语言程序设计_28的相关内容。

28.1 文件操作

C语言中,我们可以使用文件操作来读取和写入文件。常见的文件操作包括打开文件、读取文件、写入文件和关闭文件。

28.1.1 打开文件

在C语言中,我们需要使用fopen函数打开文件。

FILE *fopen(const char *filename, const char *mode);

其中,filename为文件名,mode为打开方式。常见的打开方式包括:

  • \r\:只读方式打开
  • \w\:写入方式打开,如果文件已存在则清空文件内容
  • \a\:追加方式打开,如果文件已存在则在文件末尾添加内容

使用fopen函数打开文件后,会返回一个文件指针,用于后续操作文件。

28.1.2 读取文件

在C语言中,我们可以使用fscanf函数从文件中读取数据。

int fscanf(FILE *stream, const char *format, ...);

其中,stream为文件指针,format为格式控制字符串,后面的省略号表示可变参数。

例如,我们可以使用以下代码从文件中读取一个整数:

int num;FILE *fp = fopen(\test.txt\ \r\fscanf(fp, \d\ &num);

在读取完数据后,我们需要使用fclose函数关闭文件。

int fclose(FILE *stream);

其中,stream为文件指针。

28.1.3 写入文件

在C语言中,我们可以使用fprintf函数向文件中写入数据。

int fprintf(FILE *stream, const char *format, ...);

其中,stream为文件指针,format为格式控制字符串,后面的省略号表示可变参数。

例如,我们可以使用以下代码向文件中写入一行字符串:

char str[] = \hello world\FILE *fp = fopen(\test.txt\ \w\fprintf(fp, \s\\ str);

在写入完数据后,我们需要使用fclose函数关闭文件。

28.2 文件读写案例

下面是一个文件读写的综合案例,读取一个文本文件中的数据,将其中的英文单词转换为大写,再写入另一个文件中。

#include <stdio.h>#include <ctype.h>int main(){     FILE *fp1, *fp2;    char filename1[] = \input.txt\    char filename2[] = \output.txt\    char str[100];    // 打开文件    fp1 = fopen(filename1, \r\    fp2 = fopen(filename2, \w\    // 读取文件并将单词转换为大写    while (fscanf(fp1, \s\ str) != EOF)    {         for (int i = 0; str[i]; i++)        {             str[i] = toupper(str[i]);        }        // 写入文件        fprintf(fp2, \s \ str);    }    // 关闭文件    fclose(fp1);    fclose(fp2);    return 0;}

在本案例中,我们首先使用fopen函数打开两个文件,一个用于读取数据,一个用于写入数据。然后,我们使用fscanf函数从输入文件中读取一个单词,再使用toupper函数将单词中的英文字母转换为大写,最后使用fprintf函数将单词写入输出文件中。循环处理直到读取完整个文件。

在写入完数据后,我们使用fclose函数关闭两个文件。

28.3 总结

本文介绍了学习通C语言程序设计_28中的文件操作,包括打开文件、读取文件、写入文件和关闭文件。我们还通过一个文件读写的案例,展示了如何在C语言中实现文件操作。

希望本文能够对大家学习C语言文件操作有所帮助。



Ɣ回顶部