C语言题库(带详解答案)(9)

2019-08-30 22:37

符串%s的形式输出以p中地址为首地址的整个字符串,此时p指向s[1],即 从s[1]开始,依次输出后面的字符串,因此又输出BCD

执行完循环体,转向执行表达式3,即p= p+1。p+1表示以p当前所指向的

位置起始,之后1个元素的地址,即s[2]的地址,然后将a[2]的地址赋给p。 s[2]的地址等价于s+2,因此循环条件p

执行printf(?%c %s\\n?,*p,p);即以字符%c形式输出*p所对应的字符。此时p指

向数组中的第3个元素,即s[2],因此*p表示s[2]中的值,即’C’. 然后再以字 符串%s的形式输出以p中地址为首地址的整个字符串,此时p指向s[2],即 从s[2]开始,依次输出后面的字符串,因此又输出CD

执行完循环体,转向执行表达式3,即p= p+1。p+1表示以p当前所指向的

位置起始,之后1个元素的地址,即s[2]的地址,然后将s[2]的地址赋给p。 s[2]的地址等价于s+3,因此循环条件p

执行printf(?%c %s\\n?,*p,p);即以字符%c形式输出*p所对应的字符。此时p指

向数组中的第4个元素,即s[3],因此*p表示s[3]中的值,即’D’. 然后再以字 符串%s的形式输出以p中地址为首地址的整个字符串,即输出D

执行完循环体,转向执行表达式3,即p= p+1。p+1表示以p当前所指向的

位置起始,之后1个元素的地址,即s[3]的地址,然后将s[3]的地址赋给p。 s[3]的地址等价于s+4,因此循环条件p

结构体 1.

#include struct st { int x; int y;

} a[2]={5, 7, 2, 9} ; main() {

printf(\}

运行结果是: 14

首先是定义结构体st,st中共有两个整型成员x,y。

然后定义一个st类型的数组a,a的长度为2,即数组中含有两个st类型的元素,分别是a[0]和a[1]. 对a进行初始化,此题是按照储存顺序进行初始化,即将5赋给a[0]中的x(即a[0].x=5); 将7赋给a[0]中的y(即a[0].y=7); 将2赋给a[1]中的x(即a[1].x=2); 将9赋给a[1]中的y(即a[1].y=9);

执行main函数,输出表达式a[0].y*a [1].x的值,即7*2的值

5 a[0].x a[0] 7 a[0].y 2 a[1].x a[1] 9 a[1].y 2. #include main( )

{struct stu {int num;

char a[5]; float score;

}m={1234,?wang?,89.5}; printf(?%d,%s,%f?,m.num,m.a,m.score); }

运行结果是: 1234,wang,89.5 3.

#include struct cmplx { int x; int y;

} cnum[2]={1, 3, 2, 7}; main( ) {

printf(?%d\\n?, cnum[0].y * cnum[1].x ); }

运行结果是:6 与第一题解法同

4.

#include struct abc

{ int a, b, c; }; main()

{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;

t=s[0].a+s[1].b; printf(\}

运行结果是:6

与第一题解法同

二、 程序填空

1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。

main( ) { char ch; ch=getchar();

if( ch>=’a’&&ch<=’z’|| ch>=’A’&&ch<=’Z’ ) printf(\ else if( ch>=’0’&&ch<=’9’ )

printf(\else if( ch== ‘ ’ )

printf(\ else

printf(\

第1空:字符在计算机中以ASCII码的形式存储。所以当输入的字符,即ch中字符所对应的ASCII码的范围在英文字母的ASCII码的范围内即可,参照p377。由于英文字母又分为大写字母和小写字母,因此此处用一个逻辑或表达式,表示ch中是小写字母或者大写字母,都能使得表达式成立。ch>=97&&ch<=122|| ch>=65&&ch<=90

需要注意的是,对于本题区间所对应的表达式,不可写作97<=ch<=122,也不可写作’A’<=ch <=’Z’. 对于97<=ch<=122因为在计算此表达式时的顺序是从左向右,因此先计算97<=ch。无论ch中的取值如何,表达式97<=ch的值只有两种情况:0或1.所以无论是0还是1,都小于122,因此97<=ch<=122恒成立。

第3空,判断ch中是否为空格,也是通过ch中字符与空格字符的ASCII码来判断。在判断表达式的值是否相等时,用关系符号==;不要用赋值符号=。

2.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。用输入0来结束输入,用i,j来放统计数,请填空完成程序。 void main()

{ int n,i=0,j=0;

printf(?input a integer,0 for end\\n?);

scanf(?%d?,&n);

while ( n或n!=0 ) {

if(n>0) i= i+1 ;

else j=j+1; }

printf(?i=M,j=M\\n?,i,j); }

此题用i来记录大于零的整数,用j记录小于零的整数。所以循环条件是n(或者n!=0)即当n不为0时执行循环体。在循环体中是一个选择语句。如果n>0,则令i加1,相当于令正整数的个数加1;否则(即n<0),令j加1,相当于令负整数的个数加1。

3.编程计算1+3+5+……+101的值

#include void main() { int i, sum = 0;

for (i = 1; i<=101 ; i=i+2; )

sum = sum + i;

printf(\

for语句的一般形式详见p120.

表达式1为i = 1,为循环变量赋初值,即循环从1开始,本题从1到101,因此终值是101,表达式2是循环条件,用来控制循环的结束,因此循环条件为i<=101;表达式3为循环变量的自增,本题是

4.编程计算1+3+5…+99的值

main()

{ int i, sum = 0;

i=1;

while ( i<100 )

{ sum = sum + i;

I=i+2 ; } printf(\}

5.从键盘输入一个字符,判断它是否是英文字母。 #include void main()

{char c;

printf(\ c=getchar();

if(c>= ‘A’ &&c<= ‘Z’ || c>=‘a’ &&c<= ‘z’) printf(\\\n\ else printf(\}

6. 下面程序的功能是在a数组中查找与x值相同的元素所在位置,请填空。 #include void main() { int a[10],i,x;

printf(?input 10 integers:?); for(i=0;i<10;i++)

scanf(?%d?,&a[i]);

printf(?input the number you want to find x:?);

scanf(?%d?, &x );

for(i=0;i<10;i++)

if( x==a[i] ) break;

if( i<10 )

printf(?the pos of x is:%d\\n?,i);

else printf(?can not find x!\\n?); }

7.程序读入20个整数,统计非负数个数,并计算非负数之和。 #include main( )

{ int i, a[20], s, count; s=count=0;

for(i=0; i<20; i++) scanf(?%d?, &a[i] ); for(i=0; i<20; i++)

{ if( a[i]<0 ) continue ; s+=a[i] ; count++; }


C语言题库(带详解答案)(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016工程咨询继续教育考试市政隧道工程试卷100分

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: