C_4练习题

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

  1. 定义如下变量和数组:
    int i;
    int x[3][3]={1,2,3,4,5,6,7,8,9};
    则下面语句的输出结果是()
    for(i=0;i<;i++) printf("%d",x[i][2-1]);

A. 159

B. 147

C. 258

D. 369

  1. 函数调用:strcat(strepy(strl,str2),str3)的功能是()

A.将串str1复制到串st2中后再连接到串str3之后

B. 将串 strl 连接到串 str2之后再复制到串 str3 之后

C. 将串str2 复制到串 str1 中后再将串 str3 连接到串 strl 之后

D.将串str2连接到串str1之后再将串str1复制到串 str3中

3.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是()

A. x&&y

B. x>=y

C. xl++y&&y-z

D. x<y&&!zl1

  1. 设有如下定义:
    . struct sk
    {
    int a;float b;}
    data,*p;
    若有p-&data;,则对data中的a成员的正确引用是().

A. (*pdata.a

B. (*p).a

C. p->data.a

D. p.data.a

5.执行下面的程序后,结果是()

c 复制代码
#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 += 3;
            continue;
        }

        printf("%d ", a);
    }

    b = 5;
}

A.2

B. 8

C.4

D. 10

7,若调用一个函数,且此函数中没有retum语句,则以下正确的说法是()

A. 该函数没有返回值

B. 该函数返回若干个系统默认值

C.该函数能返回一个用户所希望的函数值

D.该函数返回一个不确定的值

8,下列四组选项中,均不是C语言关键字的选项是()

A. define IF type

B. getc char print

C. includecasescanf

D. whilegopow

  1. inta,*p;p=&a;下列写法不等价的是()

A. *(p++)=a++

B. &*p=&a

C. (*p)+=a++

D. *&a=a

  1. 若有以下定义和语句:inta [10] = {1, 2, 3, 4. 5, 6, 7, 8, 9, 10}, *p=a;则不能表示a数组元素的表达式是()

A. p

B. a [10]

C. *a

D. a [p-a]

  1. C语言中,运作对象必须是整型数的运算符是()

A. %

B.

C. %和、

D.**

12.设有如下定义: int x=10,y=3z;则语句printf("%din",2-(x%yx/y));的输出结果是()

A. 1

B. 0

C. 4

D. 3

  1. 以下不正确的if语句是()

A. if(m>n);

B. if(m=n)m+=n;

C. if(m!=n) scanf("%d", &m); else

scanf("%d", &n);

D. if(m=n)&&(n!=0) n+=m;

14,设有说明int*ptr[M];其中的标识符ptr是()

A. M 个指向整型变量的指针

B.指向M个整型变量的函数指针

c.一个指向具有M个整型元素的一维数组的指针

D.具有M个指针元素的一维指针数组名,每个元素都只能指向整型变量

15.设有语句: "int a=1, b=2, *pl=&a, *p2=&b;",则使指针pi指向变量b的赋值语句是()

A. pl=*p2

B. *pl=p2

C. pl=p2

D. *pl=*p2

16,有如下程序

#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("%dn",n[k]);

}

该程序的输出结果是()

A. 不确定的值

B. 2

C. 1

D. 0

17有以下程序,执行后输出结果是( )

#inolude <stdio.h>

void main{

int x[8]=(8,7,6,5,0,0},*s;

s=x+3;

printf("%dn",s[2]);

}

A. 随机值
B.0
C.5
D.6

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

#include <sidio.b>

void main()

{

int x=3,y=0,z=0

if(x=y+z)printf("*");

else printf("# # # #");

}

A. 有语法错误不能通过编译

B.输出

C.可以通过编译,但是不能通过连接,因而不能运行

D.输出####

  1. 以下程序的输出结果是()
    #include<stdio.h>
    void main()
    {
    printf"%dn",NULL);}

A. 不确定的值(因变量无定义)

B.0

C. -1

D. 1

  1. 以下程序的输出结果是()
    #include <stdio.h>
    void main()
    {char *s="2468";
    int ql=0,q2=2;
    printf("%s%sin",s+ql,s+q2);
    }

A. 26

B. 246868

C.输出项不合法

D. 存放字符的地址值

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

c 复制代码
//从键盘输入china
#include <stdio.h>

