C_8练习题

答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

  1. 编写C语言程序一般需经过的几个步骤依次是()。

A.编辑、调试、编译、连接
B.编辑、编译、连接、运行
C.编译、调试、编辑、连接
D.编译、编辑、连接、运行

2.以下标识符中,不合法的是()

A. 4d
B._8_d
C. Int
D. key

  1. 以下叙述正确的是()

A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误

4,以下不合法的数值常量是()

A.0112
B. 1.34el
C. 8.0E0.5
D.0x12cd

5.若变量已正确定义并赋值,符合C语言语法的表达式是()

A.a=2++
B. a=3,5
C.a=a+1=3
D.12.3%4

6.C语言中,关系表达式和逻辑表达式的值是()

A.0
B.1
C.0或1D
. T’或’F’

  1. 变量pi为double型,以下判断pi的值等于3.14写法最恰当的是()

A. pi=3.14
B.pi==3.14
C.pi-3.14=0
D. (pi-3.14 <= le-6) &&(pi-3.14>=-le-6)

  1. 在C语言中(以32位PC机为例),5种基本数据类型的存储空间长度的排列顺序为()

A. char <int = long int <=float < double
B. char= int < long int <=float < double
C. char <int <long int = float= double
D. char=int= long int <= float < double

  1. 这是一设 int b=2;表达式(b>>2)/(b>>1)的值是()。

A2
B.0
C.4
D.8

10.程序员要想调用输入输出函数,需要在程序的开头写上语句()

A. #include <stdlib.h>
B.#include <stdio.h>
C. #include <math.h>
D.#include <string.h>

11.下列程序段的输出结果是()。

int main()
{
    int a = 2, b= -1, c = 2; 
    if(a<b)
        if(b<0)
            c=0;
    else c++;
    printf("%d\n",c);
    return 0;
}

A.0
B.1
C.2
D.3

12.以下程序段的输出结果是()。

int i, j;
for (j== 10; j<11;j++)
    for (i = 9; i == j - 1; i++)
    printf("%d"、j);

A. 11
B. 10
C.9
D.10 11

13,有定义语句int a[5).i输入数组a的所有元素的语句应为()

A.scanf(“%d%d%d%d%d”.a[5]);
B. scanf(“%d”,a);
C.for(i=0;i<S;i++)scanf(“%d”.&a[i]):
D. for(i=0;i<5;i++) scanf(“%d”.a[i]):

14,假定char类型变量占用1个字节,且数组定义如下char tab_str [10][81];,则数组tab_str在内存中所占字节数是()

A.810
B.10
C.81
D.0

15,假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是()

A. char s[5]=(“ABCDE”}; puts(s);
B. char s[5)=(‘A’, ‘B’, ‘C’, ‘D’,‘E’}; puts(s);
C. char *s; scanf(“%s”, s); puts(s);
D. char *s;s=“ABCDE”; puts(s);

  1. 下列程序的输出结果是()。
int fun(int x)
{
    static int a = 3;
    a+=x;
    return (a);
    }
    int main(){
        int k = 2, m = 1, n;
        n = fun(k);  n = fun(m);
        printf("%d\n", n); 
        return 0;
    }
        

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

  1. C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是( )。

A.地址传递
B.值传递
C.由实参传给形参,再由形参传给实参
D. 由用户指定传递方式

18.若有如下定义,则()的值是34。
int a=(5, 15, 34, 54, 14, 2, 52, 72);
int *p= &a[1];

A. p[1]
B. p[2]
C. p[o]
D. p[3]

19,下面定义结构变量的语句中错误的是()

A. struct student{ int num; char name[20]; } s;
B. struct {int num; char name[20];} s;
C. struct studentf int num; char name[20]; ); struct student s;
D. struct student{ int num; char name[20); ); student s;

20.下面程序的输出结果是()。

#include<stdio.h>
void fun (int *x, int *y){
    printf("%d%d",*x,*y);
    *x=3;*y=4;
}
int main(){
    int x=1,y=2;
    fun(&x,&y);
    printf("%d%d",x,y);
    return 0;
}

Α.2134
B.1212
C.1234
D.2112

二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。

1________

//从键盘上输入china#回车
#include <stdio.h>
void main()
{
    int c1=0,c2=0;
    char ch;
    while((ch=getchar())!='#')
        switch(ch)
        {case 'a': case 'h':c1++;
        default:c2++;}
        printf("cl=%d,c2=%d\n",c1,c2);
}

2_______

#include<stdio.h>
int counter()
{
    static int c=0;
    return ++c;
}
void main()
{
    int i;
    for(i=0;i<2;i++)
    {
        int c,j;
        c = counter();
        for(j=0;j<c;j++)
        printf("%d",counter());
    }
}

3_______

#include<stdio.h>
void main(){
    int i=3,j=6,k=9;
    printf(“i=%d j=%d k=%d\n",*(&i),j,k);
}

4_______

//输入92
#include<stdio.h>
void main(){
    struct stud
    {
        int no;
        char*name;
        float score;
        }stu1,stu2;
        stu1.no=1001;
        stu1.name="Wang yong";
        printf("Input score: ");scanf("%f" ,&stu1.score); 
        stu2=stu1;
        printf("No: %dnName: %slnScore: %5.1fn",stu2.no,stu2.name,stu2.score);
}

5_______

#include<stdio.h>
void main()
{
    char a[]="I love China!",b[20];
    int i;
    for(i=0;a[i]!='\0';i++)
        b[i]=a[i];
    b[i]='\0';
    printf("string a is:%s\n",a);
     printf("string a is:%s\n",b);
}

三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)

  1. 以下程序将字符串s1中的所有与字符串strl相同的子串替换字符串str2,并将替换后的新串存于字符数组s2中。
#include<stdio.h>
void fun(char *sl,char *s2,char *strl,char *str2)
{
    char *t0,*t1,*t2,*x,*y;
    x=s1;y=s2;
    while(_______)
    {
        for(t0=s1,tl=strl;(*t1!="\0'&&________)); t0++,tl++); if(______)*s2++=*s1++;
            else{
                for(t1=str2;*tl!='\0';) *s2++=________;
                s1=t0;
                }
            }
            ________;
        }
        void main(){
            char s10="abedef ababed abab.",s2[25];
            fun(s1,s2,"abc","XYZ");
            printf("%sln",s2);
        }

2.输入一个整数,将它逆序输出。要求定义并调用函数reverse(long number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。请将函数补充完整。

long reverse(long number)
{
int flag;
long res=0;
flag= number<0?-1:1;
if(________)number=-number;
while(number != 0){
	res=__________;
	number /= 10;
	}
	return flag*res;
}

四、编程题(本大题共 3小题,每小题 15分,共 45分。请在答题纸的相应位置上作答。)

1,为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y元)与月用水量x(吨)相关:当x不超过15吨时,y-4x/3;超过后,y=2.5x-17.5。编写程序实现水费的计算。

  1. 一条蠕虫长 1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息 1 分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了并的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

3.编写函数void sort(char "words 1, int n);对一组英文单词进行按字典排序。在主函数中输出原无序的单词和排序后的单词。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJlio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值