第七章 数 组
学习目的与要求:1,重点掌握一维数组的定义和引用。
2,基本掌握二维数组的定义和引用。
3,重点掌握字符型数组的定义与引用。
4,能正确使用字符串处理函数。
5,学会使用数组解决实际问题。
重点,1,一维数组的定义与引用。
2,二维数组的定义与引用。
3,字符数组的定义与引用。
第1讲
知识归纳
1,一维数组的定义
类型说明符 数组名[ 常量表达式 ];
(1) 数组名后必须用方括弧[ ],用其他括弧均错误;
(2) 方括弧中的常量表达式表示数组的元素个数;
(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是
变量。
2,一维数组的引用
数组名[ 下标 ] //下标从0开始,可以是整型常量或整型表达式;
注意:数组元素引用时,不要超出数组范围。
如 int a[10];
//可以引用的数组元素为 a[0]……a[9],a[10] 不是本数组元素;
3,一维数组的初始化
(1) 可以在定义数组后,立刻赋值;如 int a [3] = { 1,3,5} ;
但下面这样赋值是错误的,
int a[3] ;
a = { 1,3,5} ;
(2) 可以给数组的部分元素赋值,不赋值的元素,如果类型为int,则默认值为0;
如果类型为char,则默认值为‘’;如果类型为float,则默认值为0.0;但希望在实际编程时,应实际赋值为0或其他值。
C语言程序设计上机指导与同步训练
·178·
·178·
如 int a [3]= {1,3 } ; //则其对应值为a[0] =1 ; a[1]= 3 ; a[2]= 0 ;
(3) 在对数组全部元素赋初值时,可以不指定元素个数;
(4) 可以在循环控制语句下,给数组各元素赋值。
例如:int a[10] ;
for ( i=0 ; i <10 ;i ++ )
a [ i ] = i ;
基础训练(A)
一、选择题
1,在c语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A) 整型常量 B) 整型表达式
C) 整型常量或整型表达式 D) 任何类型的表达式
2,要说明一个有10个int元素的数组,应当选择语句( )。
A) int a[10]; B) int a(10); C) int a[9] D) int a[11]
3,以下对数组的正确定义是( )。
A) float b[5.0] B) float b[5] C) float b(5) D) float b[]
4,对以下语句的正确理解是( )。
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) 因为数组长度与初值的个数不相g2528,g6164以g8504语句不正确
5,g5062g11705:int a[10];则对a数组元素的正确引用是( )。
A) a[10] B) a[3.5] C) a(5) D) a[10-10]
6,以下能对一g13512数组ag17839g15904正确初始g2282的语句是( )。
A) int a[10]=(0,0,0,0,0); B) int a[10]={}
C) int a[]={0}; D) int a[10]={10*1};
7,以下能对一g13512数组ag17839g15904正确初始g2282的语句是( )。
A) int a[5]; B)int a[3];
a={0,1,2,3,4}; for(i=0;i<3;i++)
scanf(“%d”,a);
C) int a[3]={0,1,2,3}; D) int a[5];
for(i=0;i<5;i++)
scanf(“%d”,&a[i]);
g1120、g3647g12366题
1,g7512g6116数组的各个元素必须具有相g2528的 。C 语言中数组的下标必须是正整数、0或 。如果一g13512数组的长度为n,则数组下标的g7380g4579值为,g7380g3835值为 。
2,在C语言中,一g13512数组的定义方式为:类型说明g12538 数组名 。
3,g5062g11705数组b定义为int b[ ]={9,6,3};,则b的各元素的值分g2047是,
第二部分 C语言程序设计同步训练
·179·
·179·
g7380g4579下标是,g7380g3835下标是 。
4,在C语言中数组名是一个,不能对其g17839g15904g2164、g1955g2462赋值g6817g1328。
5,g5062g11705数组T为一有10个g2345元的整型数组,正g5219g17767出T中的10个元素的值的语句为,
for (j=0;j<10;j++) printf(“%d”,T[j]);
下面的语句g16809g3282g6365相g2465的g20046g5219g7186示g17767出T中的10个元素的相g2465数,g16843g15929g1817g4448整下面的语句,
for( ; ;j- -)printf(“%d”,);
g989、g13520g2524题
1,g19417g16847下面程g5219,g16843指出g4396在错误。
main()
{
int a[3]={3*0};
int i;
for(i=0;i<3;i++) scanf("%d",&a[i]);
for(i=1;i<3;i++) a[0]=a[0]+a[i];
printf("%d\n",a[0]);
}
2,g19417g16847下面程g5219,g16843指出g4396在错误。
main()
{
int a[3];
int i;
scanf(“%d”,&a);
for(i=0;i<3;i++) a[0]=a[0]+a[i];
printf(“a[0]=%d”,a[0]);
}
3,g19417g16847下面程g5219,g16843指出g4396在错误。
main()
{
int a[3];
int i;
for (i=0;i<3;i++) scanf(“%d”,&a[i]);
for(i=1;i<3;i++) a[0]=a[0]+a[i]);
printf(“%d\n”,a);
}
能力提高(B)
一、选择题
1,以下对一g13512整型数组a的正确说明是( )。
A) int a(10); B) int n=10,a[n];
C) int n; D) #define SIZE 10;
scanf("%",&n); int a[SIZE];
C语言程序设计上机指导与同步训练
·180·
·180·
int a[n];
2,g14521有以下说明,则数值为4的表达式是( )。
A) a[g-c] B) a[4] C) a[‘d’-‘c’] D) a[‘d’-c]
3,要定义一个int型一g13512数组art,g5194g1363其各元素具有初值89,g1623,0,0,0,不正确的定义语句是( )。
A) int art[5]={89,g1623};
B) int art[ ]={89,g1623};
C) int art[5]={89,g1623,0,0,0};
D) int art[ ]={89,g1623,0,0,0};
g1120、g3647g12366题
1,g16847g184920个整数,g13491计g19762g17139数个数,g5194计算g19762g17139数g1055g2656。
#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);
}
2,下面程g5219g8585的g2163能是将一个数组中的值g6365g17882g5219g18337g7044g4396g6930,例如:g2419g7481g20046g5219是8,5,
3,2,要g8726改为2,3,5,8。
……
#define N 10
int i,j,a[N];
……
for ( i=0,j= ; i<j; i++,j--)
{ k=a[i];
a[i]=a[j];
a[j]=k;
}
……
3,g14521有以下程g5219g8585
.....,
int a[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
第二部分 C语言程序设计同步训练
·181·
·181·
,....,
则g16825程g5219g8585的g2163能是( )。
g989、编程题
1,有一个g5062g13475g6502g3921g5219的数组,g10628g17767g1849一个数,要g8726g6365g2419g7481g6502g5219的g16280g5471将g4439g6566g1849g2052数
组中。
2,g16786计一程g5219,g4439g17767g1849 20 个正整数,g9994后g18337g7044g4445g6502这个g5219g2027的g20046g5219,g1363g5483g7380g4579数g1313
g1122g5219g2027的g20330部,g7380g3835数g1313g1122g5219g2027的g4626部。g7186示g3800理g2081后的这g1016个整数g5219g2027。
第2讲
知识归纳
1,二维数组的定义
类型说明g12538 数组名[常量表达式1 ][常量表达式2] ;
(1) 常量表达式1g252可以g5430g16949理解为g15904数。
常量表达式2g252可以g5430g16949理解为g2027数。
(2) g1120g13512数组中元素g4396g6930g20046g5219是:g1820g4396g6930g12544一g15904的元素,g1889g4396g6930g12544g1120g15904的元素,依次类g6524。
2,二维数组的引用
数组名[ 下标 ] [ 下标 ]
//下标从0开始,可以是整型常量或整型表达式;
注意:数组元素引用时,不要超出数组范围。
如 int a[3 ] [4] ;
//可以引用的数组元素为 a[0][0]……a[2][3],a[3][4]和 a[1][4]等不是本数组
元素;
(2) 可以在循环控制下,给g1120g13512数组各元素赋值。
如:int a[3] [4];
for ( i=0 ; i <3 ;i ++ )
for ( j=0 ; j<4;j++)
a [ i ] = i * j;
3,二维数组的初始化
(1) 可以在定义数组后,立刻赋值;例如 int a [3][4] = {1,3,5,7,9,11} ;
但下面这样是错误的。
int a[3][4] ;
a = { 1,3,5,7,9,11} ;
(2) 可以给数组的部分元素赋值,不赋值的元素,默认值为int 0,char,‘’,float
0.0 ;
C语言程序设计上机指导与同步训练
·182·
·182·
(3) 在对数组全部元素赋初值时,可以g11477g11065g12544一个常量表达式,但不能g11477g11065g12544g1120个常量表达式。
基础训练(A)
一、选择题
1,在C语言中,g1120g13512数组元素在g1881g4396中的g4396g6930g20046g5219是( )。
A) g6365g15904g4396g6930 B) g6365g2027g4396g6930
C) g11013用g6155g14270g5061定义 D) g11013编g16805g3132g1927定
2,以下对g1120g13512数组a的正确说明是 ( )。
A) int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4)
3,g5062g11705:int a[3][4];则对数组元素引用正确的是( )。
A) a[2][4] B) a[1,3] C) a[2][0] D) a(2)(1)
4,g5062g11705:int a[3][4]={0};则下面正确的g2477g17860是( )。
A) g2494有元素a[0][0]可g5483g2052初值0
B) g8504说明语句是错误的
C) 数组a中的g8611个元素g18129可g5483g2052初值,但其值不一定为0
D) 数组a中的g8611个元素均可g5483g2052初值0
5,以下正确的语句是( )。
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};
6,以下能对g1120g13512数组元素ag17839g15904正确初始g2282的语句是( )。
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}};
g1120、g3647g12366题
下面的程g5219是g8726出数组a的g1016g7477对g16294g13459g990的元素g1055g2656。
#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);
}
第二部分 C语言程序设计同步训练
·183·
·183·
g989、编程题
1,在一个g1120g13512数组中g5430g6116g5194g17767出如下g11709g19465。
1 2 3
3 2 1
1 1 1
2,有一个3*4的g11709g19465,g6226出其中的g7380g3835元素。
能力提高(B)
一、选择题
1,以下各组选g20045中,均能正确说明g1120g13512实型数组a的是 ( )。
A) float a[3][4]; B) float a(3,4);
float a[][4]; float a[3][4];
float a[3][]={{1},{0}}; float a[][]={{0},{0}};
C) float a[3][4]; D) float a[3][4];
float a[][4]={{0},{0}}; float a[3][];
float a[][4]={{0},{0},{0}}; float a[][4];
2,以下不能对g1120g13512数组ag17839g15904正确初始g2282的语句是( )。
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};
3,g5062g11705:int a[][3]={1,2,3,4,5,6,7};则数组a的g12544一g13512的g3835g4579是 ( )。
A) 2 B) 3 C) 4 D) g7092确定值
4,g14521g1120g13512数组a有mg2027,则在a[i][j]g1055g2081的元素个数为 ( )。
A) j*m+I B) i*m+j C) i*m+j-1 D) i*m+j+1
g1120、g1901出程g5219的g17828g15904g13479果
1,下面程g5219的g17828g15904g13479果是__。
main()
{ int a[6][6],i,j;
for(i=1;i<6;i++)
for(j=1;j<6,j++)
a[i][j]=(i/j)*(j/i);
for(i=1;i<6;i++)
{for(j=1;j<6;j++)
printf("%2d",a[i][j]);
printf("\n"_); }
}
g989、g3647g12366题
1,下面的程g5219g8585的g2163能是g1147g10995如下g5430式的g7484g17757g989g16294g5430。
C语言程序设计上机指导与同步训练
·184·
·184·
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
…… ……
#define N 11
main()
{ int a[N][N],i,j;
for (i=1;i<N;i++)
{ a[i][1]=1;
a[i][i]=1;
}
for ( ; i<N; i++)
for (j=2; ;j++)
a[i][j]= +a[i-1][j];
…… ……
}
g3247、编程题
1,g16786计一程g5219,g4439要g8726g17767g1849一个5g159045g2027的g11709g19465,计算g5194g7186示g17767出g16825g11709g19465g7380g3818g3292元素的g2656值。
2,g17767g1849g1120g13512数组a[3][5],g6183g2372其中g7380g4579值g2656g7380g3835值g2462其对应的g15904g2027g1313置。
第3讲
知识归纳
1,字符数组的定义与引用
类型说明g12538 数组名[常量表达式];
(1) 与一g13512数组、g1120g13512数组定义、引用相g2528,g2494是类型说明g12538固定为,char
2,字符数组的初始化
(1) 逐字g12538赋值
如 char c1 [10] = { ‘ W’,’e’,’l’,’c’,’o’,’m’,’e’} ;
但下面这样是错误的,
char c1 [10] ;
c1 = { ‘ W’,’e’,’l’,’c’,’o’,’m’,’e’} ;
(2) 字g12538串赋值g2656字g12538串g13479束标志
如 char c1[10 ] =,Welcome,;
但下面这样是错误的,
char c1 [10] ;
c1 =,Welcome,;
注意:系统会自动在字符串末尾加一个结束标志’\0’,所以,定义字符数组时需要在字符个数基础上,多定义一个字节存储空间,用于存放结束标志。
第二部分 C语言程序设计同步训练
·185·
·185·
3,字符数组的输入输出
(1) 逐个字g12538g17767g1849g17767出。用格式g12538%c g17767g1849或g17767出一个字g12538,往往与循环g13479g2524g1363用;
如,char c1[10];
for ( i=0 ; i<7 ; i ++ ) scanf (,%c”,&c1[ i ]);
……,
for ( i =0 ; i<7 ; i ++ ) printf(,%c”,c1[ i ] );
(2) 将整个字g12538串一次g17767g1849g17767出,用格式g12538%s ;
如:char c1[10];
scanf (,%s”,c1) ; //数组名代表数组的g20330地址
……
printf(,%s”,c1);
基础训练(A)
一、选择题
1,要g1363字g12538数组strg4396g6930一个字g12538串"ABCDEFGH",正确的定义语句是( )。
A) char str[8]={'A','B','C','D','E','F','G','H'};
B) char str[8]="ABCDEFGH";
C) char str[ ]={'A','B','C','D','E','F','G','H'};
D) char str[ ]="ABCDEFGH";
2,下面是对数组s的初始g2282,其中错误的是 ( )。
A) char s[5]={"abc"} B) char s[5]={'a','b','c'};
C) char s[5]=""; D) char s[5]="abcde";
3,对g1016个数组ag2656bg17839g15904如下初始g2282
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
则以下g2477g17860正确的是( )。
A) a与b数组g4448全相g2528 B) a与b长度相g2528
C) ag2656b中g18129g4396g6930字g12538串 D) a数组比b数组长度长
4,下面程g5219的g17828g15904g13479果是 ( )。
char c[5]={'a','b','\0','c','\0'};
printf("%s",c);
A) 'a''b' B) ab C) ab c D) 以g990g989个答案均有错误
g1120、g3647g12366题
1,字g12538数组是用g7481g4396g6930 的数组。字g12538数组中一个元素g4396g6930 个字g12538。
2,在C语言中g4396g6930字g12538'A'需要占用 个字节,g4396g6930字g12538串"A"需要占用 个字节。
3,以下语句的g17767出g13479果是 。
printf("%s\n","c:\\win98\\cmd.exe");
C语言程序设计上机指导与同步训练
·186·
·186·
g989、程g5219g3647g12366
1,下g2027程g5219g7380多从键盘g990g17767g184999个字g12538,遇g2052'\n'后则退出,遇g2052g12366格则换g6116字g12538' # ',
对其他字g12538依次g2419样送g1849数组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);
}
能力提高(B)
一、选择题
1,下面程g5219g8585g17828g15904g13479果是 ( )。
char s[]="a book!";
printf("%.4s",s);
A) a book! B) a bo
C) a boo D) 格式描g17860不正确,没有确定的g17767出
2,g2524法的数组定义是( )。
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'};
3,要g1363字g12538串数组 STR 含有"ABCD","EFG"g2656"xy"g989个字g12538串,不正确的定义语句有( )。
A) char STR[ ][4]={"ABCD","EFG","XY"};
B) char STR[ ][5]= {"ABCD","EFG","XY"};
C) char STR[ ][6]= {"ABCD","EFG","XY"};
D) char STR[ ][7]={{'A','B','C','D','\0'},"EFG","XY"};
g1120、g19417g16847程g5219g1901出执g15904g13479果
1,
#include <stdio.h>
main()
{ char str[30];
scanf ("%s",str);
printf("%s",str);
}
第二部分 C语言程序设计同步训练
·187·
·187·
g17828g15904程g5219,g17767g1849:Fortran Language
g17828g15904g13479果:___________________。
2,执g15904语句g5219g2027时,g14521键盘g17767g1849的是 net,则 s1 中的字g12538串是( ),
s2中的字g12538串是( )。
char s1[10]="abcdef",s2[20]="inter";
scanf("%s",s1);
int k=0,j=0;
while(s2[k]) k++;
while(s2[j]) s2[--k]=s1[++j];
g989、编程题
1,g17767g1849一个字g12538串,g13491计指定字g12538的个数。例如:字g12538串"abcddcba",指定字g12538'c',则
g13491计个数为2。
2,g6183g2372以下g3282案。
* * * * *
* * * * *
* * * * *
* * * * *
第4讲
知识归纳
1,puts( )函数
(1) 格式:puts(字g12538数组名);
(2) g1328用:将一个字g12538串(以’\0’g13479束的字g12538g5219g2027)g17767出g2052终端;
(3) 特点:g17767出g4448字g12538串g14270动换g15904。
2,gest( )函数
(1) 格式:gets(字g12538数组名);
(2) g1328用:从终端g17767g1849一个字g12538串g2052字g12538数组,g5194返回字g12538数组的起始地址;
(3) 特点:g12366格(‘ ‘)做为有效字g12538g17767g1849。
3,strcat( )函数
(1) 格式:strcat(字g12538数组1,字g12538数组2);
(2) g1328用:将字g12538数组 2 中的字g12538串,连接在字g12538数组 1 中的字g12538串后,g5194返回字g12538
数组1的g20330地址;
(3) 要g8726:字g12538数组1足够g3835。
4,strcpy( )函数
(1) 格式:strcpy(字g12538数组1,字g12538串2)
C语言程序设计上机指导与同步训练
·188·
·188·
(2) g1328用:将字g12538串2,复制g2052字g12538数组1中去,g5194返回字g12538数组1的g20330地址;
(3) 要g8726:字g12538数组 1 足够g3835;且字g12538数组 1 必须g1901g6116数组名g5430式,字g12538串 2 可以g1363
字g12538数组名,也可以是一个字g12538串。
5,strcmp( )函数
(1) 格式:strcmp(字g12538串1,字g12538串2);
(2) g1328用:对g1016个字g12538串g14270左至右逐个字g12538相比(g6365ASCII码值g3835g4579比较),直g2052出g10628不
g2528的字g12538或遇g2052‘\0’为止。g5194返回字g12538数组1的g20330地址;
(3) 要g8726:字g12538数组 1 足够g3835;且字g12538数组 1 必须g1901g6116数组名g5430式,字g12538串 2 可以g1363
字g12538数组名,也可以是一个字g12538串。
6,strlen( )函数
(1) 格式:strlen (字g12538串)或strlen (字g12538数组名);
(2) g1328用:g8726字g12538串长度。函数的值为字g12538串的实际字g12538的个数,不包含‘\0’在g1881。
基础训练(A)
一、选择题
1,有g1016个字g12538数组a、b,则以下正确的g17767g1849格式是 ( )。
A) gets (a,b); B) scanf ("%s%s",a,b);
C) scanf ("%s%s",&a,&b); D) gets ("a"),gets ("b");
2,判断字g12538串ag2656b是否相等,应当g1363用( )。
A) if (a==b) B) if (a=b)
C) if (strcpy(a,b)) D) if (strcmp(a,b))
3,下g17860对C语言字g12538数组的描g17860中错误的是( )。
A) 字g12538数组可以g4396g6930字g12538串
B) 字g12538数组的字g12538串可以整体g17767g1849、g17767出
C) 可以在赋值语句中通过赋值g17828算g12538"="对字g12538数组整体赋值
D) 不可以用关系g17828算g12538对字g12538数组中的字g12538串g17839g15904比较
4,g17828g15904下面程g5219g8585的g17767出g13479果是( )。
char s[12]="string";
printf("%d",strlen(s));
A) 12 B) 7 C) 6 D) 5
5,函数调用strcat ( strcpy ( str1,str2 ),str3 )的g2163能是( )。
A) 将字g12538串str1复制g2052字g12538串str2中,g1889连接g2052字g12538串str3g1055后
B) 将字g12538串str1连接g2052字g12538串str2g1055后,g1889复制g2052字g12538串str3g1055后
C) 将字g12538串str2复制g2052字g12538串str1中,g1889将字g12538串str3连接g2052字g12538串str1g1055后
D) 将字g12538串str2连接g2052字g12538串str1g1055后,g1889将字g12538串str1复制g2052字g12538串str3g1055中
g1120、g3647g12366题
1,g5062g11705s1,s2,g2656s3是g989个有足够元素个数的字g12538串数组,利用标准函数g5194借助g1122s3,
第二部分 C语言程序设计同步训练
·189·
·189·
可以交换s1g2656s2中的字g12538串;实g10628这一交换过程的语句是 。
2,g5062g11705 s1,s2 g2656 s3 是g989个足够元素个数的字g12538串变量,其值分g2047是"aaa","bbbb"g2656
"ccccc",执g15904语句strcat(strcpy(s2,s3),s1);后,s1,s2g2656s3的值分g2047是 。
3,g5062g11705s1g2656s2是g1016个字g12538串变量,要g8726g7186示g17767出s1,s2中较g3835的那个字g12538串,g14521相等,g1016个g18129g17767出;利用标准函数实g10628这一g17767出过程的语句是 。
4,执g15904语句g5219g2027
chat str1[ ]="ABCD",str2[10]="XYZxyz";
for(int i=0;str2[i]=str1[i];i++);
后,数组str2中的字g12538串是 。
g989、程g5219g3647g12366
1,下面程g5219的g2163能是将一个字g12538串str的g1881容颠倒过g7481,g16843将程g5219g15929g1817g4448整。
#include <string.h>
main()
{ int i,j,;
char str[]="0123456789";
for ( i=0,j=strlen(str) ; i<j; i++,j--)
{ k=str[i]; str[i]=str[j]; str[j]=k; }
printf("%s\n",str);
}
g3247、g19417g16847程g5219g1901出执g15904g13479果
1,
#include <stdio.h>
main()
{ char str[30];
gets(str);
printf("%s\n",str);
}
g17828g15904程g5219,g17767g1849:Fortran Language
g17767出g13479果:______________________。
2,
# include <stdio.h>
#include <string.h>
main()
{ char str[100]="How do you do";
strcpy (str,"is she");
printf ("%s\n",str);
}
g17767出g13479果:____________________。
C语言程序设计上机指导与同步训练
·190·
·190·
能力提高(B)
一、选择题
1,有下面的程g5219g8585
char a[3],b[]="china";
a=b;
printf("%s",a);
则( )。
A) g17828g15904后将g17767出ch B) g17828g15904后将g17767出Ch
C) g17828g15904后将g17767出chi D) 编g16805出错
2,下面描g17860正确的是( )。
A) g1016个字g12538串g6164包含的字g12538个数相g2528时,才能比较字g12538串
B) 字g12538个数多的字g12538串比字g12538个数少的字g12538串g3835
C) 字g12538串"STOP"与"STOP "相等
D) 字g12538串"hat"g4579g1122字g12538串"het"
3,下面程g5219g8585的g17828g15904g13479果是( )。
char c[]="\t\b\\\0will\n";
printf ( "%d",strlen (c));
A) 14 B) 3
C) 9 D)字g12538串中有g19762法字g12538,g17767出值不确定
4,下面程g5219g8585的g17828g15904g13479果是( )。(其中~表示g12366格)
char a[7]="abcdef",b[4]="ABC";
strcpy (a,b);
printf ("%c",a[5]);
A) ~ B) \0 C) e D) f
g1120、g3647g12366题
1,g5062g11705 s1,s2 g2656 s3 是g989个足够元素个数的字g12538串变量,其值分g2047是"abc","abf"g2656
"abcd",
执g15904语句strcat(s3,strcmp(s1,s2)>0? s1:s2);后,s1,s2g2656s3的值分g2047为 。
2,g1901出下面程g5219的g2163能是 。
#include <stdio.h>
main()
{ char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c') s[j++]=s[i]
puts(s);
}
第二部分 C语言程序设计同步训练
·191·
·191·
g989、g19417g16847程g5219g1901出执g15904g13479果
1,下面程g5219的g17828g15904g13479果是( )。
#include <stdio.h>
main()
{char a[]="morning",t;
int i,j=0;
for(i=1;i<7;i++) if(a[j]<a[i])j=i;
t=a[j];a[j]=a[7];
a[7]=a[j];puts(a);
}
2,当g17828g15904以下程g5219时,从键盘g17767g1849,
ab<CR>
c<CR>
dd<CR> (<cR>表示回车),则下面程g5219的g17828g15904g13479果是( )。
#include <stdio.h>
#define N 6
main()
{ char c[N];
int i=0;
for (;i<N;c[i]=getchar(),i++);
for(i=0;i<N;i++)putchar(c[i]);
}
3,下面程g5219的g17828g15904g13479果是( )。
#include <stdio.h>
#include <string.h>
main()
{ char str[100]="How do you do";
strcpy( str+strlen(str)/2,"es she");
printf ("%s\n",str);
}
g3247、编程题
g16786计一函数,将一个字g12538串中的g6164有g3835g1901字母转换g6116相应的g4579g1901字母。
链接二级考试
一、选择题
1,执g15904下面的程g5219g8585后,变量k中的值为( )。
A) 不定值 B) 33 C) 30 D) 10
int k=3,s[2];
s[0]=k; k=s[1]*10;
(2000年4月)
2,g16786有数组定义,char array [ ]="China"; 则数组 arrayg6164占的g12366间为( )。
A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节
C语言程序设计上机指导与同步训练
·192·
·192·
(2000年4月)
3,下g2027程g5219的g17767出g13479果是( )。
A) you&ne B) you C) me D) err
#include <string.h>
main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s \n",arr);
}
(2000年4月)
4,执g15904下g2027程g5219时g17767g1849:123<g12366格>456<g12366格>789<回车>,g17767出g13479果是( )。
A) 123,456,789 B) 1,456,789
C) 1,23,456,789 D) 1,23,456
#include <string.h>
main()
{ char s[100]; int c,i;
scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);
}
(2000年4月)
5,有如下程g5219
main()
{ int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++) n[i]=n[i]+1;
printf(“%d\n”,n[k]);
}
g16825程g5219的g17767出g13479果是( )。
A) 不确定的值 B) 2 C) 1 D) 0
(2000年9月)
6,有如下程g5219
main()
{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<i;j++) s+=a[i][j];
printf(“%d\n”,s);
}
g16825程g5219的g17767出g13479果是( )。
A) 18 B) 19 C) 20 D) 21
(2000年9月)
7,以下程g5219的g17767出g13479果是( )。
第二部分 C语言程序设计同步训练
·193·
·193·
A) 1,5,9 B) 1,4,7 C) 3,5,7 D)3,6,9
main()
{ 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]);
}
(2001年4月)
8,以下程g5219的g17767出g13479果是( )。
A) 18 B) 19 C) 20 D)21
main()
{ int a[3][3]={ {1,2},{3,4},{5,6} },i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++) s+=a[i][j];
printf(“%dn”,s);
}
(2001年4月)
9,以下程g5219的g17767出g13479果是( )。
A) ABCD B) ABCD C) EFG D) EFGH
FGH EFG JK g3 IJKL
KL IJ O M
main()
{ char w[][10]={,ABCD”,”EFGH”,”IJKL”,”MNOP”},k;
for(k=1;k<3;k++) printf(“%s\n”,w[k]);
}
(2001年4月)
10,假定int类型变量占用g1016个字节,其有定义:int x[10]={0,2,4};,则数组x在g1881g4396
中g6164占字节数是( )。
A) 3 B) 6 C) 10 D) 20
(2001年9月)
11,以下程g5219的g17767出g13479果是( )。
main()
{ int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 36
(2001年9月)
12,以下数组定义中不正确的是( )。
A) int a[2][3];
B) int b[][3]={0,1,2,3};
C) int c[100][100]={0};
C语言程序设计上机指导与同步训练
·194·
·194·
D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
(2001年9月)
13,以下程g5219的g17767出g13479果是( )。
main()
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf(“%d%d%d%d\n”,a[0][3],a[1][2],a[2][1],a[3][0]);
}
A) 0650 B) 1470 C) 5430 D) g17767出值不定
(2001年9月)
14,以下程g5219的g17767出g13479果是( )。
main()
{ char st[20]=,hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
(2001年9月)
15,以下程g5219g8585的g17767出g13479果是( )。
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
A) 9 B) 12 C) 13 D) 14
(2002年4月)
16,以下程g5219的g17767出g13479果是( )。
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
(2002年4月)
17,以下程g5219的g17767出g13479果是( )。
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A) 3 B) 4 C) 1 D) 9
(2002年4月)
18,有以下程g5219
main()
{
第二部分 C语言程序设计同步训练
·195·
·195·
aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++) s+=aa[i][1];
printf(“%d\n”,s);
}
程g5219g17828g15904后的g17767出g13479果是( )。
A) 11 B) 19 C) 13 D) 20
(2002年9月)
19,有以下程g5219
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i];i++;}
printf("%d\n",k);
}
执g15904后g17767出g13479果是( )。
A) 58 B) 56 C) 45 D) 24
(2003年4月)
20,以下能正确定义数组g5194正确赋初值的语句是( )。
A) int N=5,b[N][N]; B) int a[1][2]={{1},{3}};
C) int c[2][]={{1,2},{3,4}}; D) int d[3][2]={{1,2},{34}};
(2003年4月)
21,有以下程g5219
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d",m[k][i]); }
}
执g15904后g17767出g13479果是( )。
A) 4 5 6 B) 2 5 8 C) 3 6 9 D) 7 8 9
(2003年4月)
22,以下函数的g2163能是:通过键盘g17767g1849数据,为数组中的g6164有元素赋值。
#define N 10
void arrin(int x[N])
{ int i=0;
while(i<N)
scanf("%d",);
}
在下划g13459g3800应g3647g1849的是( )。
A) x+i B) &x[i+1] C) x+(i++) D) &x[++i]
(2003年4月)
C语言程序设计上机指导与同步训练
·196·
·196·
23,以下不能正确定义g1120g13512数组的选g20045是( )。
A) int a[2][2]={{1},{2}}; B) int a[][2]={1,2,3,4};
C) int a[2][2]={{1},2,3}; D) int a[2][]={{1,2},{3,4}};
(2003年9月)
24,以下能正确定义一g13512数组的选g20045是( )。
A) int num []; B) #define N 100
int num [N];
C) int num[0..100]; D) int N=100;
int num[N];
(2003年9月)
25,有以下程g5219
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程g5219的g17767出g13479果是( )。
A) 9,9 B) 8,9 C) 1,8 D) 9,8
(2002年9月)
一、g3647g12366题
1,下面fun函数的g2163能是将g5430参x的值转换g6116g1120g17839制数,g6164g5483g1120g17839制数的g8611一g1313数g6930
在一g13512数组中返回,g1120g17839制数的g7380低g1313g6930在下标为0的元素中,其g4439依g8504类g6524,g16843g3647g12366。
fun(int x,int b[])
{ int k=0,r;
do
{ r=x%___________;
b[k++]=r;
x/= ; } while(x); }
(1996年4月)
2,以下程g5219用g7481对从键盘g990g17767g1849的g1016个字g12538串g17839g15904比较,g9994后g17767出g1016个字g12538串中g12544一个不相g2528字g12538的ASCII码g1055差。例如:g17767g1849的g1016个字g12538串分g2047为abcdefg2656abceef,则g17767出为g161。g16843g3647g12366。
#include <stdio.h>
main()
{ char str[100],str2[100],c;
int i,s;
printf("\n input string 1:\n"); gest(str1);
printf("\n input string 2:\n"); gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!= ))
i++;
s= ;
第二部分 C语言程序设计同步训练
·197·
·197·
printf("%d\n",s);
}
(1998年9月)
3,g14521想通过以下g17767g1849语句g1363a中g4396g6930字g12538串1234,b中g4396g6930字g125385,则g17767g1849数据的g5430
式应g16825是________________。
char a[10],b;
scanf("a=%s b=%c",a,&b);
(1999年4月)
4,以下程g5219的g2163能是:从键盘g990g17767g1849g14521干个学g10995的g6116绩,g13491计计算出平均g6116绩,g5194g17767
出低g1122平均分的学g10995g6116绩,用g17767g1849g17139数g13479束g17767g1849,g16843g3647g12366。
main( )
{ float x[1000],sum=0.0,ave,a;
int n=0,i;
printf("Enter mark:\n");scanf("%f",&a);
while(a>=0.0&& n<1000)
{ sum+ ; x[n]= ;
n++; scanf("%f",&a);
}
ave= ;
printf("Output:\n");
printf("ave=%f\n",ave);
for (i=0;i<n;i++)
if printf (“%f\n”,x[i]);
}
(1999年9月)
5,下面程g5219的g2163能是将字g12538数组a中下标值为偶数的元素从g4579g2052g3835g6502g2027,其他元素g1313
置不变,g16843g3647g12366。
#include <stdio.h>
#include <string.h>
main()
{ char a[]="clanguage",t;
int i,j,k;
k=strlen(a);
for(i=0; i<=k-2; i+=2)
for(j=i+2; j<=k;______________)
if(_______________)
{ t=a[i]; a[i]=a[j]; a[j]=t; }
puts(a);
printf("\n");
}
(2000年4月)
6,下g2027程g5219g8585的g17767出g13479果是_________。
main()
C语言程序设计上机指导与同步训练
·198·
·198·
{ char b[]=”Hello,you”;
b[5]=0;
printf(“%s \n”,b );
}
(2001年4月)
7,g14521变量n中的值为24,则prnt函数共g17767出 g15904,g7380后一g15904有
个数。
void prnt(int n,int aa[ ])
{ int i;
for(i=1; i<=n;i++)
{ printf(“%6d”,aa[i]);
if( !(i%5) ) printf(“\n”);
}
printf(“\n”);
}
(2001年4月)
8,g14521g5062定义:int a[10],i;,以下fun函数的g2163能是:在g12544一个循环中给g208110个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在g12544g1120个循环中g1363a数组g208110个元素中的值对称折叠,变g61161、2、3、4、5、5、4、3、2、1,g16843g3647g12366。
fun( int a[ ])
{ int i;
for(i=1; i<=10; i++) =i;
for(i=0; i<5; i++) =a[i];
}
(2001年9月)
9,g14521有定义语句,char s[100],d[100]; int j=0,i=0;,且 s中g5062赋字g12538串,g16843g3647g12366以实g10628字g12538串拷贝。(注:不g5483g1363用逗号表达式)
while(s[i]){ d[j]=_______;j++;}
d[j]=0;
(2001年9月)
10,以下程g5219的g17767出g13479果是_________。
main()
{ char s[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);
}
(2002年4月)
11,g14521有以下程g5219
main()
{ int
a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
第二部分 C语言程序设计同步训练
·199·
·199·
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执g15904后g17767出的g13479果是__________。
(2003年4月)
12,函数YangHui的g2163能是把g7484g17757g989g16294g5430的数据赋给g1120g13512数组的下半g989g16294,g5430式如下
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
其g7512g6116g16280g5471是,
g125440g2027元素g2656主对g16294g13459g7092素均为1
其余元素为其左g990方g2656正g990方元素g1055g2656
数据的个数g8611g15904递增1
g16843将程g5219g15929g1817g4448整。
#defint N 6
void YangHui(int *[N][N])
{ int i,j;
x[0][0]=1
for(i=1;i<N;i++)
{ x[i][0]= =1;
for(j=1;j<i;j++)
x[i][j]= ;
}
}
(2003年4月)
13,以下程g5219的g17767出g13479果是 _________。
main()
{ int i,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
printf(“%d”,n[i]);
}
}
(2003年9月)
14,以下程g5219的g17767出g13479果是_________。
C语言程序设计上机指导与同步训练
·200·
·200·
main()
{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++) a[j][i]=0;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++) printf("&d ",a[i][j]);
printf("\n");
}
}
(2003年9月)
15,以下程g5219的g2163能是将字g12538串s中的数字字g12538g6930g1849d数组中,g7380后g17767出d中的字g12538串。
例如,g17767g1849字g12538串:abc123edf456gh,执g15904程g5219后g17767出:123456,g16843g3647g12366。
#include <stdio.h>
#include <ctype.h>
main()
{ char s[80],d[80]; int i,j;
gets(s);
for(i=j=0; s[i]!=‘\0’; i++)
if(_____________) { d[j]=s[i]; j++;}
d[j]=‘\0’;
puts(d);
}
(2003年9月)