1、一、单项选择题:1对于一个正常运行和正常退出的 C 程序,以下叙述正确的是 。A)程序从 main 函数第一条可执行语句开始执行,在 main 函数结束B)程序的执行总是从程序的第一个函数开始,在 main 函数结束C)程序的执行总是从 main 函数开始,在最后一个函数中结束D)从程序的第一个函数开始,在程序的最后一个函数中结束2以下不能对二维数组 a 进行正确初始化的语句是 。A)int a 23=0; B)int a 3=1,2,0;C)int a 23=1,2,3,4,5,6; D)int a 3=1,2,3,4,5,6;3有以下程序片断float fun(int x, int y)r
2、eturn (x+y);main()int a=2,b=5,c=8;printf(“%3.0fn“, fun(int)fun(a+c,b), a-c);程序运行后的输出结果是 。A)编译出错 B)9 C)21 D)9.04.下列程序执行后的输出结果是 。#include main() int a33, *p, i;p = for (i=1; imain( )int a = 5, b = 4, x, y;x = 2 * a+;printf(“a=%d, x=%dn“, a, x);y = -b * 2;printf(“b=%d, y=%dn“, b, y);则正确的执行结果是 。A) a=6,
3、x=10 b=3, y=8 B) a=6, x=10 b=3, y=6C) a=6, x=12 b=3, y=6 D) 以上均不对6对于以下程序片段 ,描述正确的是 。int x = -1;do x = x * x;while(!x);A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误7. 二维数组 a 有 m 行 n 列,则在 aij之前的元素个数为( ) 。A. j*n+i B. i*n+j C. i*n+j-1 D. i*n+j+1二、写出下列程序的运行结果。(15 分,每题 3 分)1#include main()int n = 0;char c;while(c=getc
4、har( ) != n)if (c=0 switch (a)case 1:switch (b)case 0: a+;b+;printf(“a=%d, b=%dn“, a, b);break;case 1: a+;b+;printf(“a=%d, b=%dn“, a, b);break;case 2: a+;b+;printf(“a=%d, b=%dn“, a, b);break;运行结果是:a=2,b=1a=3,b=23#include#includemain()printf(“%dn“, strlen(“IBMn0121“);程序运行结果是:94#includemain()int i, a1
5、0;int *p;p = a;for (i=0; i 23 4 5 6 7 8 910 时 , 则 程 序 运 行 结 果 为 : 1 2 3 4 5 6 7 8 9 101 3 5 7 95#include int mod(int x, int y)return (x % y);main()int m, n, r; scanf(“%d %d“, r = mod(m, n);while (r != 0)m = n;n = r;r = mod(m, n);printf(“The Result is :%dn“, n);程 序 运 行 时 输 入 : 8118 ,则 运行结果是 :The Resu
6、lt is:9三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(16 分,每空 2 分)1.以下程序将输入的十进制数以十六进制的形式输出。#include main()char b17= “0123456789ABCDEF“;int c64,d, i=0, base = 16;long number;printf(“请输入一个十进制数 n“);scanf(“%ld“, do ci = number%base ;number = number / base;i+ ;while (number != 0);printf(“对应的十六进制数为 : n“);for(
7、-i; i=0 ; -i)d = ci;printf(“%c“, bd );printf(“n“);2用户从键盘任意输入一个数字表示月份值 n,程序显示该月份对应的英文表示,若 n 不在112 之间,则输出“Illegal month” 。#include main()int n;static char monthName20=“Illegal month“, “January“,“February“,“March“, “April“, “May“, “June“,“July“, “August“,“September“, “October“, “November“, “December“;p
8、rintf(“Input month number:“);scanf(“%d“, if ( n=1 found=0int a10=1, 5, 6, 9, 11, 17, 25, 34, 38, 41;scanf(“%d“, find); while (up=low | !found) found没有初始值, up=low if( amid = find ) amid = = findfound=1; break;else if(amidfind)up=mid+1; up=mid-1;else low=mid+1;if(found) printf(“found number is %dth“,
9、mid);else printf(“no found“); 2计算十个数据的平均值。#include void main(void)int i, sum; sum=0 ;float avg;int sc10, *p = sc;for (i=0, i#include void Inverse(char rstr) void Inverse(char rstr);main()char str80;printf(“Input a string:n“);gets(str);Inverse(str);printf(“The inversed string is:n“);puts(str);void In
10、verse(char rstr)int i,n;char temp;for(i=0, n=(strlen(rstr); iaverage)count+;printf(“%dn“,count); for (j=0;j=18;j+)for (i=0;i=18-j;i+)if (scoreiscorei+1) t=scorei;scorei=scorei+1;scorei+1=t;printf(“the sorted numbers:n“);for (i=0;i20;i+)printf(“%5d“,scorei);3. 利用公式 2= .765431前 100 项之积计算并打印值。(8 分)#include “stdio.h“main()float pi=1.0;long i;for (i=2;i=200/2;i=i+2)pi=pi*i/(i-1)*i/(i+1);printf(“%f“,pi*2);