c语言网上教学,电子科技大学网络教育C语言(2020年春)

这篇博客主要介绍了C语言的基础知识,包括选择题和程序分析。内容涵盖变量、数据类型、流程控制、数组、字符串、指针、结构体、文件操作等方面,测试了读者对C语言基本概念和语法的理解。程序分析部分涉及内存分配、数组操作、指针运算、文件读写等实际编程问题。
摘要由CSDN通过智能技术生成

d5700cb232f42bb9888f6bd467fcb9bd.png

一、单项选择题(每题2分,共30分)

1.请问:下面这个程序段的输出是什么?( D )

int a=7,b=8,c=9;

if(a

printf("a=%d b=%d c=%d\n",a,b,c);

A . a=7 b=8 c=7 B. a=7 b=9 c=7

C. a=8 b=9 c=7 D. a=8 b=9 c=8

2.C语言对嵌套 if 语句的规定是:else总是与( D )配对。

A.其之前最近的 if B.第一个 if

C.缩进位置相同的 if D. 其之前最近且不带 else 的 if

3.有以下程序段:

int k=0;

while(k=1) k++;

while循环执行的次数是( A )。

A.无限次 B.有语法错,不能执行

C. 一次也不执行 D.执行1次

4.若有语句:

tatic char x[]="12345";

static char y[] = {'1','2','3','4','5'};

则下面那一个是正确的描述。( 2 )

A.x数组和y数组的长度相同。

B.x数组长度大于y数组长度。

C.x数组长度小于y数组长度。

D.x数组等价于y数组。

5.若有定义:int a[5][6]; 则下面关于数组a的叙述中正确的是( C )。

A.该数组共有20个元素 B.a[0][6]是该数组的一个元素

C.a[0][0]是该数组的一个元素 D.a[5][6]是该数组的一个元素

6.对局部变量不正确描述( B )

A.在不同块内可以使用相同的变量名而不会混淆。

B.局部变量在任何一个函数内有效。

C.局部变量的初值每调用一次赋一次

D.用auto说明的变量为局部变量。

7.凡是函数中未指定存储类别的局部变量,隐含的存储类别为( A )。

A.auto B. register C. static D. extern

8.在说明语句:int *f( );中,标识符f代表的是( A )

A.一个返回值为指针型的函数名

B. 一个用于指向整型数据的指针变量

C.一个用于指向函数的指针变量

D.一个用于指向一维数组的行指针

9.typedef( D )

A. 可以定义各种类型名和变量名。

B. 可以创造新的数据类型。

C. 和#define作用相同。

D.  只是对已存在的类型增加一个类型名,不能创造新类型。

10.若fp已正确定义为一个文件指针,d1.dat为二进制文件,为“读”而打开此文件的语句是( B )。

A.fp=fopen("d1.dat","r"); B.fp=fopen("d1.dat","rb");

C.fp=fopen("d1.dat","r+"); D.fp=fopen("d1.dat","w");

11.以下选项中,当x为大于1的奇数时,值为0的表达式是( D )。

A.x%2==1 B.x/2 C.x%2!=0 D.x%2==0

12.若有定义:int w[3][5]; ,则以下不能正确表示该数组元素的表达式是( B )。

A.*(*w+3) B.*(w+1)[4] C.*(*(w+1)) D.*(&w[0][0]+1)

13、有以下程序段typedef struct node {int data;struct node *next;}* NODE; NODE p; 以下叙述中正确的是__________C________。

A.p是指向struct node结构体变量的指针的指针

B.NODE p;语句出错

C.p是指向struct node结构变量的指针

D.p是struct node结构变量

14、若有程序段:double x=-5.9;int y;y=(int)x; 执行该段程序后_____A_____。

A.x=-5.9,y=-5 B.x=-5.9,y=-6

C.x=-5,y=-5 D.x=-6,y=-6

15.已知 int b; 则对指针变量正确的说明和初始化是:__D__

A.int *p=b; B.int p=b; C.int p=&b; D.int *p=&b;

二、判断题(每题1分,共10分)

( √ )1.执行char c[3]=”ab”, *p; p=c;程序段后,*(p+1)的值是 b , *(p+2)的值是 \0 。

( × )2.C语言中,变量名用大小写是等价的。

( √ )3.强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。

( ×)4.存储字符串所需的内存空间等于字符串的长度。

( √ )5.C语言中,注释可以出现在源程序的任何位置。

( ×)6.整型、字符型、指针型是C语言中最简单的数据类型。

( √ )7.全局变量在整个源程序文件中都有效。

( × )8. switch选择结构中必须有default子句。

( √ )9.如果x>y或者ay||a

( √ )10.结构成员名可以与程序中的变量同名,也可以与结构类型名相同,而不会混淆。

三、分析程序给出运行结果(每题5分,共25分)

1.以下程序的运行结果是:

#include "stdio.h"

#include "stdlib.h"

struct data

{ int x,y; };

void main()

{ struct data * p;p=(struct data *)malloc(sizeof(struct data));

(*p).x=3;(*p).y=4;

printf("%d %d\n",p->x,p->y);

free(p);

}

答案:3 4

2.分析下面程序的运行结果。

#include

int main()

{ int i,j, row=0, colum=0, max;

int a[3][4] = {{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

max=a[0][0];

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

{ for (j=0;j<=3;j++)

{ if (a[i][j]>max)

{ max = a[i][j];

row = i;

colum=j;

}

}

}

printf("max=%d,row=%d,colum=%d\n", max, row, colum);

return 0;

}

答案:max=10,row=2,colum=1

3.分析下面程序的运行结果。

#include

main()

{char ss[]="2345678";

ss[5]='\0';

printf("%s\n",s);

}

答案:23456

4.给出以下程序的运行结果。

#include

main( )

{

printf("%d %x %o\n",88,88,88);

printf("%d %x %o\n",025,025,025);

printf("%d %x %o\n",0x31,0x31,0x31);

return 0;

}

答案:88 58 130

21 15 25

49 31 61

5. main()

{ char a[]="This is a program.",b[20];

int i=0;

while(a[i]!='\0')

{ b[i]=a[i];

i++; }

b[i]='\0';

printf("string a is: %s\n",a);

printf("string b is: ");

for(i=0;*(b+i)!='\0';i++)

printf("%c",*(b+i));

printf("\n");

}

答案:string a is: This is a program.

string b is: This is a program.

四、完善程序填空题(每题5分,共15分)

1.将一个数组中的值按逆序重新存放,

#include

void main()

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

int x[20];

printf("输入需排序的个数%d\n",n);

scanf("%d",&n);

for(i=0;i

{ scanf("%d,", &x[i]); }

m =(n-1)/2;

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

{ j =n-1-i;

temp = x[i];

x[i] = x[j];

x[j] = temp;

}

}

2.将原文件file1.c的内容读出并显示, 同时将其内容写入file2.c文件中。

#include

main()

{ FILE *fp1,*fp2;

fp1=fopen("file1.c","r");

fp2=fopen("file2.c","w");

while(!feof(fp1)) putchar(getc(fp1));

rewind(fp1);

while(!feof(fp1)) putc(getc(fp1),fp2);

fclose(fp1);fclose(fp2);

}

3. 统计字符串中小写字符的个数。

#include "stdio.h"

main()

{

char str[20];

int i,n=0;

gets( );

for(i=0;str[i]!= "/0";i++) 改为‘\0’

if(str[i]>='a'&&str[i]<='z')

n++;

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

}

五、编程题 (每题10分,共20分)

1. 请编制程序实现:判断一个数能否同时被5和8整除。

答:算法如下:

#include

int main()

{ int x;

printf("\n为X输入值");

scanf("%d", &x);

if (x%5==0)

{ if(x%8==0)

{ printf("\nX能被5和8整除:X=");

printf("%-5d\n",x);

}

else printf("\nX不能被8整除");

}

else printf("\nX不能被5整除");

return 0;

}

2.编制程序:要求能从键盘上输入任意五个字符串,用指向指针的指针的方法或指针数组的方法对5个字符串排序并输出排序后的结果。

答:

main()

{ int i;

char **p,*pstr[5],str[5][20];

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

pstr[i]=str[i];

printf("input 5 strings value:\n");

for(i=0;i<5;I++)

scanf("%s",pstr[i]);

p=pstr;

sort(p);

printf("output strings after sort:\n");

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

printf("%s\n",pstr[i]);

}

sort(p)

char **p;

{ int i,j;

char *pchange;

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

{

for(j=i+1;j<5;j++)

{ if(strcmp(*(p+i),*(p+j))>0)

{ pchange = *(p+i);

*(p+i) = *(p+j);

*(p+j) = pchange;

}

}

}

}

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值