int main() {
    int v1 = 0, v2 = 0;
    char ch;

    while ((ch = getchar()) != '\n') {
        switch (ch) {
            case 'a':
            case 'h':
            default:
                v1++;
            case 'n':
                v2++;
        }
    }

    printf("%d,%d\n", v1, v2);

    return 0;
}

2------------------------

c 复制代码
#include <stdio.h>

int main() {
    int v1 = 0, v2 = 0;
    char ch;

    while ((ch = getchar()) != '\n') {
        switch (ch) {
            case 'a':
            case 'h':
            default:
                v1++;
            case 'n':
                v2++;
        }
    }

    printf("%d,%d\n", v1, v2);

    return 0;
}

3------------------------

c 复制代码
#include <stdio.h>

int k = 0;

void fun(int m) {
    m += k;
    k += -m;
    printf("m=%d, k=%d ", m, k++);
}

int main() {
    int i = 4;
    fun(i++);
    printf("i=%d, k=%d\n", i, k);

    return 0;
}

4_______

c 复制代码
#include <stdio.h>

int a = 5;

void fun(int b) {
    static int a = 10;
    a += b++;
}

int main() {
    int c = 20;
    fun(c);
    a = c;
    printf("%d\n", a);

    return 0;
}

5______

c 复制代码
#include <stdio.h>
#include <string.h>

int main() {
    char str1[20] = "good", str2[20] = "morning";
    int i, j;

    for (i = strlen(str1) + 1, j = 0; str2[j] != '\0'; i++, j++) {
        str1[i] = str2[j];
    }

    str1[i] = '\0';
    printf("string=%s", str1);

    return 0;
}

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

#include <stdio.h>

void swap(int *pl, int *p2)

{

①;

t=*pl; *pl=*p2; *p2=t;

}

void main0

{

int x=5, y=7;

int *px=&x, *py=&y;

swap(②);

printf("%d, %d \n", x, y);}

  1. 下面 invert 函数的功能是将一个字符串 str 的内容颠倒过来。请填空。

void invert(char str)

{

int i,j,k;

for(i=0,j= ;i<j;_②,③)

k=str[i];

str[i]=str[j];

str-k;

}

3下面程序的功能是输出一个整形数组x中的最大值。
c 复制代码
#include<stdio.h>
	#define N 10
	int fimax(int y,int);
	void main
	{
		int i,x[N]
		for(i=0;i<N;i++)
			scanf("%d",&x[i])
		prinft("%d",①)
		}
		int fmax(int y[],int n)
		{
			int k=0,i;
			for(i=0;i<n;i++)
			scanf("%d",&x[i]);
			printf["%d",①;)
			}
			int fimax(int y[],int n)
			{
				int k=0,i;
				for(i=0;i<n;i++)
				if(y[i]>y[k])
				②;
				return k;
			}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)1.从键盘输入一个日期(某年某月某日),假定输入的日期总是正确的,输出该日期是该年第几天。

1.从键盘输入一个日期(某年某月某日),假定输入的日期总是正确的,输出该日期是该年第几天。

  1. 编写函数,判断一个正整数是否为完数。主函数输入输出。完数:一个数如果恰好等于它的因子之和,称该数为"完数"。1不是完数。如6=1+2+3,则6为完数。

  2. 补全程序:

    #include<stdio.h>

    int main()

    {

    char ch[100]="good morning,haha",ch1[40]="good aftemoon";

    int count=0,

    len;strappend(ch,chi)//将 chl 中字符串连接到 ch 尾部

    count=replace(ch,o);//将 ch中某字符(o)转大写,并返回转换的个数return 0;

    }

相关推荐
林开落L9 分钟前
前缀和算法习题篇(上)
c++·算法·leetcode
远望清一色10 分钟前
基于MATLAB边缘检测博文
开发语言·算法·matlab
tyler_download11 分钟前
手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程
算法·chatgpt
何曾参静谧18 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices22 分钟前
C++如何调用Python脚本
开发语言·c++·python
SoraLuna31 分钟前
「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
算法·macos·动态规划·cangjie
我狠狠地刷刷刷刷刷35 分钟前
中文分词模拟器
开发语言·python·算法
鸽鸽程序猿35 分钟前
【算法】【优选算法】前缀和(上)
java·算法·前缀和
wyh要好好学习38 分钟前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
AitTech38 分钟前
C#实现:电脑系统信息的全面获取与监控
开发语言·c#