1、一 选择题1 C 2 B 3 A 4 D 5 D 6 B 7 都正确 8 A 9 D 10 A11 A 12 B 13 D 14 A 15 B二 填空题1 按行排序 2 2,4 3 字符数组 4 数组第一个元素地址 5 0 6 1 5 9 2 6 103 7 114 8 12 7 * * * * 8 * * * *9 12 13 3 14 6 4 110 abcde11 i=1 xi-1 12 int flag, i scanf(”%s”,str1) stri!=str1i 13 ivoid main()int i,n=0;int a10; /* 定义一个数组,用来存放 10 个数 */flo
2、at avg=0; /* 定义一个变量,用来存放这 10 个数的平均值 */int max,min; printf(“请输入 10 个数:n“); /* 提示输入 10 个数 */* 读入 10 个数,并求这些数的和 */for(i=0;imax)max=ai;if (aivoid main()int i,temp,n=0,k=0;int a10; /* 定义一个数组,用来存放 10 个数 */int min; printf(“请输入 10 个数:n“); /* 提示输入 10 个数 */* 读入 10 个数,并求这些数的和 */for(i=0;i# define N 6main ( ) in
3、t aNN=0, i=0, j=0;for (i=0; imain ( ) float a46=0, sum=0; int i=0, j=0;for (i=0; imain ( ) int i=0, j=0, k=0, p=0 a35=3,1,10,4,7, 22,32,5,15,6, 11,21,8,9,16;printf (“Before:n”);for (i=0; imain ( ) char a80=”; int i=0; count=0;gets (a);while (ai = = )i+; /* 找第一个非空格字符 */if (ai!=0)count+; /* 非空格字符为有效字符
4、时 */while (ai!=0) if (ai = = /*一个空格和一个非空格字符连续存在时 */i+;printf (“%s: %d Wordsn”,a,count);运行结果:|_| |_| I |_| am |_| OK|_| |_| I |_| am |_| OK: 3 Words7【解】 编程点拨:找鞍点的操作可以通过嵌套的 for 循环来实现。外层 for 循环用来控制二维数组的行数。在外层循环体中需要处理三件事情:(1)找每行中最大值所在的列下标;(2)判断该元素在本列上是否为最小;(3)判断是否找到了鞍点,若找到,输出后退出循环。程序如下:# include # defin
5、e N 3# define M 4main ( ) int aNM=0, i=0, j=0, k=0, flag=0;printf (“Input %d data:”, N*M);for (i=0; iajk)flag=0;if (flag = =1) /* 若是鞍点,则输出后提前退出循环 */ printf (“i=%d, k=%d, saddle point: %dn”,i,k,aik);break;if (i = =N)printf (“Not exist saddle point.n”); /* 如果正常退出循环,说明无鞍点 */第 1 次运行结果:Input 12 data: 1 2
6、 3 4 5 6 7 8 9 10 11 121 2 3 45 6 7 89 10 11 12i=0,k=3,saddle point: 4第 2 次运行结果:Input 12 data: 1 2 30 4 5 6 7 8 9 10 11 121 2 30 45 6 7 89 10 11 12Not exist saddle point.8#include #define M 5#define N 3void main()int sum;int max,i,j,sMN; /* 用数组 s 存学生的每门课程的成绩 */double avgM=0,meanN=0; /*avg 每个学生的平均分,m
7、ean 每门课程的平均分*/* 获取每个学生的每门课程的成绩,并计算学生平均成绩 */for(i=0;i#include void main()char str80;char c;printf(“请输入字符串:n“);gets(str);printf(“请输入要删除的开始字符: “);scanf(“%c“,int i,j=0;for(i=0;stri!=0;i+)if(stri=c)stri=0;break;printf(“%sn“,str);10【分析】字符串存入字符数组中,要逆序存放,就要将下标为 0 的字符串与下标最大的字符交换,下标为 1 的字符与下标次最大的字符交换,最大下标应为字符
8、串长度-1.#include #include void main()char str20,t;int i,j;gets(str);j=strlen(str)-1;for(i=0;i=A for(j=9;j=i;j-)aj+1=aj;ai=x;for(i=0;i#define m 3;#define n 4;#define p 5;void main()int amn=1,2,3,4,5,6,7,8,9,10,11,12;int bnp=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;int cmp,i,j,k;printf(“C=n“);
9、for(i=0;ivoid main()char str120,str220;int i=0;printf(“输入第二个字符串:n“);gets(str2);while(str1i=str2i)!=0)i+;printf(“第一个字符串是:n“);puts(str1);运行结果:输入第二个字符串:ABCDEFG第一个字符串是:ABCDEFG15源程序:/*计算字符串的有效长度*/#include int main(void)int i=0,len;char str80=“Happy“; /用字符串常量个初始化字符数组/*计算字符串的有效长度 */for(i=0;stri!=0;i+) /循环条件:stri!=0; / for 的循环体语句为空len=i;printf(“len=%dn“,len);for(i=0;stri!=0;i+)putchar(stri);return 0;运行结果:Len=5Happy