电大c语言模拟试卷二,C语言模拟试卷2

C语言模拟试卷2

更新时间:2017/1/25 23:40:00  浏览量:596  手机版

C语言模拟试卷2

一.概念题 (每小题4分)

log(x?y)

1

2 试写出 数学式 w?8x?y 的C语言表达式 .设有如下定义 int x = 6;

执行语句 x??x??x*x; 后 请写出 x 的值 .

3. 设有如下定义 int x = 5, y = 6;

请写出: 如下程序段执行后的输出结果 .

printf("==== %d ",(( ++x == y++ )||(x = 8))? --x : --y ) ;

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

4. 请写出: 如下程序段执行后的输出结果

int a; a = -1;

a = a | 0377; printf(“ %d %o \n”, a, a );

5. 设有定义 char st[80], i, c;

今要求将字符串 “This is a string.” 完整记录于 st中, 试问如下四种输入方法中,

哪些方法能达到这个要求.

A. gets( st );

B. scanf( “ %20s ”, st );

C. for( i=0; i<16; i++ ) st[i]=getchar(); st[i]=?\0?;

D. i=0; while( ( c = getchar() ) != ?\n? ) st[i++] = c; st[i]=?\0?;

6 请写出: 如下程序段执行后的输出结果

char *alpha[5] = { “ABCD”, “EFGH”, “IJKL”, “MNOP”, “QRST” };

char **p = alpha; int i = 0;

while ( i < 4 ) printf( “%c ”, *( *(p+i++)+1 ) );

7. 设有定义 int a[4] = {0,4,5,13}, *p;

请写出: 如下程序段执行后的输出结果 .

p = &a[2];

printf("*--p %d\n", *--p);

printf("*p++ %d\n", *p++);

printf("++(*p) %d\n", ++(*p));

printf("%d %d %d %d\n",a[0],a[1],a[2],a[3]);

8. 设有定义 struct date

{ int day;

char month;

int year;

} dd, *pd = &dd;

请写出: 引用结构体成员 dd .day 的其它两种描述形式 .

二. 阅读题 (每小题5分) ( 阅读下列程序, 写出程序的输出结果,或根据要求回答 )

1。 [程序2.1] #include "stdio.h" main() { int n,a,x; char cc = '#';scanf("%d", &n);/*/输入 4/*/ for( x=0; x0; a-- ) putchar(cc);for( a=0; a

3.[程序2.3]

main()

{ char a[10]="ABCD", b[10]="12345678";

int i, j=1;

} for(i=3; b[i-1]!='\0'; i++) a[i]=b[i-1]; a[--i]='\0'; printf(" Result [1] "); puts(a);while ( a[j++] != '\0' ) b[j]=a[j]; printf(" Result [2] "); puts(b);

4.[程序2.4] double func4 ( double d, int n )

{ return ( n ? d*func4 ( d, n -1 ): 1.0 );

}

main()

{ double x, w; int n;

x = 6.0;

w = func4 ( x, 4 );

printf("x= %lf ", x);

printf("w= %lf\n", w);

}

5.[程序2.5]

void func5 ( int *a, int n );

main()

{ int i = 0;

static int ab[8] = {9,3,2,5,8,1,6,0};

func5 ( ab, 8 );

while ( i < 8 )

printf(" %d,` ", ab[i++]);

}

void func5 ( int *a, int n )

{ int i, t, *p;

for(i=1; i

{ for( p=a; p

{ if( *p>*(p+1) )

{ t=*p; *p=*(p+1); *(p+1)=t; }

}

}

}

6.[程序2.6].

分析如下指针函数模块sample( )的功能:

若一次键入数据: 11 20 9 24 16 0 38 46

请写出printf输出结果, 并且画出 head 所指向的链表示意图.

#include "stdio.h" typedef struct node{ int data; struct node *next;

} JD;

JD *sample ( )

{ JD *head, *q, *p; int count=0, sum=0; head=(JD*)malloc(sizeof(JD)); q=(JD*)malloc(sizeof(JD)); head->next=q; for(scanf("%d",&q->data); q->data!=0; scanf("%d",&q->data)) { q->next=(JD*)malloc(sizeof(JD)); q=q->next; } q->next=NULL; p=head->next; while( p!=NULL ){ count++; sum += p->data; p = p->next; } printf("count= %d ",count); printf("sum= %d\n", sum);

return (head);

}

三. 改错题 (8分)

下列程序中有八个错误, 按程序功能的要求, 指出和纠正所有错误,(程序行序不能改)

并以将 ″#xx 行改为 yyyy ″的形式进行解答. 例答: #3行改为 int max=0,min=100, f=1;

程序功能: (1)输入若干个学生成绩, 若输入数据大于100或小于0(除 -999外), 则不作记录, 重新输入; 当输入 –999 , 则输入结束.

统计所有输入成绩的最大值,最小值,成绩个数,平均值, 并输出之.

#1 main()#2 { int mark, n = 0, sum = 0; #3 int max = 0 , min = 100; #4 for( ; ; ); #5 { scanf("%d", mark); #6 if ( mark = -999 ) break;#7if ( mark > 100 ) #8 { printf("mark>100, Reinput!\n"); #9 break; } #10n++; sum += mark; #11if ( mark>max ) max = mark #12 #13 else min = mark; } #14 sum %= n; #15 printf("%d,%d,%d,%d\n", max,min,n,sum);

#16 }

四. 填空题 (16分)

(阅读下列程序说明和相应的C程序, 把缺少的内容填入 _______ 处, 完善该程序.)

1.[程序 7 说明] 本程序运行的结果, 输出 如右下 所示结果.

[程序7]

#define N 8

main()

{ int i, j, k ; 1 2 3 4 5 6 7 8

int a[N]; 8 1 2 3 4 5 6 7

for( i=0; i

a[ i] = i +2 ; 6 7 8 1 2 3 4 5

a[ N-1] = _______(1)________ ; 5 6 7 8 1 2 3 4

for(j=0; j

{ gosub( _______(2)_______ ) ; 3 4 5 6 7 8 1 2

for(k=0; k

printf(" %2d ", a[k]);

_________(3)__________ ; } } gosub(int a[], int n) { int t, i; t=a[n];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值