第七章 数组
更新时间:2024-07-01 16:45:01 阅读量: 综合文库 文档下载
- 第七章大风起兮怎么通关过推荐度:
- 相关推荐
第七章 数组
数组是程序设计语言中最基本,最重要的组成部分,本章的习题将从C语言数组的基本概念出发,讨论C语言数组的特点和使用方法,并通过典型的例题和常见算法研究数组的一般应用,本章的主要内容包括: ● 数组基本概念。包括:数组的定义,数组的类型,数组维数,体积,数组元素和数组下标的概念,数组
说明,对数组进行初始化的方法,多维数组中元素的排列次序及初始化等问题。
● 字符型数组。包括:字符型数组与其它数组的区别,字符串及其特点,对字符型数组进行初始化,使用
不同的库函数输入输出字符串,对字符串的简单处理(求串长,串复制,串连接,串比较,串反向等) 等。
● 数组与函数之间的关系。包括:将数组作为组与函数之间进行传递等。 ● 常见的使用数组的算法。包括:排序算法,查找算法等。
7.1 选择题
【7.1】错误的说明语句是 。
A) static char word[ ]={‘T’,’u’,’r’,’b’,’o’,’\\0’}; B) static char word[ ]={“Turbo\\0”}; C) static char word[ ]=”Turbo\\0”; D) static char word[ ]=‘Turbo\\0’;
【7.2】已知:char s[5],c;register int b;则调用函数scanf的正确语句是 。
A) scanf(“%s%c”,s,c); B) scanf(“%d%c,&b,&c); C) scanf(“%d%c”,b,&c); D) scanf(“%s%c”,s,&c);
【7.3】要说明一个有10个int元素的数组,应当选择语句 。
A) int a [10]; B) int a[2,5]; C) int a [ ]; D) int *a[10];
【7.4】合法的数组说明语句是 。
A) int a[ ]=”string”;
B) int a[5]={0,1,2,3,4,5,}; C) char a=”string”;
D) char a[]={0,1,2,3,4,5,};
【7.5】在下述对C语言字符数组的描述中错误的是 。
A) 字符数组可以存放字符串
B) 字符数组中的字符串可以进行整体输入输出
C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D) 字符数组的下标从0开始
【7.6】调用strlen(“abcd\\0ef\\0g”)的返回值为 。
A) 4 B) 5 C) 8 D)9
【7.7】 若有以下语句, 则正确的描述是 。 static char x[ ]=”12345”;
static char y[ ]={‘1’,’2’,’3’,’4’,’5’};
A) x数组和y数组的长度相同 B) x数组长度大于y数组长度 C) x数组长度小于y的数组长度 D) x数组等价于y数组
【7.8】已知:char str1[10],str2[10]={“books”};则在程序中能够将字符串“books”赋给数组str1的正确语句是 。
A) str1 = {“Books”}; B) strcpy (str1,str2); C) str1 = str2; D) strcpy (str2,str1);
【7.9】以下程序段的输出是 。
static char a[ ] = “-12345”; int k=0,symbol, m;
if (a[k]==‘+’|| a[k]==‘-’) symbol = (a[k++]==‘+’) ? 1:-1; for (m=0; a[k]>=‘0’&& a[k]<=‘9’;k++) m = m * 10 +a[k]-’0’;
printf(“number=&d\\n”,symbol*m); A) number = -12345 B) number = 12345 C) number = -1000 D) number = 1000
【7.10】若用数组名作为函数调用时的实参,则实际上传递给形参的是 。
A) 数组首地址 B) 数组的第一个元素值 C) 数组中的全部元素的值 C) 数组元素的个数
【7.11】已知:char str1[20]=”abcde”,str2[20]=”xyz”;则执行语句: printf(“&d”,strlen(strcpy(str1,str2))); 输出结果是 。
A) 9 B) 3 C) 5 D) 8
【7.12】下面关于字符串的说明中,错误的是 。
A) char str[7]=”FORTRAN”;
B) char str[ ]=”FORTRAN”; C) char *str =”FORTRAN”;
D) char str[ ]={‘F’,’0’,’R’,’T’, ‘R’,’A’,’N’,’\\0’};
【7.13】已知:
int i, x[3] [3] = {1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 。 for (i=0; i<3; i++)
printf (“&d”, x[i] [2-i] );
A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9
【7.14】已知:char str[ ]=”ab\\n\\012\\\\\\””;则执行语句: printf(“&d”,strlen(str)); A) 3 B) 4 C) 6 D) 12
【7.15】在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A) 整型常量 B) 整型表达式
C) 整型常量或整型表达式 D) 任何类型的表达式
【7.16】以下对一维整型数组a的正确说明是 。
A) int a(10); B) int n=10,a[n]; C) int n;
scanf(“&d”,&n); int a[n]; D) #define SIZE 10
int a[SIZE];
【7.17】已知:int a[10];则对a数组元素的正确引用是 。 A) a[10] B) a[3.5]
C) a(5) D) a[10-10]
【7.18】在C语言中,一维数组的说明方式为: 类型说明符 数组名 。
A) [常量表达式] B) [整型表达式]
C) [整型常量]或[整型表达式] D) [整型变量]
【7.19】以下对外部的一维数组a进行正确初始化的语句是 。
A) int a[10]=(0,0,0,0,0) ; B) int a[10]={ };
C) int a[ ]={0}; D) int a[10]={10*1};
【7.20】以下对二维数组a的正确说明是 。
A) int a[3] [ ]; B) float a(3,4); C) double a[1] [4]; D) float a(3) (4);
【7.21】已知: int a[3][4];则对数组元素引用正确的是 。 A) a[2][4] B) [1,3] C) a[1+1][0] D) a(2) (1)
【7.22】已知:int a[3][4];则对数组元素的非法引用是 。 A) a[0][2*1] B) a[1][3] C) a[4-2][0] D) a[0][4]
【7.23】以下能对外部的二维数组a进行正确初始化的语句是 。
A) int a[2][ ] = {{1,0,1},{5,2,3}}; B) int a[ ][3] = {{1,2,3},{4,5,6}}; C) int a[2][4] = {{1,2,3},{4,5},{6}}; D) int a[ ][3] = {{1,0,1},{ },{1,1}};
【7.24】以下不能对二维数组a进行正确初始化的语句是 。
A) int a[2][3] = {0};
B) int a[ ][3] = {{1,2},{0}};
C) int a[2][3] = {{1,2},{3,4},{5,6}}; D) int a[ ][3] = {1,2,3,4,5,6};
【7.25】已知:static int a[3][4]={0};则下面正确的叙述是 。
A) 只有元素a[0][0]可得到初值0 B) 此说明语句是错误的
C) 数组a中每个元素都可得到初值,但其值不一定为0 D) 数组a中每个元素均可得到初值0
【7.26】已知在函数的外面有:int a[ ][4]={0,0};则下面 叙述中错误的是 。
A) 数组 a的每个元素都可得到初值0 B) 二维数组a的第一维大小为1
C) 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
【7.27】已知:static int a[3][4];则数组a中各元素 。
A) 可在程序的运行阶段得到初值0 B) 可在程序的编译阶段得到初值0 C) 不能得到确定的初值
D) 可在程序的编译或运行阶段得到初值0
【7.28】以下各组中选项中,均能正确说明二维实型数组a的是 。
A) float a[3][4]; float a[][4];
float a[3][]={{1},{0}}; B) float a(3,4);
float a[3][4];
float a[][]={{0},{0}}; C) float a[3][4];
float a[][4]={{0},{0}};
auto float a[][4]={{0},{0},{0}} E) float a[3][4];
float a[3][]; float a[][4];
【7.29】在C语言中,二维数组元素在内存中的存放顺序是 。
A) 按行存放 B) 按列存放
C) 由用户自己定义 D) 由编译器决定 【7.30】对以下说明语句的正确理解是 。 int a[10]={6,7,8,9,10};
A) 将5个初值依次赋给a[1]至a[5] B) 将5个初值依次赋给a[0]至a[4] C) 将5个初值依次赋给a[6]至a[10]
D) 因为数组长度与初值的个数不相同,所以此语句不正确
【7.31】下列数组说明语句中错误的是 。
A) double x[5] = {2.0,4.0,6.0,8.0,10.0}; B) int y[5] = {0,1,3,5,7,9};
C) char c1[ ] = {‘1’,‘2’,‘3’,‘4’,‘5’}; D) char c2[ ] = {‘\\x10’, ‘\\xa’, ‘\\x8’};
【7.32】已知:int a[ ][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是 。 A) 2 B) 3 C) 4 D)无确定值
【7.33】若二维数组a有m列,则在a[i][j]之前的元素各数为 。 A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1 【7.34】以下正确的语句是 。
A) int a[1][4]={1,2,3,4,5}; B) float x[3][ ]={{1},{2},{3}}; C) long b[2][3]={{1},{1,2},{1,2,3}}; D) double y[ ][3]={0};
#include
scanf (“%s”, str); printf (“%s”, str);
}
运行程序,输入:Fortran Language
【7.56】阅读程序,写出执行结果。 #include “stdio.h” main ( ) { char str[30]; gets (str); printf (“%s\\n”, str); {
运行程序,输入:Fortran Language
【7.57】阅读程序,写出执行结果。 #include “stdio.h” func ( int b[ ] ) { int j;
for (j=0; j<4; j++)
b[j]=j;
} main ( ) { int a[4], i; func (a);
for ( i=0; i<4; j++) printf ( “%d”, a[i]); }
【7.58】写出程序的运行结果。 #include
{ char str[100] = “How do you do”; strcopy ( str + strlen(str)/2,”es she”); printf (“%s\\n”,str);
}
【7.59】运行下面的程序,如果从键盘上输入字符串“qwerty”和字符串“abcd“,请写出程序的运行结果。
#include
while ( a[num]!=?\\0? ) num++; while (b[n]) { a[num]=b[n];
num++; n++; }
return ( num );
} main ( )
{ char str1[81], str2[81]; gets (str1); gets (str2);
printf (“%d\\n”, strle (str1, str2 ) ); }
7.3 程序选择填空
【7.60】下面程序输出两个字符串中对应位置相同的字符。请选择填空。 #include
while ( x[i]!=?\\0? && y[i]!=?\\0? ) if ( x[i]= =y[i] ) printf(“%c”, ① ); else i++;
}
A) x[i++] B) y[++i] C) x[i] D) y[i]
【7.61】有已按升序排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规则插到数组a中。
#include
{ char a[20] = “cehiknqtw”; char s[ ] = “fbla”;
int i, k, j;
for ( k=0; s[k]!=?\\0?; k++) { j=0;
while ( s[k]>=a[j] && a[j]!=?\\0? ) j++; for ( ① ) ② ; a[j]=[k]; } puts(a);
}
① A) i=stlen(a)+k; j>=j; i-- B) i=strlen(a); i>=j; i-- C) i=j; i<=strlen(a)+k; i++ D) i=j ; i<=strlen(a); i++
② A) a[i]=a[i+1] B) a[i+1]=a[i] C) a[i]=a[i-1] D) a[i-1]=a[i]
【7.62】下面程序的功能是将已按升序排好的两个字符串a和b中的字符按升序归并到字符串c中。 #include
{ char a[ ]=”acegikm”; char b[ ]=”bdfhjlnpq”; char c[80],*p; int i=0, j=0, k=0;
while ( a[i]!=?\\0? && b[j]!=?\\0? ) { if ( a[i]
else { ② } k++;
} c[k]=?\\0?; if ( ③ ) p=b+j; else p=a+i; strcat( c, p);
puts( c );
}
① A) c[k]=a[i]; i++; B) c[k]=a[j]; i++;
C) c[k]=b[i]; j++; D) c[k]=b[j]; j++;
② A) c[k]=a[i]; i++; B) c[k]=a[j]; i++;
C) c[k]=a[i]; j++; D) c[k]=b[j]; j++;
③ A) a[i]= =?\\0? B) a[i]!=?\\0?
C) a[i-1]= =?\\0? D) a[i-1]!=?\\0?
【7.63】下面程序的功能是将字符串 s中所有的字符’c’ 删除。请选择填空。
#include
for (i=j=0; s[i]!= ?\\0?; i++ ) if ( s[i]!=?c? ) ; s[j]= ?\\0?; puts(s); }
A) s[j++]=s[i] B) s[++j]=s[i] C) s[j]=s[i];j++ D) s[j]=s[i]
【7.64】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词。假设单词之间是以空格分隔。
#include
{ char s[80],c1,c2=’’; int i=0, num=0; gets(s);
while ( s[i]!=’\\0’) { c1=s[i];
if ( i==0 ) c2=’’; else c2=s[i-1]; if ( ) num++; i++; }
printf(“There are %d words.\\n”,num); }
A) c1==’’&&c2==’’ B) c1!=’’&&c2==’’ C) c1==’’&&c2!==’’ D) c1!=’’&&c2!=’’
【7.65】*口袋中有红,黄,蓝,白,黑色彩球各一个,任意从中取出3个,问:可以有多少种不同(顺序
不限)的取法。下列的程序用来输出全部不同的取法,格式为“第1种“---”。注意:程序中的计次是从1开始,而不是从0开始的。
#include
main ( )
{ int i, j, k, m, n, a[100][3]; m=0;
for ( ① ; i<5; i++) for ( j= ② ; j<5; j++) for ( k= ③ ; k<5; k++) { a[m][0]=i; a[m][1]=j; a[m][2]=k; printf (“\\n第-种: “, ④ ); for ( n=0; n<3; n++) switch ( ⑤ )
{ case 0: printf (“RED ”); break; case 1: printf (“YELLOW”); break; case 2: printf (“BLUE ”); break; case 3: printf (“WHITE “); break; case 4: printf (“BLACK “); break; } m++; } }
① A) i=1 B) i=1; C) i=0 D) i=0; ② A) i B) i+1 C) 0 D) 1 ③ A) j B) j+1 C) 0 D) 1 ④ A) i+1 B) j+1 C) k+1 D) m+1
⑤ A) a[m][n] B) a[m][i] C) a[m][j] D) a[m][k]
【7.66】*某人有5张2分的邮票和5张3分的邮票,问使用这些邮票可以组合出多少种不同面值的邮资。(例如:1张2分邮票加1张3分邮票可以组成5分的邮资;3张2分的邮票或2张3分的邮票都可以组成同样的6分邮资。) #include
for ( j =0 ) ② ;j++) {
S = ③ ;
for (k=0; a[k]!=0;k++) if (s==a[k])
④ ;
if ( a[k]==0 && s>0 ) { ⑤ ; n++; } }
prinft ( “\\n%d kinds:”,n): for (k=0;a[k]) printf(“-,”,a[k]); }
① A) i<=2 B) i<2 C) i<=5 D) i<5 ② A) j<=3 B) j<3 C) j<=5 D) j<5
③ A) 5*i+5*j B) 2*i+5*j C) 5*i+3*j D) 2*i+3*j ④ A) a[k]=s B) n=k C) continue D) break
⑤ A) a[k-1]=s B) a[k]=s C) a[k+1]=s D) a[k+2]=s
【7.67】下面的程序是使用冒泡法对输入的10个浮点数从小到大进行排序。排好序的10个数分两行输出。程序如下:
#include
printf (“Input 10 numbers please\\n”); for ( i=0; ② ; i++) scanf (“%f”, &a[i]); printf (“\\n”); for ( i=1; ③ ; i++) for ( j=0; ④ ; j++) if ( ⑤ ) { x=a[j]; ⑥ ; a[j+1]=x; }
printf (“The sorted 10 numbers;\\n”); for ( i=0; ⑦ ; i++ ) { if ( ⑧ )
printf(“\\n”); printf (“%f\\t”,a[i] ); }
printf(“\\n”); }
① A) float a[10],x B) float a[9],x C) int a[10],x D) int a[9],x ② A) i>=10 B) i>=9 C) i<=10 D) i<=9 ③ A) i<=8 B) i>=9 C) i<=9 D) i>=9 ④ A) j<=9 B) j>=9 C) j<=9-i D) j>=9-I
⑤ A) a[j]>a[i] B) a[j]a[j+1] D) a[j]=9 B) i<=10 D) i>=10 ⑧ A) i%5==0 B) i%5!=0 C) i/5==0 D) i/5!=0 7.4程序填空
【7.68】程序读入20个整数,统计非负数个数,并计算非负数之和。
#include “stdio.h” main ( )
{ int i, a[20], s, count; s=count=0; for ( i=0; i<20; i++ ) scanf(“%d”, ① ) for ( i=0; i<20; i++ ) { if ( a[i]<0 ) ② ; s += a[i]; count++; }
printf (“s=%d\\t count=%d\\n”, s, count); }
【7.69】下面的程序是求出数组a的两条对角线上的元素之和。
#include “stdio.h” main ( )
{ int a[3][3]={1,3,6,7,9,11,14,15,17}, sum1=0, sum2=0, i, j; for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ )
if ( i= =j ) sum1 = sum1 + a[i] [j]; for ( i=0; i<3; i++ ) for ( ① ; ② j-- ) if ( i+j= =2 )
sum2 = sum2 + a[i][j];
printf ( “sum1=%d, sum2=%d\\n”, sum1, sum2 ); }
【7.70】下面的函数invert的功能是将一个字符串的内容颠倒过来。
Void invert ( char str [ ] ) { int i, j, ① ;
for (i=0,j=strlen(str) ② ;i } 【7.71】以下程序是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不同字符的ASCII码之差.例如:输入的两个字符串分别为”abcdefg”和”abceef”,则第一个不同的字符为’d’和’e’,输出为-1. #include “stdio.h” main ( ) { char strl[100],str2[100],c; int I ,s; printf (“Enter string 1:”); gets(str1); printf (“Enter string 2:”); gets(str2); i =0; While ((str1[i]==str2[i] && strt1[i]!= ① )) i++; s= ② ; printf(“%d\\n”,s); } 【7.72】*从键盘上输入若干(不超过100个)学生的成绩,计算出平均成绩,并输出低于平均分的学生的成绩,用输入负数结束输入. #include “stdio.h” main ( ) { float x[1000], sum=0, ave, a; int n=0, i; printf (“Enter mark:” ); scanf (“%f”, &a); while (a>0 && n<1000 ) { sum += ① ; x[n] = ② ; n++; scanf (“%f”, &a); } ave = ③ ; printf (“Output:\\n”); printf (“ave=%f\\n”,ave); for ( i=0; i 【7.73】*求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左向右读与从右向左读是一样的,例如:34543和1234321都是回文数 例如:满足题意要求的数有:N=11,11=121;N=111,111=12321。 #include { int m[16], n, i, t, count=0; long a, k; printf (“Result is:\\n”); for ( n=10; n<200; n++ ) { k = 0; t = 1; a = n*n; for ( i=1; a!=0; i++ ) { ① ; a / = 10; } for ( ; i>1; i-- ) { k += m[i-1]*t; ② ; } if ( ③ ) 2 2 printf( “-: d d\\n”, ++count, n, n*n); } } 【7.74】*下面的函数是在二维数组中产生如下形式得杨辉三角形。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… …… #define N 11 yahui (int a[ ][N]) { int i, j; for(i=1; i for ( ① ; i 【7.75】下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其它以此类推。 fun ( int x, int b[ ]) { int k=0, r; do { r=x% ① ; b[k++] = r; x /= ② ; } while (x); } 【7.76】*以下程序可以将从键盘上输入的十进制数(long型)以二进制,八进制或十六进制数的形式输出。 #include { char b[16]={?0?, ?1?, ?2?, ?3?, ?4?, ?5?, ?6?, ?7?, ?8?, ?9?, ?A?, ?B?, ?C?, ?D?, ?E?, ?F?}; int c[64], d, i=0, base; long n; printf (“Enter a number:”); scanf (“”, &n); printf (“Enter new base:”); scanf(“%d”, &base); do { c[i] = ① ; i++; n=n/base; } while ( n!=0 ); printf (“Transmite new base:\\n”); for ( --i; i>=0; --i ) { d = c[i]; printf (“%c”, b ② ); } } 【7.77】下列程序最多从键盘输入99个字符,遇到’\\n’后则退出,遇到空格则换成字符‘#’,对其它字符依次原样送入数组c中。 #include”stdio.h” main ( ) { int i; char ch, c[100]; for ( i=0; ① ; i++ ) { if ( (ch=getchar( ) ) = = ?\\n? ) ② ; if ( ch = = ? ? ) ③ ; c[i]=ch; } c[i]= ?\\0? ; puts(c); } 【7.78】下面的程序将一个无符号整数转换为二进制表示存入字符数组中。 #include”stdio.h” main ( ) { char bin[20]; unsigned n, i=0; printf (“Input a data”); scanf(“%d”, &n); do { bin[i++] = ① ; } while ( (n/=2)!=0) ② ; reverse(bin); puts(bin); } reverse (char s[ ] ) { int temp, i, j; for ( i=0, j=strlen(s)-1; i s[i]=s[j]; s[j]=temp; } } 【7.79】下面的函数itoh(n,s)完成将无符号十进制整数转换成十六进制表示,并存入字符串组S中。程序中用到的函数reverse(char s[ ])是一个将字符串置逆的函数(参见【4.78】)。 itoh (unsigned n, char s[ ] ) { int h, i=0; do { h=n; s[i++] = (h<=9) ? h+‘0’: ① ; } while ((n/=16)!=0); ② ; reverse(s); } 【7.80】函数expand(char s[ ], char t[ ])在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符表示,即用’\\n’表示换行符,用’\\t’表示制表符。 expand ( char s[ ], char t[ ] ) { int i, j; for ( i=j=0; s[i]!=‘\\0‘;i++ ) switch(s[i]) { case ?\\n?: t[ ① ] = ② ; t[j++] = ?n?; break; case ?\\t?: t[ ③ ] = ④ ; t[j++] =?t?; break; default: t[ ⑤ ] = s[i]; break; } t[j] = ⑥ ; } 【7.81】函数 squeez (char s[ ], char c )的功能是删除字符串s中所出现的与变量c相同的字符。 squeez ( char s[ ], char c ) { int i, j; for ( i=j=0; ① ; i++ ) if ( s[i]!=c ) ② ; s[j] = ?\\0?; } 【7.82】函数index(char s[ ], char t[ ])检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则送回-1。 index ( char s[ ], char t[ ] ) { int i, j, k; for (i=0; s[i]!=’\\0’; i++) { for ( j=i, k=0; ① && s[j]= = t[k]; j++,k++); if ( ② ) return (i); } return(-1); } 7.5编写程序 【7.83】反向输出有5个元素的int数组中各个元素的值。 【7.84】在一个二维数组中形成并输出如下矩阵: 1 1 1 1 1 2 1 1 1 1 A= 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 【7.85】求矩阵A(2 * 3)的转置矩阵B(3 * 2)。 A= 1 2 3 4 5 6 1 4 B= 2 5 3 6 【7.86】某班期终考试科目为高等数学(MT),英语(EN)和物理(PH),有30人参加考试。为评定奖学金,要求统计并输出一个表格,表格内容包括学号,各科分数,总分和平均分,并标出三门课均在90分以上者(该栏标志输出为”Y”,否则为”N”),表格形式如下: NO MT EN PH SUM V >90 ----------------------------------------------------------------------- 1 97 87 92 276 92 N 2 92 91 90 273 91 Y 3 90 81 82 253 84 N ….. 可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统计处理。 【7.87】有一个3 * 4的矩阵,求其中的最大元素的值。 【7.88】编写程序实现将字符串str2拷贝到字符串str1。 【7.89】输入英文的星期几,查找星期表后输出对应的数字。具体的算法是:若发现与表中某项相同,则输出该字符串在表中的位置(序号);若查到表尾仍不相同,则输出错误信息。设星期表的内容如下图所示。 sunday mondy tuesday wednesday 0 1 2 3 4 5 6 【7.90】编写一个C函数,实现保留小数点后第N-1位,从第N位四舍五入。用该函数对数组a[5]中的各元素从小数点后第2位开始四舍五入。 thursday 【7.91】编写一个交换变量值的C函数,交换数组a和数组b中的对应元素。 friday 【7.92】给定一维数组a,求a中各元素的平均值。 【7.93】给定某年某月,将其转换成这一年的第几天并输出。 【7.94】如果一个正整数等于其各个数字的立方和,则该数称为阿姆 saturday 333 斯特朗数(亦称为自恋性数)。如407=4+0+7就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。 7.6 思考题 【7.95】写出下面给出的数组说明中所定义的数组名、类型、维数、数组体积,并给出各数组元素在计算机中占用存储单元的情况。 int x[4]={1,2,3,4}; float y[3][4]={1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8}; int z[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int i[2][3]={{},{4,5,6}}, j[2][2][2]={{},{3,4},{},{7,8}}; char c1[10]={“happy”}, c2[][3]={{“ * ”},{* *},{ * }}; 【7.96】设有两个数组被说明为: char a[10],b[10]; 以下标1到9的顺序,它们分别被赋值为: a:‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’ b:‘2’,‘4’,‘7’,‘1’,‘3’,‘6’,‘1’,‘3’,‘3’ 执行下面C程序段后其输出结果是什么?设程序中出现的变量已在前面说明为: char subst; int i; for (i=1;i<=9;i++) { subst=a[i]; a[i]=b[10-i]; b[10-i]= subst } for (i=1;i<=9;i++) printf(“%d,a[i]”); printf(“\\n%d%d%d”,b[1] ,b[2] ,b[3]); 【7.97】设某班50人,写一程序统计某一单科成绩各分数的分布人数,每人的成绩随机输入,并要求按下面 格式输出统计结果(“*”表示实际分布人数。) 0 -- 39 * 40 --49 ** 50 --59 ***** ?? 90 --100 **** 【7.98】输入二维数组a[3][5],打印其中最小值和最大值及其对应的行列位置。 【7.99】输入5×5的数组,编写程序实现: (1) 求出对角线上各元素 的和; (2) 求出对角线上行、列下 标均为偶数的各元素的积。 (3) 找出对角线上其值最大 的元素和它在数组中的位置。 【7.100】找出一个二维数组中的鞍点,即该位置上的元素是该行一的最大值,是该列上的最小值。二维数组也可能没有鞍点。 【7.101】简单的密码加密程序。其加密过程是先定义一张字母加密对照表。 输入 输出 输入 输出 a d i a b w k b c k ; c d ; w e e i 将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以 很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。 【7.102】*使用二维数组输入:”BASIC”,”ADA”,”Pascal”,”C”, ”Fortran”,将它们按从小到大的顺序排列后输出。 【7.103】已知某运动会上女子百米运动员决赛成绩。要求编写程序,按成绩排序并按名次输出排序结果,包括名次,运动员号,成绩三项内容。 【7.104】将矩阵A[2][3]的六个元素送入矩阵A[3][2]中,使其顺时针旋转90度。例: 1 2 3 4 1 a= b= 5 2 4 5 6 6 3 【7.105】从1981年开始到2000年止,我们将遇到多小个素数年号? 【7.106】输入10个人的序号或成绩,对成绩从小到大进行排序,输出排序后的序号和成绩。 【7.107】*从键盘上任意输入若干个整数(少于50),当遇到-1时停止,对输入数据从小到大排序后输出。 【7.108】*对数组A中的N(0 相同的整数要具有相同的编号。例如: A(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4) 【7.109】*现将不超过2000的所有素数从小到大排成一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和正好是1898?假如存在的话,又有几种这样的情况? 第一行:2 3 5 7 11 13 17 ?? 1979 1987 1993 第二行: 1 2 2 4 2 4 ?? 8 6 【7.110】*下面是5*5的螺旋方阵。请编程生成n*n(n<10)阶方阵。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 【7.111】*下面是5*5的螺旋方阵。请编程生成n*n(n<10)阶方阵。 25 24 23 22 21 10 9 8 7 20 11 2 1 6 19 12 3 4 5 18 13 14 15 16 17 相同的整数要具有相同的编号。例如: A(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4) 【7.109】*现将不超过2000的所有素数从小到大排成一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和正好是1898?假如存在的话,又有几种这样的情况? 第一行:2 3 5 7 11 13 17 ?? 1979 1987 1993 第二行: 1 2 2 4 2 4 ?? 8 6 【7.110】*下面是5*5的螺旋方阵。请编程生成n*n(n<10)阶方阵。 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 【7.111】*下面是5*5的螺旋方阵。请编程生成n*n(n<10)阶方阵。 25 24 23 22 21 10 9 8 7 20 11 2 1 6 19 12 3 4 5 18 13 14 15 16 17
正在阅读:
第七章 数组07-01
山东省滕州市2015年九年级政治全册第四单元我们的未来不是梦第1203-08
思科网络课程子网划分、VLSM及TCP05-12
江苏卫视《一站到底》的1000道题之501-1000题07-02
中国医用高频电刀市场发展研究及投资前景报告(目录) - 图文07-03
中介语石化现象成因及对外语教学的启示03-08
高三物理一轮复习讲义:动量07-05
4AM1U3 How do you feel 单元设计03-20
浅谈游戏在小学英语课堂的作用01-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 第七章
- 数组
- 正反作用
- 2014-2015学年江西省宜春市奉新一中高二(下)期末物理试卷
- 线面垂直的判定普通版
- Spring_day03笔记
- 专业控制台与普通办公家具的区别
- 3.4因特网多媒体技术(粤教版)学案
- 铁路工程监理规划
- ILS系列一体化生活污水处理设备
- 财务分析主观题(答案)
- 融资租赁的主要形式
- 专题强化测评(三)A卷
- 高中数学选修2-3 北师大版 第1章 §3 第1课时3 组合 作业(含答
- 毕业设计 飞机刹车系统常见故障和维修技术
- 工程热力学答案
- 海尔 MRV 5E中央空调 故障代码表
- 护理部2018年上半年护理工作总结
- 2002级流体力学期末试题(c)
- 广州市七区联考2013—2014学年第一学期期末教学质量监测高二化学
- 2018-2024年中国熊果苷行业深度调研与行业竞争对手分析报告(目
- 高中语文第二单元第5课苏轼词两首习题新人教版必修4