f1=temp; }
printf(\}
运行结果:32.660259 8、求1!+2!+3!+4!+…+20! #include
float sum=0,f=1; for(i=1;i<=20;i++) {f= f*i;
sum= sum+f; }
printf(\}
运行结果:2.561327e+018
9、用牛顿迭代法求方程4x-8x+6x-12=0在1.5附近的根。 #include
{float x=1.5,x0,y,f1; do
{x0=x;
y=((4*x0-8)*x0+6)*x0-12;
f1=(12*x0-16)*x0+6; (f1是导数) x=x0-y/f1; }
while(fabs(x-x0)>=1e-6);
printf(\ } 运行结果:x= 2.00
10、编写程序,打印出以下图案。
* *** ***** ******* ***** ***
*
3
2
#include
void main( ) {int i,j,k;
for(i=1;i<=4;i++) /* 输出上面四行*号 */ {for(j=1;j<=4-i;j++) /* 输出*号前面的空格 */ printf(\
for(k=1;k<=2*i-1;k++)
printf(\ /* 输出每行*号 */
printf(\ /*输出每行*号后换行 */ }
for(i=1;i<=3;i++) /* 输出下面三行*号 */ {for(j=1;j<=i;j++)
printf(\ /* 输出*号前面的空格 */ for(k=1;k<=5-2*(i-1);k++)
printf(\ /* 输出每行*号 */ printf(\ /* 输出每行*号后换行 */ } }
第四章 数 组
一.选择题
1.以下能正确定义一维数组的选项是(B )。
A)int a[5]={0,1,2,3,4,5};
B)char a[ ]={0,1,2,3,4,5};
C)char a={'A','B','C'}; D)int a[5]=\
2.已有定义 int x[3][2];以下能正确引用数组元素的选项是( C )。
A) x[2][2] B) x[1][2] C) x[2][1] D) x[0][2]
3.有以下语句:int x;char c[10];,则正确的输入语句是( D )。 A) scanf(\
B) scanf(\
C) scanf(\ D) scanf(\4.以下叙述中错误的是( C )。
A) 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B) 数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出\下标越界\的出错信息 (VC:可以运行但会显示:遇到问题需要关闭)
D)可以通过赋初值的方式确定数组元素的个数
5.已有定义:char a[ ]=\,以下叙述中正确的是( C )。
A)数组a和b的长度相同 B)a数组长度小于b数组长度 C)a数组长度大于b数组长度 D)上述说法都不对 6.以下能正确定义一维数组的选项是( B )。
A)int num[]; C)int num[0..100]; 7.有以下程序
#include
B) #define N 100 int num[N]; D) int N=100; int num[N];
{char a[ ]={'a','b','c','d','e','f','g','h','\\0'}; int i,j;
i=sizeof(a); j=strlen(a); printf(\ }
程序运行后的输出结果是( D )。 A) 9,9 B) 8,9 C) 1,8 D) 9,8 8.下面程序的运行结果是( B )。
#include
{ char ch[7]={ \int i,s =0;
for(i=0;ch[i]>= '0'&&ch[i]< '9';i++) s=10*s+ch[i]- '0'; printf(\ }
A) 12ba56 B) 65 C) 6 9.有以下程序
#include
D) 62
int 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]; /*求每行第1列的数的和*/ printf(\}
程序运行后的输出结果是( B )。
A) 11 B) 19 C) 13 D) 20 10.以下不能正确定义二维数组的选项是( A )。. A)int a[2][]={{1,2},{3,4}}; B)int a[][2]={1,2,3,4}; C)int a[2][2]={{1},{2}}; D)int a[2][2]={{1},2,3}; 二.填空题
1.C语言规定数组名代表数组的 首地址 。
2.C语言中二维数组中元素排列的顺序是: 按行存放 。 3.字符数组中的一个元素存放 一个字符 。
4.C语言规定了“字符串结束标志”,以字 ?\\0? 来表示。
5.用\格式符输出字符串时,printf函数中的输出项是 字符数组名 ,而不是数组元素名。
6. 若有以下定义:
float a[10];
则a数组元素下标的上限是 9 ,下限是 0 。 7.下列程序运行结果是 6 。
#include
{ char str[12]={'s','t','r','i','n','g'}; printf(\ }
8.以下程序的功能是:使一个字符串按逆序存放,请填空。
#include
{ char m;char str[]=\?\\ for(i=0,j=strlen(str);i< j-1 ; i++,j--) { m=str[i];
str[i]= str[ j-1] ; /* str[i]与str[j-1]交换数据*/ str[j-1]=m; }
printf(\ }
9.写出下面程序的运行结果 62 。
#include
int a[2][3]={40,25,-8,6,62,39}; int i,j,max; max=a[0][0]; for(i=0;i<2;i++) for(j=0;j<3;j++) if(a[i][j]>max) max=a[i][j]; printf(\}
10.下面程序的功能是,将字符数组S2中的全部字符拷贝到字符数组S1中。不用strcpy函数。请填空
#include
char s1[80],s2[80]; int i;
scanf(\
for(i=0;i<=strlen(s2);i++) s1[i]=s2[i] ; printf(\复制字符串为:%s\\n\); }
三.改错题
1.下面程序求矩阵a的主对角线元素之和,请改错。
#include
int a[3][ ]={2,4,6,8,10,12,14,16,18}; int sum=0,i,j; for(i=0;i<3; i++ ) for(j=0; j<3 ;j++)
if(i==j) sum=sum+a[i][j] ; printf(\ }
错误语句:int a[3][ ]={2,4,6,8,10,12,14,16,18}; 正确语句:int a[ ][3 ]={2,4,6,8,10,12,14,16,18}; 2.有3个字符串,要求找出其中最大者,请改错。
#include
char string[20]; char str[3][20]; int i;
for (i=0;i<3;i++) gets (str[i]);
if (strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if (str[2]>string) string=str[2];
printf(\ }