好文档 - 专业文书写作范文服务资料分享网站

大学C语言期末考试练习题(带详解答案) 

天下 分享 时间: 加入收藏 我要投稿 点赞

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++; }

printf(“s=%d\\t count=%d\\n”, s, count”); }

8. 输入一个正整数n (1

#include int main(void){

int i, index, k, n, temp;

/* 定义1个数组a,它有10个整型元素*/ printf(“Enter n: \

printf(“Enter %d integers: \ for(i = 0; i < n; i++) scanf(\

for(k = 0; k < n-1; k++){ /* 对n个数排序 */ index = k;

for( ) if( ) index = i; }

printf(\

for(i = 0; i < n; i++) /* 输出n个数组元素的值 */ return 0;}

四、 程序改错

一、 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。

1.求1?2?3?4???n main()

{ long int sum; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定义用于存放运算结果的变量时,一定要赋初值。一般赋值0或者循环初值。

int n,i=1;

scanf(\ //若scanf语句有错误,常见考点有两个:(1)格式声明符号要与后面欲赋值的变量的类型一致,此题%d与n的类型int一致(详见p69-78);(2)变量的前面要有地址符号&

printf(“\\n”);

while(i

{ sum=sum*i; // 若不为sum赋初值,则此处无法计算sum*i。 i++; }

printf(\ //若printf语句有错误,常见考点有1个:格式声明符号要与后面欲输出的变量的类型一致,此题%d与sum的类型long int不一致,应改为%ld

8x8516pjq775cln2zb9f
领取福利

微信扫码领取福利

微信扫码分享